To je pravda, psal jsem to unáhleně, ale to porovnání v tom článku je hodně povrchní:
1. There are a number of kernels in Rust, but none were written with the goal of comparing with C as an implementation language.
2. There is no consensus about whether a systems programming language should have automatic garbage-collection. For example, Rust is partially motivated by the idea that garbage collection cannot be made efficient; instead, the Rust compiler analyzes the program to partially automate freeing of memory. This approach can make sharing data among multiple threads or closures awkward.
3. A language without a compiler as good as Go’s, or whose design was more removed from the underlying machine, might perform less well. On the other hand, a language such as Rust that avoids garbage collection might provide higher performance as well as safety, though perhaps at some cost in programmability for threaded code.
Ať si každý udělá vlastní závěr.
Při vší úctě, myslím, že tady na rootu není nikdo, kdo by měl třeba jen desetinové znalosti z pohledu vývojáře kernelu, jako ti, kdo tu práci psali (a to čtenářům poměrně značně fandím). Takže závěr si jisto jistě může udělat každý sám, ale otázkou zůstává, co bude obnášet.
Jedna neumím posoudit, ale mohl byste rozvést, jaký problém máte s dvojkou a trojkou?
Ty body samotné jsou jen výcuc z toho paperu, kde zmiňují Rust. Já jsem to právě nechtěl nějak extrémně analyzovat tak proto mám radši, když si závěr udělá každý sám, přečíst si to celé neuškodí. Na můj vkus ten paper obsahuje poměrně silné tvrzení typu "A language without a compiler as good as Go’s", atd...
Ano, vím že to jsou citace.
Zkusme se podívat na dvojku. První věta (There is no consensus about whether a systems programming language should have automatic garbage-collection.) je konstatování. Vzhledem k tomu, že existují systémové jazyky s GC i bez, tak se asi shodneme, že popisuje realitu. Následující věta (For example, Rust is partially motivated by the idea that garbage collection cannot be made efficient; instead, the Rust compiler analyzes the program to partially automate freeing of memory.) podle mne přesně vystihuje jeden z přístupů Rustu. A poslední věta (This approach can make sharing data among multiple threads or closures awkward.) jen konstatuje, že v případě kdy automatická detekce uvolnění paměti selže, dostáváme se do stejného problému jako v jazyce C a jeho řešení je "neobratné" (na rozdíl od automatického uvolnění paměti v jazycích s GC).
U trojky vás pravděpodně "namíchla" první věta :). Na druhou stranu, pokud uvážíme, že rozdíl ve výkonosti proti C je cca 5-15 %, přičemž velkou část spotřebují věci jako jiné volání funkcí (časově náročnější), kontroly mezí a GC, tak ten kompilátor asi opravdu není tak špatný. Pak už jen konstatují, že u jazyků, které jsou vzdáleny více od HW (třeba vše nad JVM) mohou být výsledky horší a naopak třeba u Rustu lepší. Poslední věta jen opakuje, že to zrychlení u Rustu je za cenu složitější práce programátora při využití více vláken.