S Rustem taktéž souvisí zprávička
"Ubuntu Sponsors Rust Clone Foundation"
https://www.youtube.com/watch?v=3RZ2VELN4Sk
Tlak na prosazování Rustu je krajně nepřirozený. Technické zlepšení se nezdá dostatečné, jestli vůbec nějaké. Bezpečnostní přínos se zdá pochybný. Vysvětluju si to buď zaslepeným fanatismem, nebo obchodními zájmy korporací za nevědomé pomoci užitečných idiotů v náš neprospěch. Podle mého názoru je Rust je trojský kůň s postraními cíli.
Všechny ty korporace, které z C a C++ přecházejí na Rust, nejsou asi úplně blbé
Myslím, že to je prostší - přecházíme na Rust protože přechází ostatní. Je to módní vlna.
Navíc, v době AI, je Rust jeden z nejvhodnějších jazyků pro AI assisted programming.
Na druhé straně existují jazyky s mnohem silnějšími typovými systémy, které by teoreticky měly být mnohem vhodnější. Třeba starší ATS (Applied Type System).
> Myslím, že to je prostší - přecházíme na Rust protože přechází ostatní. Je to módní vlna.
Těch možných směrů zase tolik není a potřeboval bych vědět, proč tedy nějaký jiný byl lepší. A odejít od C a C++ je reálná potřeba.
> Na druhé straně existují jazyky s mnohem silnějšími typovými systémy, které by teoreticky měly být mnohem vhodnější. Třeba starší ATS (Applied Type System).
Tomu se nebráním. Viděl jsem ale dost těch "geniálních" jazyků a žádný z nich se nechytil, Rust ano. Základní hypotéza tedy je, že je v něčem výrazně lepší.
V životě jsem o něm neslyšel, tudíž bratři jsou ještě horší markeťáci jak já.
Vypadá to zajímavě, tudíž díky za něj.
Takhle od stolu odhaduji, že problém nerozšíření ATS je v tom, že se o rozšíření moc nesnažili, vývoj je spíše pomalejší, a ta syntaxe je přesně o ten drobet za hranou než běžný vývojář dokáže snést.
BTW: Máš představu, jakej problém je vysvětlit běžnému vývojáři, k čemu je užitečné statické typování? Mě se to líbí. Ale já jsem programátorskej fanatik.
Myslím, že to je prostší - přecházíme na Rust protože přechází ostatní. Je to módní vlna.
Myslím, že je to prostší – ty firmy si prostě vyhodnotily, že Rust bude pro jejich projekty lepší.
Na druhé straně existují jazyky s mnohem silnějšími typovými systémy, které by teoreticky měly být mnohem vhodnější. Třeba starší ATS (Applied Type System).
Jenže pořád neprogramuje jen AI na zelené louce. Pořád tu máme starší projekty, pořád chceme, aby kódu rozuměli lidští vývojáři. Nevyhrávají jazyky, které jsou nejsilnější v jedné věci a slabé v ostatních. Vyhrávají ty, které jsou nadprůměrně silné v jedné či více oblastech a silné v ostatních.
Myslím, že je to prostší – ty firmy si prostě vyhodnotily, že Rust bude pro jejich projekty lepší.
IMHO to by šlo možná posoudit, kdyby nějaké projekty naprogramovaly ve více jazycích a pak to porovnaly. Jenže málokdo to skutečně udělá. Většina lidí a firem si jen řekne: "Tady používají tohle, jak použijeme také tohle." Nebo: "Tady píší, že tohle je dobré, tak použijeme tohle."
Bohužel málokdo udělá vlastní výzkum a třeba rok nebo dva zkouší a učí se alternativy.
> Na druhé straně existují jazyky s mnohem silnějšími typovými systémy, které by teoreticky měly být mnohem vhodnější. Třeba starší ATS (Applied Type System).
Neznám do detailů všechny tyto jazyky, takže střelba od pasu: Jde o přínosy vs. náklady. Rustu se podařilo udělat významný pokrok proti C v bezpečnosti. Z hlediska komfortu je to jak kdy – v některých věcech pomáhá (např. pattern matching), někdy kvůli borrow checkeru dává další nároky* (lifetime). Nepochybuji, že lze s kontrolou při překladu jít ještě dál, ale za cenu dalších nákladů. Spousta lidí vidí Rust jako sweet spot, kde přínosy jsou vyšší než náklady.
Druhá možnost je síťový efekt, díky kterému máme ekosystém i programátory. Ten může být způsoben z části praktičností pro jiné projekty (=> některé projekty by možná radši zvolily třeba i striktnější jazyk, ale kvůli ekosystému a dostupnosti programátorů dají přednost Rustu), částečně marketingem (používá to Mozilla => asi stojí za to se na to kouknout).
*) I když, u většího projektu to možná ve srovnání s Cčkem nebudou nároky navíc. IMHO dobrý Cčkový kód většího projektu by měl dokumentovat správu paměti, aspoň slovy, aby se v tom vývojáři neztratili. V Rustu to musí vývojář někdy psát formálním zápisem, který je na druhou stranu strojově dobře zpracovatelný.
Mimochodem, teď koukám na WIki stránku ATS:
pattern matching exhaustivity
as in case+, val+, type+, viewtype+, ...
with suffix '+' the compiler issues an error in case of non exhaustive alternatives
without suffix the compiler issues a warning
with '-' as suffix, avoids exhaustivity control
Typický jazyk pejska a kočičky. V praxi nikdy není potřeba non exhaustive pattern matching. Ale někdo si myslel, že to může potěšit a tak to tam dal. Footgun included, proč vlastně ne... A ta ML syntaxe se neuchytila, prostě o ni není moc zájem.
To s tím exhaustivity checkem jsem nepochopil. Znamená to třeba, že když u Option pořeším jenom Some<T>, je to v pohodě?
Móda podle mě pro preferenci syntaxe není dostatečné vysvětlení. Móda se mění, nicméně ML, LISP atd. nikdy masově neprorazily. A že se u toho LISPu a jeho dialektů opakovaně vývojáři snažili.
> Pokud se bavíme o frontendu, tam je to rozhodnutí výrobců browserů.
Představme si situaci, že třeba Ladybird přibalí cojávím, tcl. Vývojáři budou mít na výběr a) stejně poslat klientovi javascript, anebo b) vyžadovat jeden konkrétní prohlížeč, protože nikdo z ostatních se do toho nehrne.
To rozhodnutí je dané vlastně jenom setrvačností toho, že spousta věcí už v javascriptu je - tedy se ho nedá dost dobře zbavit - a když už v prohlížeči jeden jazyk je, experimentování s čímkoliv jiným bude mít jenom omezený dopad, ledaže by se prohlížeče shodly. Všichni se shodli na javascriptu; a pak až na wasm. Nevidím naději, že by tady prorazil nějaký lepší jazyk.
Tož against my better judgement:
Existence wasm tudíž není v rozporu.
Přínosné pro další diskusi by bylo zpochybnit některý fakt (se zdrojem!), nebo demonstrovat chybu v logice. Cokoliv dalšího budu mít na salámu...
Jazyk C se objevil v roce 1972, Rust v roce 2006. Obě ty informace o rozestupu vzniku jazyků nevypovídají samy o sobě o ničem. Nebo jinak – ten časový rozestup nevyvrací tvrzení, že když se objevila potřeba používat na webu jiný jazyk, tak se ta potřeba naplnila. A ne jednou – kromě wasm tu máme TypeScript a další jazyky, které ten problém řeší transpilací do JavaScriptu. Mimochodem, Internet Explorer kdysi podporoval i VBScript.
Wasm v současné podobě není ani zdaleka hotový. V různém stádiu rozpracovanosti je spousta návrhů, např. na Component Model, který by mohl umožnit integraci na Web API.
Wasm vskutku není jeden jazyk, naopak je to způsob, jak do prohlížeče dostat libovolné množství jazyků.
Aplikace v Rustu používají spoustu knihoven z C, a je to silná stránka Rustu. Stejně tak něco, co umožní v prohlížeči používat i jiné jazyky, než JavaScript, vůbec nemusí JavaScript 100% nahradit.
Takže existence JavaScriptu nebrání experimentování s jinými jazyky. Autoři prohlížečů se shodli na WebAssembly, což je způsob, jak umožnit v prohlížečích používat prakticky jakýkoli jazyk – pokud ho dokážete přeložit do wasm. Jiné jazyky se díky tomu v prohlížečích používají. Např. Figma, která má dnes téměř monopol jako nástroj pro UX designery, je napsaná v C++ a v prohlížeči běží ve WebAssembly. Nebo SurrealDB – dokumentová a grafová databáze napsaná v Rustu – může běžet díky WebAssembly přímo v prohlížeči (nepodporuje všechny storage, ale podporuje IndexedDB) nebo JavaScriptových/wasm enginech (třeba Deno).
> kromě wasm tu máme TypeScript a další jazyky, které ten problém řeší transpilací do JavaScriptu. Mimochodem, Internet Explorer kdysi podporoval i VBScript.
Jinými slovy všichni autoři náhrad javascriptů berou javascript jako fakt se kterým nepohnou, a ani Internet Explorer (v té době dominantní prohlížeč) nedokázal místo JS prosadit něco jiného.
Nějaké teoretické možná budoucí funkce wasm nejsou na újmu faktu, že v současnosti to wasm neumí, a u klienta není na výběr než použít javascript.
> Takže existence JavaScriptu nebrání experimentování s jinými jazyky.
Které prohlížeče experimentovaly se kterými jazyky? Zatím teda víme o VBScriptu, který se vlastně vůbec neuchytil. Podstatné slovo je asi to experimenty, protože přes veškerý bordel v javascriptu se v nice javascriptu nikdy neuchytilo nic lépe navrženého.
Stále ignorujete WebAssembly, které je implementované ve všech moderních prohlížečích a umožňuje spouštět kód napsaný v různých jazycích. Smysl použití jiných jazyků v prohlížečích není v tom zadupat JavaScript do země, aby se na webu úplně přestal používat. Smysl je v tom, aby bylo možné si vybrat.
Pardon, máte pravdu. Moje chyba. V Rustu použiji něco jako
match foo {
Jedna => ...
Dve => ...
Tri => ...
_ => panic!("Absurd")
}
typicky, když už jsem na &foo nějak matchoval, např. pomocí Jedna | Dve | Tri => ..., takže vím jistě, že další match musí uspět v jedné z prvních 3 větví, ale kompilátor Rustu tvrdí Non-exhaustive patterns.
A používám to k tomu, když všechny 3 případy mají nějakou společnou logiku - napřed použiji or pattern, provedu společnou logiku, a pak matchnu znovu na jednotlivé případy, abych provedl logiku specifickou pro jednotlivé případy.
> typicky, když už jsem na &foo nějak matchoval, např. pomocí Jedna | Dve | Tri => ..., takže vím jistě, že další match musí uspět v jedné z prvních 3 větví, ale kompilátor Rustu tvrdí Non-exhaustive patterns.
Mně tohle přijde jako špatný návrh. Potřeboval bych vidět reálný kód, kde tohle je dobrý nápad. Smysl enumů je právě v tom, že cíleně omezují možnosti vstupu na smysluplné hodnoty, to není switch z C nad charem nebo intem.
Jinak v Rustu bych určitě použil třeba unreachable!, ale nemělo by to být nutné. Mimochodem, příklad z https://doc.rust-lang.org/std/macro.unreachable.html je dost blbý (dá se řešit lepší definicí druhého matche), což je pro mě indikace, že by se tohle fakt stávat moc nemělo.
Nedavno jsem (diky synovi, ktery udelal install flashku) instaloval Ubuntu 26.nevimco; uz jsem si tak nejak zvykl na to, ze od urcite doby musim v Ubuntu chvili stravit ruznymi apt install, abych z toho udelal system, na ktery jsem zvykly. Aby tam byl treba ifconfig, prekladac, atd.;
Jenze to letosni Ubuntu je nejaky uplne novy level, spousta veci tam uz funguje i z ciste uzivatelskeho hlediska jinak, z meho pohledu ne-Unixove. A spousta veci nefunguje vubec, nebo nejak podivne blbe. Jako kdyby to cele uz delala generace lidi, kteri nezazili Unix takovy, jaky "byl" (a tim nemyslim zhuverilosti z cisteho System V, ale modernejsi, rekneme systemy z konce 90-ek a po mileniu, ktere uz zacinaly mit komfort typu historie v bashi misto prosteho ksh apod. ;).
Nepocitam do toho aktualni "knihovnove" nebo "zavislostni" peklo, ktere je snad horsi nez co je ve Windows a rozbijeni userlandu s uutils a podobnymi silenostmi, nebo ze velikost trivialnich programku; myslim skutecne takovou tu 'user experience' bez nejakeho zabredani do technikalii.
Zcela souhlasim.
Smer Ubuntu je proste takovej - ze konverguje k Windows - a ten zase k Ubuntu, coz je fer zminit.
A ja si taky nemuzu pomoct, jako Gentoo power user - je to sice "hezky" pro decka, ze to "works out of the box", ale.. je tu velke ALE ... si tam clovek pripada fakt jako ve vezeni. V kazde verzi v jinem.. a pak hleda znova a znova zpusoby, jak si to prizpusobit ke sve predstave. Neco, kvuli cemu jsme Win svet opousteli, az tam prestavalo stacit prepnout na "classic theme".
Bohuzel cely IT svet jde velice nestastnym smerem (cloudy, saas) a pocitace/systemy se degraduji na pouhe spoustece pred-pripravenych jizd tim jedinym spravnym smerem. A boze chran, ze udelate neco svobodne a jinak nez stado z okoli... to se vubec nesmi !