Imaginární literály stále nemá Rust ani (pokud vím) C. Je proto docela zajímavé, že mezi těmito jazyky je jako první dostalo Go, které je určené především pro webové aplikace a síťové služby, kde se výpočty s komplexními čísly používají přinejmenším vzácně. Tím líp pro Go. Rust momentálně pracuje na dokončení nekolika důležitých "velkých featur", ale tohle bych docela ocenil. V praxi yo samozřejmě nepůjde, dokud nebude typ complex standardně definovaný, zatím je jenom formou knihovny.
A proč by je měla Java mít ve standardu?
To je jedno z kouzel celého ekosystému, že užitečné (a i ty, echm, další) věci přicházejí z různých stran. Část z nich se později dostane do standardní knihovny nebo podnítí změnu v jazyce. A zrovna na nedostatek konceptů pro paralelizaci... tím u JVM jazyků trpět asi nebudeš.
A fakt chci vidět stop the world kvůli objektům, co šly odescapeanalyzovat. Vážně.
4. 7. 2019, 08:11 editováno autorem komentáře
Vaše odborné znalosti aby člověk opravdu pohledal. Korutiny s paralelizací nijak přímo nesouvisí. A když už jste zmínil tu paralelizaci, tak ta je v Javě vyloženě ubohá. Třída Thread to fakt nevytrhne. O jiných JVM jazycích, jako je Scala, se vyjadřovat nebudu, ty tolik neznám.
Ten stop world kvůli lokálním objektům na haldě se děje naprosto běžně.
Kazdy jazyk s tracing GC ma Stop The World. Aj Go. Rozdiel je aka dlha je ta pauza a ako casto.
V Jave nemusite pouzivat GC, su k dispozicii aj ine formy spravy pamate, napr. region based. Hard real time JVM ako JamaicaVM pouziva regiony, nativne kompilovana Java cez SubstrateVM pouziva hybrid regionov, separatnych heapov a jednoduchy generational GC. J9 ma napr Metronom GC s fixnymi quantami atd.
Nehovoriac o low pause GC ako Shenandoah, ZGC a gencon na J9.
GC se skutečně často bere jako výmluva, proč nedělat escape analýzu a všechno dávat na haldu, nejen v Javě. Defer Rust přímo v jazyku nemá, ale má knihovny, které ho implementují (https://docs.rs/scopeguard/1.0.0/scopeguard/). Není to žádná náhrada kontroly chyb (ta je sice v Go skutečně velmi slabá, ale C++ ani Rust tímto problémem netrpí), spíš to umožňuje snadno implementovat podobné konstrukce, jako je 'with' v Pythonu.
Ad korutiny: ty Simula skutečně měla, Modula2 tuším taky. Teď je dostává i Rust a C++, Go má gorutiny, které se dají používat, jako korutiny, od začátku. Šlo mi jenom o to, že z hlediska implementace překladače jsou korutiny složitá věc, kdežto podpora komplexních čísel a imaginárních literálů jsou triviální.