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í.
Tak nevím, jestli se mám smát nebo brečet.
Zpráva zmiňuje naprostý nesmysl (imaginární literály), ale několik lidí se toho chytne a začne spekulovat. Z nesmyslu vyvodí další nesmysly (co taky jiného), to vše za situace, kdy zde stále běží seriál, kde hned v prvním dílu jsou zmíněny datové typy zmíněného jazyka včetně typu complex. Nikoho ze slovutných pánů diskutérů, kteří tady často publikují své názory na různé jazyky a úroveň jejich tvůrců, nenapadne, že když v daném jazyce existuje od počátku datový typ complex, tak jaksi už od počátku musí existovat literál pro jeho zadání. Král je nahý, chce se mi vykřiknout.
Autorovi zprávičky bych doporučil příště přidat odkaz na originální zdroj.
https://tip.golang.org/doc/go1.13
Co se týče literálů, Go nyní umožňuje zadávat čísla binárně, oktalově a hexadecimálně. A toto nyní umožňuje i při zadání imaginárních čísel.