Scala neni skriptovaci jazyk a prevezme vladu nad svetem :-). http://www.scala-lang.org/
No, upřímně, taky jsem se chtěl peroti označení „skriptovací jazyk“ ohradit, ale fakt je, že Scalu lze pro skripty použít. Problém je, že je těžkopádnější než třeba Python – chvíli trvá, než program naběhne. Pak ale běží svižně, stejně rychle jako Java. Nedávno jsem zkoušel předělat prográmek (skript) v Pythonu, který běžel dokonce s JIT Psyco, do Scaly a dosáhl jsem bez velké práce skoro osminásobného zrychlení.
Co se týče té vlády nad světem, oproti nejčastěji používaným jazykům je vpředu o několik koňských délek, případně i o celé kolo a je pravda, že na JVM jí dodává šťávu. Nicméně její případné proniknutí do mainstreamu nebude snadné. Pár velkých firem typu Twitter nebo LinkedIn ještě neznamená nutně úspěch.
No bacha, u Scaly se můžeš snadno spálit na rekurzi. Myslím, že i koncové rekurze překládá do bytecode bez optimalizace a JVM to určitě neoptimalizuje. Vím, že je problém optimalizovat v Java bytecode koncové volání obecně, ale přepsat přímou rekurzi na pár ASTORE, POP a jedno GOTO (popř. GOTO_W) by problém být neměl. Možná jsem tehdy udělal jen chybu při testování, teď nemám po ruce Scala compiler a ReJava, píšu z mobilu.
Tak teď jsem se k tomu náhodou dostal a rád bych se opravil. Vím, že reaguji na už celkem starou diskusi, ale třeba na to někdo taky narazí...
Scala optimalizaci posledního volání umí, ale jsou tam určitá omezení (např. musí jít o přímou rekurzi). Ale je tu i dobrá zpráva pro ty, co si nejsou jisti, zda je jejich kód optimalizován: je možné říct kompilátoru, že to musí takto optimalizovat (nepodaří-li se, selže kompilace): http://www.scala-lang.org/api/current/scala/annotation/tailrec.html
Ten start bude asi podobný jako v Javě, Scala generuje slušný bytecode. Zcela určitě na tom bude co do celkového výkonu lépe než Groovy, Jython i JRuby. Konkrétně JRuby má dost těžký start, horší jsem dlouho neviděl, psal jsem tu o tom nedávno komentář u zprávičky o výkonové srovnání enginů pro Ruby.
BTW: Pokud se o jazyku mluví, že je těžkopádnější, představím si spíše přívětivost pro programátora.
A v cem je to lepsi nez Common Lisp? Z tohoto pohledu jsou nazory, ze nejaky jazyk prevezme vladu nad svetem jenom proto, ze ma dobre vlastnosti, dost naivni.
Jedina moznost, jak muze dnes programovaci jazyk dosahnout „vlady nad svetem“, je mit za sebou silnou instituci (jako v pripade Javy, C#, C++ apod.), nebo byt programovacim/skriptovacim jazykem vyznamneho projektu nebo oblasti (jako v pripade C slo o Unix, v pripade Perlu a Pythonu o Linuxove distribuce, v pripade PHP o programovani webu).
Kdyz uz se zminuji o Lispu a kdyz uz pisou o skriptovacich jazycich nad JVM, je skoda, ze nezminili Armed Bear Common Lisp.
No já osobně doufám, že žádný jazyk nepřevezme vládu nad světem a že vždycky bude existovat mezi programovacími jazyky silná konkurence. Scala má oproti Common Lispu výhodu ve standardnější, modernější syntaxi (žádné zbytečné závorky ani středníky) a v tom, že může využívat všech výhod JVM a její nasazování může být pozvolné. Programovacím jazykem několika významných projektů už je, ale počkal bych s nadšením, až se dostane v TIOBE alespoň do první dvacítky.
Jedina moznost, jak muze dnes programovaci jazyk dosahnout „vlady nad svetem“, je mit za sebou silnou instituci (jako v pripade Javy, C#, C++ apod.)
A prave proto ve Scale vidim cosi vyjimecneho :-). Java ma za sebou silnou instituci a Scala drzi celou Javu ,,v jedne dlani" (tzn. cokoliv je napsane v Jave, muzu pouzit ve Scale).