( renszarv | 2012. 05. 03., cs – 22:55 )

A hozzászólások nagy része nem a scala-ról szól, úgyhogy talán nem feleslegesen bővítem ezt a topicot, hisz lassan egy éve ebben fejlesztek.

A jó: a koncepció tetszik, egy erősen típusos nyelv, funkcionális ficsörökkel, minimalizálandó a kód hosszát. S mindez JVM-re, szóval nem kell vadászni a libeket, ha valamire szükség van, könnyen lehet használni bármit. Jó a REPL, nem sok kellene ahhoz, hogy konzolon alapból az fusson, ne a bash :)

A rossz: sok mindent újra írtak scala-ban, amit én megkérdőjelezhetőnek érzek. Pl, miért nem kompatibilis a scala-s List/Map/Set a java-sokkal, pláne, hogy van mutable és inmutable változat is belőle. Az sbt hasonlóan feleslegesnek tűnik. A nyelv nagyon flexibilis, sőt túlságosan is az. Pl, olyan triviális dolog, mint a package deklarációval és más osztályok beimportálásával is hosszasan el lehet szívni. Megfejelve az implicit függvényekkel, már ember legyen a talpán, aki első blikkre meg tudja mondani, pár sornyi scala kódról, hogy az mit csinál - s ha azt az 5 sort átmozgatja egy másik fájlba, akkor miért nem fordul le hirtelen. Másik nagy probléma, hogy az előre-hátra kompatibilitással nem nagyon foglalkoznak, ami 2.8-ban simán lefordult, az 2.9-ben nem biztos hogy működni fog. Bináris kompatibilitásról meg ne is álmodjunk.

A csúnya: az IDE. Az katasztrófa, még ha fejlődik is. Az inkrementális fordítás - az ami mentéskor elindul - 10-30 másodpercig lefagyasztja az eclipse-t, ráadásul rendszeresen kell clean buildet nyomni, mert annyira megbolondul... Auto-complete működik, ide-oda ugrálni lehet a kódban - kivéve, amikor úgy gondolja nem - viszont java-nál megszokott fejlettebb funkciók hiányoznak, mint pl osztály vagy mező átnevezés, vagy akár csak a call-hierarchy megmutatása.