Na, azért nem azt mondtam, hogy "a C nyelv szar", hanem azt, hogy ebben a tekintetben szar. :) Ezt az állításomat továbbra is fenntartom.Oké, akkor ebben a tekintetben faék és megengedő, nem pedig szar. És ezt én is fenntartom. :P
Nem az van, hogy az emberek szarnak bele mindenbe. Persze, ez is van. Hanem az, hogy programozóként nem tudsz minden esetre felkészülni. Vagy ha igen, akkor az elképesztően nagy meló lenne, senki se csinál ilyet, sokkal lassabban menne a fejlesztés. Tehát jobb, ha a fordító leellenőrzi a memóriahozzáféréseket. Ahogy fejlődnek a compilerek, egyre jobban ki tudják szűrni, hogy mik a felesleges ellenőrzések.Persze, hogy nem tudok mindenre felkészülni, de ez a Rust nyelv kitalálóira és a Rust fordító íróira és így végsősoron a Rust-ra is igaz, hogy nem tud mindenre felkészülni. Jó dolog, ha egy magasszintű nyelv ad bizonyos védelmi mechanizmusokat, de attól egy lowlevel nyelv nem lesz szar, mert az nem ad. Nem célja.
Ha C-ben programozok, mindig ott van az a rossz érzés, minden egyes pointer indexelésnél, derefnél, hogy "vajon valid lesz itt ez a hozzáférés?". Nyilván az esetek 99.99%-ban az. De nem tudod 100%-ra felvinni ezt egy bonyolultabb programnál, vagy tényleg 1000x lassabban fogsz haladni.Mérlegelni kell, hogy ha ennyire kétséges, akkor esetleg egy validálást berakni elé. De most nem ezért, vagy azért, de ha a
malloc() és tsai. NULL-t adott vissza, mert kifogytál a tárból, ott C++-ban mit fogsz kapni, ha az objektum konstruktora elszáll a memóriahiány miatt?Szerintem tök egyértelmű, hogy jobb, ha ott van egy automata ellenőrzés, ami tutira működik, vagy legalábbis kiszűri a hibák nagy részét. De ha nem is szűri ki compile-time, akkor runtime szűri ki. És nem vulnerability lesz belőle, hanem csak kilép a program (vagy esetleg exceptionnel kezeled le, és még tovább is tud menni).De ezt még mindig senki nem vitatta, hogy ez nem baj, hogy a nyelv levéd bizonyos dolgokat...
Egy tökúj projectben tutira nem használnék C-t. Nem azért, mert régi. Ez nekem se lenne elfogadható érv. Hanem mert van szinte minden szempontból jobb megoldás nála.Minden esetben? Akkor is, ha valami egzotikus chipen kell futnia, össz 4k RAM-mal? A Rust hány architektúrát és hány OS-t is támogat? A C mennyit? Van, ahol nem is tudod a Rust-ot választani. Sőt, semmit nem tudsz választani a C helyett, mert nincs. Max. a C++-t, de azzal meg megint ugyanott vagyunk, hogy ha semmit sem használtál a supersetből, akkor az mitől is C++? (Vagy választhatod az assembly-t is, de abban még annyi komfort se lesz, mint a faék C-ben és onnantól a kódod sem lesz hordozható.)