Milyen előnye van a Rustnak a C-vel szemben?
C-ben (és C++-ban) jóval több múlik a programozó odafigyelésén és alaposságán. Ott ugyanis az erőforrásmenedzsment szinte teljes mértékben a programozó feladata. Aztán ebből adódik, hogy néha bizony memóriaszivárgás van, meg szegmentálási hibával elszáll a program. Ezeket (különösen a memóriaszivárgást) pedig nagyon nehéz felderíteni és javítani. Rustban ilyen nincs.
Viszont a Rustban megírt program potenciálisan lassabb. Ez egy asztali alkalmazásnál vélhetően irreleváns teljesítménykülönbséget jelentene. Mondjuk egy kernelnél én kissé szkeptikus vagyok ennek a létjogosultságában.
Rustban lehetséges a memóriaszivárgás [link]
a Rust legnagyobb előnye, hogy memory-safe (ettől még lehet unsafe az 'unsafe' blokkon belül)
olyanokra gondolj, mint az underflow, overflow stb. tök mind1, mekkora C guru ninja vagy, előbb-utóbb elkövetsz valami hibát
+ concurrency is jobb, kevesebb a szívás vele
a kernelt pedig nem írják újra, tudtommal csak adnak egy lehetőséget, hogy kipróbálják, hogyan válik be a rust, de olyan helyen, amit könnyen kilehet dobni utána, ha úgy adódik
C-t pedig csak azért nem cserélték le eddig, mert egyik nyelv se nyújt semmi jelentős előnyt a kernel fejlesztésben
"As Wedson Almeida Filho of Google's Android Team said at the time, "We feel that Rust is now ready to join C as a practical language for implementing the kernel. It can help us reduce the number of potential bugs and security vulnerabilities in privileged code while playing nicely with the core kernel and preserving its performance characteristics.""
G-ford: "Wedson Almeida Filho, a Google Android csapatának munkatársa akkoriban elmondta: "Úgy érezzük, hogy a Rust készen áll arra, hogy csatlakozzon a C-hez, mint gyakorlati nyelvhez a kernel megvalósításához. Segíthet csökkenteni a potenciális hibák és biztonsági rések számát a privilegizált kódban, miközben szépen játszik a mag kernellel, és megőrzi annak teljesítményjellemzőit.""
A legfőbb előnye, hogy menő, hipszter nyelv, így ha Rustacean vagy, akkor egyrészt egy menő közösséghez (más értelmezés szerint szektához) tartozhatsz, illetve ezzel revolverezhetsz mindenkit, aki öreg, 40 éves nyelveken például C++ dolgozik. Ez elegendő muníciót ad a fölös energiáid levezetésére is, mivel baromi sok munka, mire használható Rust fejlesztővé képzed magad. Munkát meg úgyse fogsz vele találni, mivel pár nagyon periférikus helyen kívül mindenhol C++-t használnak az erre kritikus helyeken. (Ha megnézed a népszerűségi indexeket, a C++ továbbra is top 5 nyelv mindenhol, a Rustra meg nincsenek szavak, milyen jelentéktelen az iparban.)
Ezzel együtt a Rust egy valóban remek nyelv, bár már itt is gyűlnek a viharfellegek. Böngészd át ezt. [link]
Egyelőre nem lehet eldönteni, hogy a Rustból Haskell lesz-e (amely egy szuper nyelv de senki nem használja pár fanatikuson kívül), vagy a következő C++. Az biztos, hogy jobb programozó leszel tőle – jobb C++ programozó is. (A C++-ban is meg lehet csinálni a varázslatok nagy részét amúgy, csak érteni kell hozzá.)
És közben jön majd a Carbon, amelynek szerintem több esélye van top 10 nyelvnek befutni, mint a Rustnak (attól függően persze, hogy mi lesz benne és hogyan).
Annyi az előnye, hogy rendelkezik szemétgyűjtővel (garbage collector) és jobban odafigyel azokra a dolgokra, amikre C-ben a programozónak kell nagyon figyelnie, ez a memóriabiztonság. Pl. buffer túlcsordulás, memóriaszivárgás, szegmentálási hiba.
Rust ugyanakkor valamivel lassabb is, bár általában ez nem számottevő.
C jelenleg még mindig a legjobb választás kernel fejlesztéshez. Gyors, alacsony szinten működik, hatékony és rugalmas.
Lehetne mondani rá, hogy biztonságtalan szar, mint ahogy előttem megtették, de akkor ennyi erőből az assemblyre is lehetne mobdani, ami nonszensz. A C a mai modern nyelvekhez képest alacsonyabb szintű ezért jobban hozzáfér a hardverhez, ennek viszont ára van: jobban kell figyelni a biztonságra. Ez alapvetően a programozó feladata és nem a fordítóprogramé.
Egy bölcs kernel fejlesztő egyszer azt mondta:
Gondoljatok a C -re úgy mint egy fancy, kényelmesebb köntösbe bújtatott assemblerre.
"Lehetne mondani rá, hogy biztonságtalan szar, mint ahogy előttem megtették, de akkor ennyi erőből az assemblyre is lehetne mondani, ami nonszensz."
Ó, jaj++!
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!