( TCH | 2021. 03. 23., k – 17:20 )

Nem igazán értem, miért nem megy át neked az a gondolat, hogy a Rust bizonyos hibákat tud jobban kiszűrni, mint a C. Ha ezt megérted, akkor nem hoznád ide a java-t, amiben nyilvánvalóan nem lehet olyan bugot elkövetni, hogy a memóriát felülírod. Vagy ha esetleg valami nyakatekert módon mégis, akkor se az a jellemző.

Pedig átjött, a Java-t a trendek analógiája miatt hoztam ide; a világmegváltó új nyelvek kapcsán. Java-ban pedig nagyon is jellemző a memóriakezelési bug; kinyitom a keresőt, keresek Java-s segfault és memory leak eseteket, lesz bőven.

Már többször leírtam, de leírom még egyszer: a Rust egy biztonságosabb nyelv, mint a C, mert egy csomó hibalehetőségtől megvéd fordítási időben, és futási időben is több dolgot ellenőriz. Vagy inkább mondjuk úgy, hogy ellenőriz futási időben dolgokat. Mivel a C ugye nem ellenőriz semmit. Ennyi. Nem kell idehozni a java-t, hogy abban is lehet sechole-t csinálni, meg hogy az unsafe miatt meg lehet kerülni a védelmi mechanizmust, vagy hogy a Rust compilerben is lehet hiba, stb.stb. Nem arről van szó, hogy minden hibától megvéd. Hanem arról, hogy a hibák valószínűsége kisebb.

Ez rendben van. Az viszont nem lesz rendben, ha nekiállnak a többségre ráerőltetni az egészet. Nem lesz rendben, hogy a hátrányokat figyelmen kívül hagyva nekiállnak a fontos szoftvereket átírni ebbe. A Java-val és a C#-pal is mentek hasonló dolgok pár éve, a Java volt a legnépszerűbb nyelv, nem is egyszer.

Mindenki azt csinál a szabadidejében vagy épp munkaként, amit akar.

Amíg másnak nem okoz kárt, addig igen. Ha otthon maguknak átírják Rust-ba és lassabb lesz, vagy nem fog N architektúrán fordulni, az az ő dolguk. Ha utána ezt rákényszerítik Torvaldsra és az egész Linux világra, az már nem az ő dolguk.

Te komolyan nem látod a különbséget a között, hogy egy fv. simán visszatér egy bármilyen pointerrel, és talán, ha szerencséd van, akkor kapsz valami warningot, és a között, hogy visszajön egy optional, amit fordítási időben csekkolni kell, és ha esetleg elrontod a kódrészt, akkor is maximum egy prediktálható runtime error lesz belőle? Ne már...

Valamit félreértettél. Ez egy retorikai kérdés volt és rögtön meg is válaszoltam utána, hogy analizálja a kódot.

C++-ba igen, sőt egy csomó dolog hasonlóan megy, mint a Rustban. C-be is átviheted a koncepciót, de valami undormány szar kód lesz belőle, ami 3x akkora lesz, mint kéne neki. Valszeg makrókkal teletüzdelve.

Te itt valamit nagyon félreértettél. Én arról beszéltem, hogy ahogy a Rust fordításidőben analízis útján kiszúr egy csomó hibát és leállítja a fordítást, azt meg lehet csinálni C-ben is, hogy ha bekapcsolod a kódanalízist, akkor a C fordító ugyanezekre a hibákra kiszór egy csomó warningot. Vagy errort, ha azt kéred.

A dolog pofonegyszerű: csak az unsafe blokkokat kell jól átnézni ilyen jellegű hibák után kutatva, a maradék kód biztonságos.

Elméletileg, hacsak nem futsz bele egy compiler bugba.

Tényleg nem értem, hogy mi ellen érvelsz tulajdonképp.

A C-hating ellen és a mainstream erőltetése ellen, még mindig.

Vagy mit akarsz mondani pontosan?

Azt, hogy tökéletes védelem nem létezik, a hülyék ellen pláne nem, hát ne próbáljuk már meg megint kiirtani a megengedő nyelveket a hülyék miatt.

Én találtam benne egyet. De amúgy meg egy csomó más hiba is volt benne az elmúlt sok évben.

Ez nem érvényteleníti azt amit mondtam: ha egy kódban 20 év alatt egy hibát találnak, az jó kód, amit nem kell lecserélni.

Akkor azon lehet nem lesz Rust. A Rustnak nem biztos, hogy az a célja, hogy minden platformon lecserélje a C-t. Ha az elterjedtebb platformokon megteszi, akkor már egy hasznos dolog lehet.

De ha lecserélik a Linux kernel kódját Rust-ban írtra, akkor ezeken a platformokon többé Linux sem lesz.