Zminil jste oboji - review i merge, pricemz ale merge je v zasade jen administrativni ukon, ktery jiste Linus i Greg zvladnou bez ohledu na pouzity programovaci jazyk :-) A pak tu mame jisty nenapadny tag.... Reviewed-by, a k vasemu uzasu ten review nemusi nutne delat ti vyse dva zmineni. Takze kdyz to shrneme, kdeze mate problem? :-) Ja zadny nevidim.
Ono pár takových pokusů bylo. Ale uchytil se až ten Rust.
Google mi ukazuje třeba https://github.com/checkedc/checkedc (Microsoft Research).
A pak jsou tu nástroje jako cppcheck nebo https://clang-analyzer.llvm.org/
Téměř Rust se syntaxí C++ je Safe C++. Odhlédněme od toho, že je to C++ a ne C, protože C je prakticky subset C++. Je to pochopitelně s C++ nekompatibilní, ale je to memory-safe a velká výhoda Safe C++ je interoperabilita, jde z toho přímo volat existující C++ kód, takže by to umožňovalo postupnout migraci s využitím existujícího kódu.
Lifetime objektů se řeší stejně jako v Rustu, používá to borrow checker. Problém je, že C++ steering committee to prakticky pohřbila a odmítla se tím zabývat, i když dostala funkční prototyp i s compilerem na stříbrném podnose. Místo toho tlačí steering committee profily, které ale neudělají z C++ memory-safe jazyk a momentálně jsou v takovém stavu, že se ani nedostanou do C++26.
Myslím, že přímo s C je to těžké, protože pole je tam v podstatě jen ukazatel bez délky. Takže, pokud ho předáte do funkce, tak délku musíte předat jako další argument. Novější nízkoúrovňové C-like přidaly slice, což je dvojice ukazatel na první prvek a délka. A tam už jde snáze kontrolovat přístup mimo jeho hranice.
Můj názor je, že zásadní je styl programování. To, jak se C často učí, je IMO špatně a vede to k těm problémům. Když člověk začne používat jiný styl, tak si hodně problémů ušetří. Doporučuji How I program C od Eskila Steenberga + vyhnout se práci s jednotlivými hodnotami a pracovat spíše s jejich skupinami. Jednak je to lepší pro výkon programu a druhak je to snazší. Protože, když mám sto hodnot a každou z nich mám uvolnit/deinicializovat zvlášť, tak to spíše pokazím, než když celou skupinu uvolním/deinicializuji jedním nebo dvěma příkazy. To je také důvod, proč nové nízkoúrovňové jazyky kladou důraz na vlastní alokátory.
jako jsou attributy, ktere resi kompiler, treba
struct foo {
char c;
int x;
} __attribute__((packed));
tak by bylo neco jako pro ukazatel predstavujici pole, treba v ramci komentare, aby to nezasahovalo do kodu, ale specialni kompiler by to bral v potaz.
/* compiler: array size N */
char* arr=malloc(N*sizeof(char));
Copak o to, on jako jazyk neni spatnej, pro dost aplikaci (pokud si clovek muze vybrat a stavi na zelene louce) je to nejlepsi prvni volba.
Jake to prinese/neprinese vyhody u existujicich projektu muze ukazat jen cas. Spousta lidi si predstavuje vyreseni nejcastejsich soucasnych problemu (memory unsafe), kritikove mohou celkem uspesne namitnout, ze memory safety neni silver bullet a misto nej proste prijdou jine (pro priklad nemusime chodit daleko, webservery vicemene jedou v memory safe jazycich, a pokud si clovek treba vzpomene po letech na Wordpress nebo Drupal a jejich pluginy, tak mu jeste ted vstavaji vlasy na hlave (pokud si je teda v mezicase vsechny nevytrhal).
Spis bych ale rekl, ze nejvetsim problemem kolem Rustu (ponechme technicke duvody stranou) jsou jeho prilis nadseni aktivisticti verozvesti, kteri nemaji problemy s hypovanim a ne vzdy korektni argumentaci ve prospech jejich milacka, to dokaze dost rychle otravit k novinkam i velmi otevreneho cloveka.
Tak zrovna Vas za takoveho aktivistu rozhodne neberu, to bychom si nerozumeli. :)
(a zrovna u Vas, nebo treba Kate tady v diskusi si myslim, ze prechod na Rust opravdu znamenal vyrazny posun v praci teamu. Kde si jisty nejsem, a rad bych videl nejake dlouhodobejsi objektivni zhodnoceni, je "prumerny korporatni team s Indickymi koreny")
BTW jako priklad - nekde v paralelnim vlakne treba padl argument stylu (mirne parafrazuji), ze "o tyhle chyby by bylo chyb mene, protoze v Rustu nemohou vzniknout".
Je to pravda (ze nemohou vzniknout), ale bylo by to asi stejne validni argument, jako rict, ze "elektromobil je bezpecnejsi, protoze u nej nevznika pozar vznicenim paliva" - mozna bezpecnejsi je, mozna neni, bude to chcit sledovat statistiky aby se vedelo urcite.
Já jsem rád za kritiku Rustu. Je dobré vědět, co se může podělat, a na co se dá spolehnout. Na druhou stranu vysvětlovat někomu výhody compile-time, když by stačilo říct: "mě se to tak nelíbí", nebo "já C++ znám, a přeučovat se nechci" (což jsou všechno validní argumenty) je únavné.
Zatím jsem si všiml, že Rust má svou vlastní učíčí křivku. Pokud jsi moc blbej/netrpělivej, tak tě Rust vyf*uje. Pokud to ten Ind vydrží, vyleze z něho obvykle kód, na který se dá alespoň koukat.
Druhý postřeh je, že se v Rustu dobře píše znovuopakovatelný kód. Ty typy tomu nějak dělají dobrý rámec. Mi přijde. Jak já jsem se natrápil se zabudováním Lui do Cčkového programu (relativně) - v Rustu to šlo raz dva (ale byli tam jiné potíže, většinou IQ charakteru :-) ).
Což je tak trochu lež, že jo?
Citujete mimo kontext, tá veta začína pred tým, čo ste vlepili.
Aby som zabránil tomu, že sa stratím v preklade, som si pre istotu vyhľadal, že... "lež je úmyslné tvrzení, které vědomě popírá pravdu, aby zmátlo nebo oklamalo ostatní."
Je na každom, aby si posúdil, či zámerom predrečníka bolo vedome poprieť pravdu a zmiasť ostatných. Ja osobne ale beriem do úvahy aj prvú časť vety, ktorá mi hovorí, že je ide o vyjadrenie osobného názoru.
Tým ako ste to vlepili to prezentujete ako samostatné tvrdenie. Avšak vzhľadom na to, že ide o osobný názor, sa na to nemôžete pozerať ako na samostatné tvrdenie. Tie dve časti vety sú neoddeliteľné.
No a čo sa obsahovej stránky týka, tak pokiaľ sa nemýlim, tieto diskusie aj fóra sú verejne dostupné a majú zachovanú históriu, tak aj na toto si každý môže urobiť svoj vlastný názor.
Edit: Pridaná citácia na začiatku...
24. 2. 2025, 16:06 editováno autorem komentáře
"Spis bych ale rekl, ze nejvetsim problemem kolem Rustu (ponechme technicke duvody stranou) jsou jeho prilis nadseni aktivisticti verozvesti, kteri nemaji problemy s hypovanim a ne vzdy korektni argumentaci ve prospech jejich milacka, to dokaze dost rychle otravit k novinkam i velmi otevreneho cloveka."
Tohle vnimam stejne. Ono je to asi ted duch doby, porad nekde nekoho k necemu nutit.