Mne na Rustu (a taky Scale a Clojure) vadi jedina vec - zda se mi, ze nemaji jasno v tom, jestli chteji byt:
a) Experimentalni platformou pro vyvoj a testovani novych vlastnosti programovacich jazyku.
b) Prakticky pouzitelnym a tedy stabilnim jazykem, s rozumne navrzenou knihovnou.
Oboji totiz tak docela nejde. To prvni vyzaduje smirit se s tim, ze ten jazyk asi nebude uplne popularni. To druhe vyzaduje znacnou davku konzervativnosti, a v lidske povaze je vymyslet si inovace.
IMHO Python a Java spada jednoznacne do te kategorie B. Staci se podivat na jejich prvni implementaci, ta byla znacne konzervativni. I dalsi vlastnosti, ktere postupne prijimaly, byly vetsinou uz dostupne v jinych jazycich, a neslo o primocary proces.
Ja nemam nic proti pridavani novych vlastnosti, ale melo by se tak dit s rozvahou, a pokud jsou pochybnosti, tak to nedelat.
U Rustu a Scaly proste te rozvahy moc nevidim, oba jazyky zacaly s explicitnim cilem, ktery je uz z podstaty veci experimentem.
Na druhou stranu, treba D a Go IMHO take spadaji do te konzervativni kategorie.
Podle mne Rustu jde jednoznačně o 2, ale ten jazyk prostě vyžaduje hodně 1. Spoustu experimentů už mají za sebou, spoustu dalších ještě před sebou (memory model, non-lexical lifetimes, HKT atd.). Jak moc se ty nadcházející experimenty podepíší na kompatibilitě je otázka...
To uz myslim trochu prehanis. Python i Javu jsi zaradil mezi "stabilni" a to i presto, ze oba jazyky udelaly nekompatibilni zmeny (Python jich delal vic a prechod z Py2 na Py3 je jenom nejkriklavejsi pripad).
U Rustu si prave dovedu predstavit a myslim, ze to je i plan, ze se bude usazovat postupne a casem se bude menit minimalne. On je experimentalni v tom, ze se snazi jit cestami, ktere mainstream zatim nezkousel, to ale neznamena, ze "zustane experimentalni". No a knihovny se samozrejme vyvijeji za pochodu. Rust, jak to vypada, nepujde cestou "batteries included", ale bude se vyvijet cestou "de facto" standardnich knihoven. Jinymi slovy, Rust je zatim spis pro early adopters a Mozillu, ale casem se muze prosadit sireji a logicky se i diky tomu pripadne bude stabilizovat.
Mimochodem, asi jsi zaznamenal, ze u Scaly i Haskellu existuji snahy oslovit tu "stabilni" klientelu (Stackage + Stack, Typesafe-Lightbend), u Clojure nevim...
Clojure za posledních několik let snad žádné nekompatibilní změny v jazyce nepřineslo, ale ono je to dáno tím, že lispovské jazyky mají naprosto minimální syntaxi. Došlo k rozšíření knihoven, ale to není celkem problém. Zdá se, že do základů jazyka i do std. knihoven se už nikomu moc hrabat nechce, možná je už na některé změny i pozdě (ale to platí i pro Python a Javu, Java tím asi trpí víc, přece jen s námi už je nějaký ten pátek :-)
U Rustu to vypadá tak, že verzi 1.0 pojali skutečně jako verzi 1.0, tj. stabilizace jazyka i knihoven, což je fajn.
Nejde ani to o stabilitu samotneho jazyka, kazdy jazyk obcas takove zmeny dela, to je realita (treba v Pythonu 3 bylo nejvic problemu kvuli Unicode). Muzes se na to podivat i obracene, ty zmeny jsou potreba i u jazyku, ktere se snazi byt konzervativni.
Jde spis o to, aby se tam nepridala nejaka vlastnost, a pak se nezjistilo, ze jde opravdu o tezke slapnuti vedle (ktere bude pak slozite napravit bez zpetne kompatibility). Nemusi to nutne byt tak, ze ta samotna nova vlastnost bude spatna, ale treba bude spatna jeji interakce s ostatnimi vlastnostmi. Proto je lepsi soustredit se na vlastnosti, ktere uz jsou nejakou dobu vyzkousene.
Navic, zda se mi, ze lide spis prijimaji jazyk, ktery je uz castecne znamy, treba mnohem vic Scalu nez Haskell (i kdyz by si to zaslouzil IMHO vic). Ale Haskell byl explicitne experimentalni, a i pres jeho moznou stabilizaci do budoucna (ktera zatim nenastala) je stale dost velka kontroverze ohledne lineho vyhodnocovani.
Navic, zda se mi, ze lide spis prijimaji jazyk, ktery je uz castecne znamy, treba mnohem vic Scalu nez Haskell
Myslím, že Haskell je známý celkem dost - jako obskurní jazyk, v němž nejde programovat praktické aplikace (což je v podstatě zasloužené, neboť techniky, které se v Haskellu rozšířily, mají podstatné vady).
Rust ale experimentální není, prostě už funguje. Experimentální byl do verze 1.0. Zkus si přepsat něco z Pythonu do Rustu, zkompilovat a spustit to na 3 běžných typech OS. Zdroják je pěkný jako u toho Pythonu, ale neskutečně lépe se nasazuje, což platí třeba nejvíc pro Widle. Dal bych šanci i Swiftu, ale pro ně je bude každý další OS vždycky na vedlejší koleji. Dropbox už nějakou dobu nasazuje Rust a je to právě původě Python startup.
Jj souhlas, pokud je nějaká vlastnost (syntaktická konstrukce, Tebou zmíněné řetězcové literály atd.) v jazyku už dlouho a nehodí se, je asi skoro nemožné to změnit. Python si to kupodivu dovolil, ale například v Javě (kde mám par adeptů na změnu od základu :-) si to nikdo dovolit nemůže (a podle "rychlosti" vývoje ani nechce).
Ano jsou to dve nova klicova slova, strictfp asi nikomu nevadilo, ale enum uz par aplikaci rozbilo (jsme to resili pri prepnuti default Javy na 5 v par Apachich! projektech). Jasne, opravit to jde asi za pet minut vcetne spusteni IDE :-)
Trosku problematictejsi byly zmeny v Jave 7 v API. Vzpominam na upravy docela velkeho mnozstvi OS aplikaci kvuli zmenam v JDBC API (pridane hlavicky metod do interface).
Jako jo, nějaké source-level nekompatibilní zde byly, ale co si vzpomínám, nová klíčová slova se vnímají spíše jako chyba, než něco, co by se mělo opakovat.
JDBC je druhá věc, ale tady si myslím, že ve většině případů to nemusí být velký pain. Staré knihovny lze na nové Javě používat (ne však zkompilovat), dokud nepotřebuju používat přidané metody.
Pointa – Java je v tomto směru docela konzervativní. Další přidávání keywords bych teď nečekal, změny rozhraní spíše s omezeným dopadem. (Navíc od Javy 8 existují default methods, které by toto mohly vyřešit elegantněji.)
Oproti Pythonu má Java ještě jednu vyhodu: Když dojde k source-level incompatibility, dá se stejně stará binárka použít. To je podstatné třeba u knihoven.
V případě Scaly je to celkem jasné. Experimentální platforma to byla snad kdysi, ale posledních pár let je konzervativních, a stojí za tím firma Lightbend (dříve Typesafe), která asi nemá zájem na vyloženě experimentální platformě. Scala navíc má svoje pískoviště pro experimenty – Dotty. Experimenty dnes probíhají v Dotty a do Scaly se dostávají hotové věci.