https://news.ycombinator.com/item?id=7824570
https://www.reddit.com/r/rust/comments/2og8xf/why_rust_started_rather_than_ada/
https://www.reddit.com/r/rust/comments/48vh1m/rust_vs_ada/
https://www.quora.com/Which-language-has-the-brightest-future-in-replacement-of-C-between-D-Go-and-Rust-And-Why/answer/Andrei-Alexandrescu
Protože Rust je typický zbytečný programovací jazyk, po kterém za pár let ani pes neštěkne. Byl vyvinut proto, že "chceme používat jen co si vymyslíme sami".
Možná by Mozilla udělala lépe, kdyby namísto vývoje krátkoštěkých operačních systémů a programovacích jazyků konečně udělala solidní browser.
Ada rozhodně Rust přežije. A proč nechce nikdo psát v Adě? Protože je v módním kursu nebezpečnost, tedy něco co je proti filozofii Ady. Browser nesmí nijak bránit vzdálenému webovému serveru dělat jakkoli nebezpečné akce, a pokud možno nesmí mít uživatel browseru kontrolu nad tím, že by detailně nastavil, které akce chce HTML5 a JavaScriptu povilit a které nikoli.
"Browser nesmí nijak bránit vzdálenému webovému serveru dělat jakkoli nebezpečné akce, a pokud možno nesmí mít uživatel browseru kontrolu nad tím, že by detailně nastavil, které akce chce HTML5 a JavaScriptu povilit a které nikoli."
jak to prosím souvisí s programovacím jazykem? to že nějací autoři browseru (většina je zmatlaná v C++ ne?) neumí do GUI přidat dialog s nastavením, je problém v designu aplikace a zvolený jazyk tomu nemůže nijak pomoci ani uškodit.
Souvisí to filozoficky. Pokud někdo myslí na bezpečnost, obvykle si vybírá jak programovací jazyky, tak architekturu programu, tak ovládání programu už od počátku s ohledem na bezpečnost.
Pokud někdo naopak dělá program jako trojského koně s co největšími schopnostmi co může remote server na vzdáleném klientovi provést - což je současný trend, pak si obvykle vybírá i podobné okolí a nástroje pro vývoj.
Dbát na bezpečnost je otravné.
Mimo téma tu (dle mého) "spravedlivě hřímáš" ty.
Ale zřejmě budeš chtít některou z těch svých ohnivých filipik doložit, pro mne začni třeba tím "Pokud někdo naopak dělá program jako trojského koně s co největšími schopnostmi co může remote server na vzdáleném klientovi provést - což je současný trend..."
Tak nejak mam z Tvych prispevku pocit, ze:
1. Nesnasis Mozillu z principu, zvlast po utoku na jejiho CEO (ktery take neschvaluju).
2. Mas ve zvyku delat zavery, ktere neodpovidaji rozsahu znalosti o konkretni situaci.
3. Branis se z principu zmene, protoze si myslis, ze vsechno uz tady bylo (a bylo to lepsi, nez co je ted).
Co se tyce Rustu:
Zbytecny jazyk - to by chtelo definovat. Rozhodne si docela dost lidi, kteri maji zazemi treba v Haskellu a zaroven by chteli nejaky predvidatelnejsi jazyk s praktickym zamerenim, Rust oblibilo. Ted je otazka, jestli se podari dobudovat infrastrukturu a udelat par velkych uspesnych referencnich aplikaci. Dokud nekdo nevymysli nejakou jeho nahradu, bude IMO Rust mit porad docela vyzivnou niku. A ne, Ada, Go, D ani Swift za jeho konkurenty nepovazuju.
Proč ne Ada? Je zavedená i praxí ověřená. Za menším rozšířením IMHO stojej dvě věci:
1. většina projektů ve skutečnosti nepotřebuje k vývoji tak buzerační jazyk, resp. architekti mají pocit, že nepotřebuje; trh ukazuje, že lidé se zkrátka obejdou bez takové robustnosti, jako vyžaduje pár klíčových projektů
2. Ada je velmi přísně hlídána, pokud jde o striktní dodržení standardu; k případným dodavatelům např. embedded kompilátorů vysílá jasný vzkaz: buď to implementujete přesně podle standardu, ani o chlup míň, ani o chlup víc (přičemž existuje, pokud vím, širší a užší varianta), s chováním přesně podle standardu, nebo to raději nedělejte vůbec, jinak s námi budete mít právní problémy
Za takové situace mi ale smysl Rustu také uniká. Budu-li chtít opravdu robustní nástroj, tak budu tak jako tak pokukovat po Adě. Nebudu-li, postačí mi staré, dobré C.
Mimochodem, také tu nějakou dobu vedle C koexistoval PL/M než zmizel. A taky Oberon, který se neujal. Přitom oba posledně jmenované byly navrhovány s podobnými cíli jako Rust, i když samozřejmě o 30-40 let dříve. Jenže to očividně nestačí. Jak už tu padlo, nepřinášejí takové benefity, aby se vyplatilo v nich vyvíjet na úkor C.
Ten "hype" okolo nových jazyků pochází obvykle od lidí, kteří jen neznají historii.
Java je multiplatformní a zastřešená silnými korporacemi. To je důvod její popularity.
C# je zastřešen silnou korporací. To je jediný důvod, proč se používá. Bez toho zmizí.
Objective C - dtto; ovšem v porovnání s výše jmenovanými je IMHO nejlépe navržen.
Python přinesl něco, co tu do té doby nebylo. Praktickým vývojářům přinesl spoustu věcí ze spíše akademického prostředí, navíc velmi stravitelnou formou. Nezopakuje-li se podobná situace, jako problém V2/V3, bude se používat i nadále a nadále poroste.
C/C++ tu prostě jsou. Silné, uspokojivě vyhovující pro "běžnou programátořinu", nepotřebující žádné korporátní podpory, etablované, prověřené, známé svými výhodami i neduhy, se silným ekosystémem i množstvím vývojářů. Není důvod od nich odcházet.
Fortran je specifický nástroj, prověřený, stáhl se na doménu, kterou umí nejlépe a v níž nemá konkurenta. Po faceliftech F90/95 a F20xx není důvod, proč od něho v zavedených oblastech odcházet - nabízí všechno, co člověk k práci, k níž byl určen, potřebuje, plus neuvěřitelné množství desítkami let odladěných knihoven. Přežije.
COBOL dtto.
Pokud by někdo chtěl konkurovat výše zmíněným, musel by přijít s nějakými naprosto killer features nebo mít silnou korporátní podporu. Jinak IMHO není šance. Všechno ostatní jsou spíše okrajové záležitosti a také jimi navždy zůstanou, pokud tedy dříve či později definitivně nezmizej. Včetně Ady, Lispu, Erlangu, Haskellu, Perlu, Clojure, Luy, Forthu, Smalltalku, Ruby, D, J, Go, Pascalu, Basicu, Rebolu a já nevím, čeho všeho ještě. Podstatné ale je, že tu jsou a pokud někdo má tak specifický problém, že se na něj některý z těch specifických nástrojů hodí, má ho už dávno k dispozici.
No a odpovedel sis sam. Jestlize existuji nejake pravni dusledky, kdyz si Adu trochu "priohnu" nebo "zapomenu", jenom uplny blazen by v dnesni "startupove" dobe "pokukoval" po takovem jazyku, kdyz si komunita muze udelat novy jazyk, nezatizeny rozhodnutimi nejake komise z 80. let zabetonovane mentalne v Algolu a Pascalu. Jestli Rust prezije nebo ne, neni uplne podstatne. Podstatne je, ze je vysledkem procesu vyvoje programovacich jazyku. Pokukovat po Ade proste uz nikdo nebude, jdeme dal. Cecko v jeho (retardovane) jednoduchosti fakt asi naplno nikdy nic nenahradi, ale to neznamena, ze neni duvod od nej odchazet. C++ resit snad ani nebudu.
Pokukoval bych po něm jakožto vývojář, který v něm chce dělat projekt. Ne jako vývojář, který chce psát překladač Ady pro nějakou novou platformu. Ona ta robustnost znamená i to, že taky samotný překladač funguje deterministicky a obsahuje minimum "implementation specific features", jimiž se standard C jen hemží. Takže chápu ty striktní požadavky. U kritického SW je to ale nezbytné. Pokud nejsou, řeší se to dodatečně různými MISRAmi, Sonarquby apod., ale ani s těmi to není žádná hitparáda robustnosti a bezpečnosti.
Pokukovat po Adě bude v nejbližší budoucnosti pořád někdo, přinejmenším kvůli tomu, že kritický SW několika významných amerických institucí a několika soukromých společností, zabývajících se vývojem řídícího SW pro jaderná zařízení, se v ní píše stále. A kód pro ně připravují i subdodavatelé. Ostatně Ada se u nás, pokud vím, vyučovala např. na jaderné fakultě ČVUT.
Otázkou je, proč bych měl pokukovat po Rustu, když mi nenabízí nic, co bych už v nějaké podobě někde neměl k dispozici nyní. Buď chci retardovaně jednoduché C, a tedy nechci Rust, nebo chci něco lepšího - a tedy se táži, proč bych to měl hledat zrovna v Rustu, když už to bylo realizováno a praxí ověřeno jinde a nejspíš lépe.
Na to, proč v Rustu nebudu a ani nemohu hledat nástroj k vývoji robustních, kritických aplikací, sis také odpověděl sám - standardu Ady nikdy nedosáhne a ani takové ambice nemá.
Prostě pro ten jazyk nevidím žádné uplatnění. Samozřejmě je mi to fuk, že má někdo touho ho vymýšlet. Považuji to za takovou mánii. Spoustu lidí možná taková věc už někdy v životě napadla - vytvořit svůj vlastní programovací jazyk, aby ji nakonec nikdy nerealizovali a věnovali se něčemu užitečnějšímu. Čím více jste za život různých jazyků potkali, tím více vám připadá jako volovina vymýšlení dalších, které dohromady nepřicházejí vůbec s ničím novým. Nemohu si pomoci. To je jako by někdo v současnosti pojal nápad postupně nahradit angličtinu nějakým newspeakem, "jinou" angličtinou, jen s fonetickým pravopisem, bez nepravidelných sloves a s několika náhodně vybranými gramatickými jevy navíc, vypůjčených tu z románských, tu ze slovanských jazyků a řádně očesaných.
Esperanto se neda s vyvojem programovacich jazyku vubec srovnavat, protoze esperanto je coby umely jazyk dost ojedinely. Programovaci jazyky sou vsechny umely. Ale to co melo Esperanto nahradit byly vsechno evolucni jazyky plny vyjimek porusujicich pravidla, ktery samy o sobe sou casto nesmyslne slozity. Esperanto nema zadny vyjimky a je mnohem jednodussi nez jakejkoli jinej jazyk.
Kdyby se Esperanto rozsirilo znamenalo by to jednodussi uceni pro vsechny. Jenze narozdil od programovacich jazyku o rozsireni jazyku, kterymi se mluvi nerozhodujou osobni preference, ale politika (lide se uci jazyk vzdy aktualne nejsilnejsi velmoci).
Jednoduchost jazyka je dosti relativní pojem – a to jak přirozeného, tak umělého, neboť každý z nás nějaký jazyk už zná a učení se novému jazyku je tedy více či méně proces porovnávání s tím, co známe a co se z toho dá zužitkovat. Takže esperanto může být velmi snadné pro rodilého mluvčího z románskojazyčného prostředí, ale pro Čecha či Chorvata bude nejspíš podstatně snadnější zvládnutí např. novoslovanštiny, což je také umělý jazyk, ovšem pro Angličana či Fina srovnatelně náročný ke studiu jako latina.
U přirozeného jazyka je navíc jedním z důležitým faktorů také schopnost jazyka vyjadřovat různé nuance, tedy velikosti slovní zásoby a bohatství synonym, což dělá z esperanta pro praktické využití dost nepoužitelný výtvor (narozdíl např. od zmíněné novoslovanštiny).
Pokud jde o rozšíření programovacího jazyka, tak ta "politika", či spíše ekonomika, v tom také hraje roli: spíše se naučím jazyk, jenž má široké uplatnění a rozšíření, nežli nějakou obskurnost.
Jinými slovy – proč se učit esperanto, když angličtina poslouží lépe, proč Rust, když tu máme C, C++, Javu...
Ona ta latina je hodne soucasti temer vsech evropskych jazyku, proto ji mozna esperanto trochu pripomina, presto ze ho vytvoril Polak :). Samozrejme blizsi jazyk se clovek nauzi snaz, ale tady se bavime o jazyku kterej mel spojit svet. Ta jednoduchost je dana hlavne jednoduchosti gramatickych pravidel.
Kdyby se svet programovacich jazyku vyvijel stejne jako prirozeny jazyky, tak furt pisem v x86 assebleru...
Osobne nevidim duvod proc pouzivat Rust, ale kdyby se kazdej ridil takovymhle pravidlem, tak by nikdy Python, Java a ani C nevzniklo...
Jak už jsem jinde v této diskusi zmínil – Python nabídl kombinaci vlastností, která tu nebyla a praxe ukázala, že je žádoucí, Java za sebou měla silné korporátní prostředí a C se rozšířilo podobným mechanismem, jako se rozšířila latina z Itálie po Římské říši – spolu s územním rozmachem impéria, v tomto případě spolu s Unixem.
To přirovnání s assemblerem není zrovna moc trefné. Přirozené jazyky mají tendence se spíše zjednodušovat, protože se vyvinuly dříve než písmo, tudíž se přizpůsobily k snadnému pamatování a ústnímu podání, musely být tedy hutnější a k tomu je třeba komplexnější gramatika.
V každém případě k rozšíření nějakého jazyka je nezbytná potřeba se tím jazykem dorozumívat. Tím jsou všelijaká esperanta předem odsouzena. Navíc přílišná jednoduchost gramatiky není žádoucí. Příkladem může být angličtina. Chybějící manévrovací prostor v gramatice se pak spontánně nahrazuje idiomy, což je mnohem horší řešení.
Mimochodem, i taková polština, maďarština, ale do jisté míry i moderní čeština a slovenština jsou svým způsobem umělé jazyky, jejichž podoba byla dána národními obrozenci (maďarskými, polskými, českými, slovenskými) v 19. století.
Jednoduchost gramatiky je nutnost pro co nejvetsi rozsireni. I proto je anglictina nejpouzivanejsi jazyk na svete.
Narodni obrozenci se pouze poukouseli odstranit vliv ostatnich jazyku, ale jejich vliv byl minimalni a casove omezeny. To je typickej priklad evoluce, kde ruzne mutace bojuji o nadvladu, neni v tom nic umelyho. Je az zpodivem jak se cestina rychle vyviji i dnes. Co se clovek ucil pred 20 lety uz ve spouste pripadu neplati. Podobnou funkci korektora jako meli obrozenci dnes zastava Ustav pro jazyk cesky, ale i ten podleha evolucnim vlivum (dnes hlavne internet). A i pres jeho snahu se porad mluvi v kazdy casti nasi maly zeme dost jinak.
Je to uplne jednoduche. Na rozdil od anglictiny Adu skoro nikdo nepouziva. Tudiz vyvstane-li potreba mit nejaky "podobny" jazyk a vytvori se novy, kolem ktereho bude dostatecne hlasita, produktivni komunita, uspeje spis ten novy jazyk, nez stavajici, lec prakticky mrtvy, i kdyby byl snad ten mrtvy v necem lepsi - o tom si klidne lze zalozit samostatne diskusni tema, mohlo by to byt zajimave. Mozilla ma s C++ zkusenosti a tudiz vi, proc ho opousti, Java je v tomto kontextu dost spatny priklad; kdyby v ni bylo mozne napsat nejaky rozumny browser, uz by ho zrejme nekdo napsal.
Tudiz Rust ma proste sanci uspet a je uplne jedno, jestli si nekdo mysli, ze "to tady vsechno uz bylo".
Mozillu naprosto chápu s C++. Ten jazyk se totiž nehodí vůbec na nic, jen poskytuje možnost obrovskému množství lidí si naivně myslet, že programují objektově. Ale je, bohužel, značně rozšířen. I mě živí. Ale sám bych from scratch nikdy žádný nový projekt v C++ nerozjížděl. Z mnoha důvodů si myslím, že C++ každý projekt spíš prodraží a zkomplikuje oproti jiným variantám.
V Javě by prohlížeč jistě napsat šel. Že ho nikdo doposud nenapsal neznamená, že to nejde. Ale stále dokolečka: asi zatím nikdo neměl potřebu psát v Javě prohlížeč. Ani Javu nepovažuji za kdo ví jaký zázrak. Co si budeme nalhávat, byla zastaralá už v době uvedení. Ale stál za ní Sun. C# totéž v bledě modrém.
Rust je něco podobného jako C# nebo Java ve své době, jen s tím rozdílem, že za ním žádná významná korporace nestojí. A popravdě nechápu to nutkání lidí vyvíjejících prohlížeče a vyhledávače místo prohlížečů a vyhledávačů vyvíjet jazyky či OS, jež se navíc vyznačují tím, že jsou dokonale nezajímavé, nic nového nepřinášející a ani řemeslným provedením nijak nevyčnívají.
To, že každý, kdo má do zadku díru, cítí potřebu si vymyslet vlastní jazyk, považuji spíš za důkaz toho, že na něco takového nemá.
Ja osobne potrebu pro vznik jazyka dostatecne ceckoidniho, ale zaroven s dobrym typovym systemem, ktery umozni vyrazne lepsi kontrolu, ale i "domysleni" programu behem kompilace chapu. Osobne se mi libi typovy system Haskellu, ale Haskell jako takovy je pro bezne programovani dost neprakticky (vyzaduje prilis velkou zmenu mysleni, to muze i odvadet pozornost od reseneho programu). Jestli ale tato ocekavani Rust splnuje jeste nevim - jeste jsem si Rust nevyzkousel, ted se seznamuji s Go. (A Go se mi nelibi - pripada mi to jako programovaci jazyk "pro masy" za cenu nutnosti cut&paste programovani. (Tomu se da vyhnout pomoci interface{} a reflection, ale tim se zbavuji vetsiny vyhod kompilovaneho jazyka).)
Jelikož jsem nikdy nestál před problémem napsat prohlížeč, a tedy jsem ten problém neanalyzoval, tak nedokážu jen tak plácnout, který prostředek bych k tomu použil. Ale např. Objective C si k tomuto účelu dovedu představit velmi dobře, ale třeba i nějaký Lisp nebo i tu zmíněnou Javu.
No a někdo před tím už stál a zjistil, že bude dobré udělat nový jazyk, např. Rust nebo třeba Swift (když už, tak si umím představit ten Swift namísto Obj-C). Stejně tak si to někdo mohl lajsnout v OCamlu, kapacitu na to má. (BTW: První kompiler pro Rust byl v OCamlu). Dříve před podobnými problémy zase stáli jiní lidé a vznikla Ada. Rust nemá nahradit Adu ani Go, ale možná C a mnohem více C++, kterému se komplexností blíží, ale je mnohem lépe poskládaný.
No ale tady nejde prece "jenom" o jazyk. Jde i o to, ze mam nejake pozadavky na kompilator, ze vubec potrebuju nejaky kompilator. Chci delat multiplatformni browser, cim ho zkompiluju, kdyz chci pouzit Adu? Je to FOSS, tudiz se da predpokladat, ze komercni kompilator nepripada v uvahu. Mam pouzit GNAT? Co kdyz v necem nevyhovuje? Mam browser, ktery chci prepsat a ted mam jeste GNAT, ktery musim modifikovat. Umim to, smim to udelat? Pokud me core vyvojari do GNAT nepusti, co mam udelat, fork? Kdyz zjistim, ze s kompilatorem nepohnu, mam ho znovy prepsat (s celym standardem, aby me nekdo nezaloval - viz vyse v diskusi?) Kazdopadne je legracni, ze tu u zeleneho stolu resime teoreticke duvody lidi, kteri (snad) vedeli, co delaji.
Mimochodem, vzpominam si na jediny vetsi program napsany v Ocaml, ktery znam - MLDonkey. Byla to lina lemra, coz neznamena, ze kazdy program v Ocaml je lina lemra, ale pravdepodobne to ukazuje na to, ze ten jazyk svadi k neoptimalnim konstrukcim.
> Byla to lina lemra, coz neznamena, ze kazdy program v Ocaml je lina lemra, ale pravdepodobne to ukazuje na to, ze ten jazyk svadi k neoptimalnim konstrukcim.
Aplikace, jenž provádějí symbolické výpočty, tam celkem lehce napíšete efektivnější než třeba nad JVM nebo CLR.
Máte nějaké konkrétní důvody k tvrzení, že C++ se nehodí vůbec na nic a každý projekt prodraží a zkomplikuje? Co tedy považujete za plnohodnotnou náhradu C++? Také příliš nechápu, proč někdo místo řešení nedostatků existujícího jazyka (v tomto případě asi C++) radši vynaloží mnohem víc práce na vymýšlení nového jazyka (Java, C#, Rust, Go, D).
Problém C++ka není, že by tam něco chybělo, ale že je tam toho hodně - že je to relativně komplikovaný jazyk, s komplikovaným prostředím (STL, Boost). Proto, aby se v něm psalo slušně, potřebujete hodně zkušeností.
Udělat jakékoliv trochu větší než malé změny v existujícím jazyku je hodně obtížné. Odebrání některých fíčur je téměř vyloučené - což je důvod pro pokus o vytvoření vlastního jazyka. Java, C# přidávaly funkce, které pro C++ nebyly dosažitelné (tak, aby byly jednoduše použitelné), a navíc v době, kdy vznikaly se jednalo o relativně jednoduché a bezpečné jazyky s rozumně velkými konzistentními knihovnami.
To máš trošku podobné, jako když pracuješ ve velké firmě, která už nefunguje efektivně, má složité procesy, vysokou pyramidu vedení apod. - taky jsou tady dvě možnosti, buď se to snažit změnit/vylepšit, nebo začít na zelené louce.
C++ je v tomto stavu - udržuje ho konsorcium, kde cílem lidí je pořád něco přidávat, protože "to je vidět", mít konference, prezentace, psát obrovské bichle o tom jazyku (mnohdy JEN o tom jazyku, to je děsivé).
A vite vubec proc se Java jmenuje, tak jak se jmenuje? Javanstina, je vice mene mrtvy jazyk, kterym uz se nemluvi. Na Jave a uvec v cele Indonesii meli problem, ze kazda vesnice mela vlastni jazyk a nebyli se schopni mezi sebou domluvit. Proto vznikla Indonezstina, jednoduchy umely jazyk, ktery absorboval vlastnosti ostatnich jazyku a ktery se rozsiril po celem state. Tento projekt byl narozdil od Esperanta uspesny.