I kdyz jako jazyk je to.. asi jako kdyz kocicka s pejskem varili dort. Na muj vkus trochu prekomplikovane
Ano, Scala je komplikovaná, ale nepřijde mi to jako nějaká splácanina - naopak mi přijde, že je tam jen pár konstrukcí, na nichž je vše postaveno (v tomto ohledu mi Scala přijde mnohem čistší než OCaml nebo GHC Haskell).
Tohle je takovy akademicky pohled. V praxi je myslim jedno, z kolika soucastek lze poskladat vlastnosti jazyka, daleko uzitecnejsi mi prijde jista "konzistence" vysledku (tedy ze to, co napisu, dela co bych asi tak cekal). Ale abych byl trochu konkretni - znas nejakou vlastnost programovacich jazyku, ktera je zrovna v mode a kterou se Oderski rozhodl do Scaly nepridat? Mluvim treba o XML syntaxi, makrech, async atd. Neni to jen problem z hlediska programovani, ale proste uz je IMHO cas na to, aby se Scala prestala prekotne vyvijet, pokud chce vyrust v pouzivany programovaci jazyk.
Jako hlavní problém ovšem vidím zabugovanost kompilátoru a určité problémy typového systému - oboje by mohl vyřešit DOT a jeho implementace dotty.
Vubec se tomu nedivim, kdyz se podivam, co vsechno za vlastnosti Oderski ve Scale chce mit. Ale IMHO ten paper jde presne smerem, kterym by uz Scala mela prestat jit - pokud bude Oderski povazovat Scalu za svoji experimentalni platformu pro vyzkum programovacich jazyku, nikdy se poradne neprosadi. Zase tam chteji pridat nejake silene zobecneni, ktere ovsem bude mit v praxi spoustu vyjimek (protoze nikdo jaksi poradne nepromyslel, jak to zkombinovat s temi ostatnimi vlastnostmi, je-li to vubec mozne), takze to realne programovani spis zamlzi nez zjednodusi.
Obecne, spojeni OOP a FP mi nepripada uplne stastne.
Jelikož objekty ve Scale mohou obsahovat typy, lze je chápat jako přirozené zobecnění modulů z ML (např. z OCamlu).
No ja mluvim spis (ale ne vylucne) o syntaxi. Scala se rozhodla k volani metody jak se zapisuje v OOP (instance.metoda(parametr)) jeste pridat system pouzivany ve funkcionalnich jazycich (metoda instance parametr). Vysledek je, ze kod je potencialne spatne citelny pro vsechny. Jeste je tam par jinych takovych pripadu.
Dalsi priklad jsou implicity, to jsem vubec nepochopil. Kdyby proste pridal typove tridy, mohlo to byt krasne ciste.