Rust vzniknul přesně ze stejného důvodu, protože v mozille došly k podobným závěrům. Testování by to mohlo vyřešit, ale není obecně lepší a hlavně levnější problém zjistit co nejdříve? Místo testování ho poznat už při překladu? Ale souhlas, že roubovat tohle do C++ je nesmysl. Zpětná kompatibilita je u jakékoliv technologie zásadní věc. Věřím, že pokud to bude výhodné, tak nové projekty prostě vzniknou v Rustu a staré dožijí v C nebo C++.
[KubaV]
Ja se domnivam, ze jeste lepsi je, myslet na zpravu pameti uz pri navrhu, protoze muzete mit napsanou aplikaci v cem chcete, pokud toto zanedbate (obvzlast pri molochovitych projektech, jakym rendrovaci jadro webbrowseru dneska bezpochyby je), driv ci pozdeji Vas to dohoni a bude to delat potize a stat nejake naklady navic tak jako tak. A testovani by melo byt posledni instanci, ktera to zachyti pred finalnim vydanim, a melo by se jim v kazdem pripade projit - neverim tomu, ze kompilator bude schopen zachytit vsechno.
Pokud si v Google (nebo kdokoliv jiny) vsak mysli, ze to vyresi zmena jazyka z C++ na Rust, Go, C#, ci kterykoliv jiny, nebudu jim to v zadnem pripade vyvracet.
Jedine o co mi jde, at nechaji na pokoji standardy C++. Nechci se dozit toho, ze budu vyvijet v C++ a pak najednou zjistim, ze v podstate delam v Rustu. To je v podstate vse.
25. 9. 2021, 21:04 editováno autorem komentáře
Nevidím rozpor v dobré práci programátora a lepších kontrolách kompilátoru. Nikdo přece netvrdí, že rust vyřeší všechny problémy. Nebo jak konkrétně vadí borrow checker vývojářům, kromě toho, že se musí učit nové věci? Naopak mě přijde, že přemýšlení o práci s pamětí spíš vynucuje.
[KubaV]
Psal jste, ze je lepsi (levnejsi) nez testovani, kdyz chyby ve zprave pameti odhali uz prekladac. Je tvrdim, ze podle me je nejlepsi (a nejlevnejsi), kdyz se na zpravu pameti mysli uz od zacatku, behem celeho procesu vyvoje a rozhodne se nespoleha jen na techniky prekladace. Jinak receno, i kdyby byl nakrasne borrow checker v kompilatoru implementovan, rozhodne bych radne testovani uniku a chyb pameti nepodcenoval.
A co mi na tom vadi? Obecne - kdyz se na to ptate, vadi mi hned nekolik veci:
Jedna je, ze posledni dobou mi prijde, ze Rust fans se snazi vschno ohybat podle svych modelu a predstav a ty vsem potom vnucovat. Skoro to pripomina nabozensky tazeni: Stare svatyne rozvratit, vypalit, pozabijet kneze a upalit, ty kteri nehodlaji konvertovat. A na dobitem spalenisti pak postavit svuj vlastni kostel....
Druha vec - jak jsem psal vyse - nechci nekompatibilni zmeny ve standardech. Pracuji s C++ protoze ho mam rad takovy jaky je, a jsem velmi vdecny tvurcum C++ standardu, ze mysli na jejich plnou zpetnou kompatibilitu. A byl bych rad, aby to tak zustalo. Kdybych chtel neco jinyho, budu se venovat tomu.
Myslim, ze jsem toleratni v tom smyslu, ze necham na zvazeni kazdeho, co je pro nej a jeho projekt dobre. At laskave tohle pravo dopreji ostatni i dalsim, vcetne me a prestanou nam vnucovat co je "lepsi".
25. 9. 2021, 23:08 editováno autorem komentáře
[KubaV]
Klidne at se technologie vyvijeji, ale at se nestvou do kam je nikdo nezve. Nekteri lide, maji totiz neodbytny pocit, ze oni maji tu jedinou spravnou technologii a musi ji necpat kazdymu - at uz o to stoji ci ne.
A ano, samozrejme ze to beru hodne osobne. Vlastne zacinam byt na takove lidi dost alergicky a zacina mi byt z nich zle. A to neni jen Rust.
[KubaV]
Ale ja nemam nic proti vyvoji IT. Kdyz uz jsi tak skvele cetl ten muj prispevek, divim se ze muzes takovou hloupost vypustit z klavesnice. Me vadi neustale vmesovani a vnucovani nejruznejsi techno-it nadsencu - zde zrovna rust fans - tam kde o to nikdo nestoji a jejich temer sektarsky postoj.
To se dá snadno ignorovat. Na druhou stranu není na škodu trochu se s novými jazyky (Swift, Go, Rust, ...) seznámit. Člověk nemusí hned měnit kariéru, jednoduše to rozšíří rozhled a někdy v (blízké) budoucnosti se to může hodit.
Mně takhle okolo roku 2000 vnucovali Javu. Dlouho jsem odolával, a pak jsem najednou musel psát něco pro Lotus Notes, kde byla na výběr Java a LotusScript (přejmenovaný Visual Basic). A už byla motivace.
Na druhou stranu co? Jestli vám tolik sejde na tom, že prohlížeč musí být jedině v C++, tak si ho forkněte a dál si ho vyvíjejte podle svého. Máte na to právo. Upstream vývojářům připadá, že by chtěli se nemuset stále dokola zabývat jistými problémy a hledají na to řešení. Třeba se vám to nelíbí, třeba byste chtěl, aby dál ztráceli čas debugováním pádů a záplatováním zbytečných bezpečnostních děr, ale jenom vám pro radost to dělat nebudou.
Jj, ja si zvesa precitam aj prispevky vyssie aby som sa dostal do kontextu. Ono je to celkom dobrym zvykom sa spytat pri zapojeni do diskusie o com sa toci, alebo si moze jednoducho precitat komentare vyssie. Moze sa potom vyjadrit k veci.
Kontext vasej poznamky mi v suvislosti jak so spravickou, tak s diskusiou stale akosi unika...
[klokan]
Kde jsem presne napsal neco o tom, ze mam problem s tim ze prevedou ten zatracenej prolizet do jinyho jazyka? Umis doprcic cist? Celou dobu sakra pisu, ze by mi vadili pripadne zpetne nekomptibilni zmeny ve standardech jazyka C++. O tom co maji nebo nemaji delat vyvojari v Google se s svym projektem jsem ani nepiskl. V podstate me to ani nezajima.
A ta narazka "na duhou stranu" mela znamenat, ze to ze se tahle (a dalsi) diskuze takhle zvrtne si tak trochu muzou rust hateri sami. Trebaze v tom tentokrat byli aspon ze zacatku nevinne.
28. 9. 2021, 17:50 editováno autorem komentáře
Ono jde asi hlavně o zpětnou kompatibilitu. Nikdo skutečně nechce zažít situaci, že se aktualizuje překladač a najednou program nefunguje a musí se radikálně překopávat. Obětování zpětné kompatibility a nasazení nových konceptů do překladače před pár lety zkusili v Mozille, vydali to a nazvali to Rust :)
Mě naopak připadá, že C++ zkompiluje absolutně cokoli a pak to (většinou) dělá psí kusy při běhu.
Před lety jsem dělal v R&D v jisté velké, známé firmě, na statickém analyzátoru kódu pro C/C++ - něco jako Coverity, Fortify apod, ale byl to interní projekt určený pro vývojáře produktů té firmy. Doba strávená vývojem algoritmů na analyzování C++ programů mě naučila, že kód v C++ (psaný čistě, striktně v "moderním" C++ atd) může být podělaný způsobem, jaký bych si v živote vůbec nebyl dokázal představit. Zároveň mě to dovedlo k dojmu, že C++ je v podstatě nespasitelné - jakékoli vylepšení umožní se některým problémům lépe vyhýbat, ale ne je vyřešit. Nakonec totéž tvrdí i známý článek "Modern C++ Won't Save Us".
C je jiná story. Má sice řadu vlastností, které se zpětně ukázaly jako špatné (preprocesor, řetězce zakončené nulou...), ale je nutné si uvědomit, že jeho vznik byl podřízený dvěma cílům: aby bylo efektivní na architektuře PDP-11, a aby bylo snadné pro něj napsat překladač. Připadá mi, že dodnes má smysl, mj. protože je snadné vidět "zkrz" kód v C a představit si, co to generuje v assembleru. V některých případech je to důležité a nedocenitelné. V Rustu to alespoň já tak dobře nedokážu, je to přece jenom mnohem abstraktnější jazyk. Což je někdy obrovská výhoda a jindy zase nevýhoda.
Jsem osobně všemi deseti pro ruční správu paměti, když překladač zajistí bezpečnost, ale zrovna Rust má ten problém, že jakmile jsou v aplikaci složité hierarchie objektů na haldě, je alokace pomalá a musí se ladit konfigurace (alokátor). Na to jsem narazil u všech netriviálních projektů a samotný překladač Rustu je taky “potuněný”.
Nicméně na proškolení namyšlených javistů je Rust ideální (kolega tomu říká “buzerace překladačem”).
Není to spíš problém diskutérů na rootu nebo jinde? Tohle je poměrně snadno ověřitelná věc. Můžeme tady napadat způsob jakým k výsledku došli, ale pokud je v pořádku, tak není racionální důvod nesouhlasit s výsledky, tohle není politika. Bohužel ale diskuze na celém internetu prakticky o čemkoliv dávno podléhá hlavně dojmům a názorům.
No jasně, že přepsat do Rustu. Dnes existuje dogma, že napsat znovu browser je nemožné, což mi přijde jako dost bídná situace. Každopádně, kdyby se něco podobného Google odvážil udělat, rozhodně mi přijde lepší napsat to přímo v Rustu, než dělat z C++ Rust. A fakt mě štve, jak se "oxidace" Firefoxu zadrhla, protože jsem doufal, že jim to postupně vyjde.
Napsat nový prohlížeč jistě není nemožné, ale přepsat již existující do jiného jazyka by byla obludná práce, navíc to není samostatný projekt ale integrace několika různých projektů (interpret JS, interpret WASM, vykreslovací jádro HTML, CSS engine, grafický engine, 3D engine, implementace síťových protokolů, podpora všemožných kodeků a formátů atd), kde mnohý z nich je sám o sobě nesmírně komplexní software. Takže přepisovat to nikdo nebude, jako nikdo nebude přepisovat celý kernel Linux.