Seite 1 von 1

Ein kurzer Ausflug in Scala

Verfasst: Montag 18. August 2008, 11:39
von Leonidas
Servus!

Bei all den neuen Handies die nun auf dem Markt kommen wie Openmoko, iPhone und die Android-Sachen habe ich festgestellt, dass es doch nett wäre, beizeiten mein etwas betagtes 6230 zu ersetzen. Da ich aber bisher von keinem der Telefone besonders begeistert bin, dachte ich an ein Nokia Eseries um dann festzustellen, dass ich die Funktionen die die Teile so teuer machen nicht brauche - vollständige Tastatur ist nett, aber ich brauch etwas handlicheres, Word-Dateien auf dem Handy öffnen ist auch nichts was ich vermissen würde. Also wohl wieder 6xxx-Serie.

Moment! Was ist mit der Programmierung von den Teilen, so für lange Winterabende?

Auf das S60-Python würde ich wohl nicht setzen, Maemo ist warscheinlich praktisch, aber die Teile sind einfach zu groß. Also bleibt Java via MIDP. Aber direkt Java zu nutzen ist ja witzlos, daher habe ich mich etwas umgesehen: Jython läuft auf der Micro Edition nicht, JRuby wohl auch nicht, zu Clojure fand ich keine Informationen, Nice ist zu unbedeutend also bleibt Scala. Scala lässt sich auf CLDC-Systemen installieren.

Zu Scala: Um den Appetit anzuregen nehmen wir mal Make Scala Your Language for 2008 wo sie Java-Libraries via Scalas REPL verwenden. Das ist schon mal nett und zugegebenermaßen recht angenehm, jedoch für Python-Programmierer eher der Standard. Um aber Scala in Aktion zu sehen würde ich Scala the statically typed dynamic language empfehlen, wo sie "Structural Subtyping" vorstellen. Für eine statisch typisierte Sprache ist das recht cool, aber die Syntax finde ich recht kompliziert (und naja, im Vergleich zu dynamisch typisierten Sprachen ist es doch etwas komplizierter). Wohingegen mir die Chaining-Syntax durchaus gut gefällt:

Code: Alles auswählen

scala> (1 to 10) filter ( x => x % 2 != 0 )
res0: Seq.Projection[Int] = RangeF(1, 3, 5, 7, 9)
Auch bietet Scala ihr Paketmanagement, wie easy_install, ASDF, Cabal, PLaneT; es nennt sich sbaz; nur dummerweise kann ich ``scala-cldc`` nicht installieren, weil danach die Scala-REPL nicht mehr funktioniert. Warum auch immer. Auch ist es unglücklich dass Java so wie es fast alle komplizierteren Konzepte seiner Vorgänger weggeworfen hat nun Scala kommt und ganz neue komplizierte Konzepte hinzufügt (wobei sich hier die Frage stellt inwieweit man sie nutzen/verstehen muss). Why not Scala? (Achtung, der Blog redirected zu einem anderen, in dem der Artikel aber nicht ist, also schnell Esc drücken) listet weitere Gründe warum Scala eben noch nicht das beste seit geschnittenem Brot ist.

Hat hier jemand Erfahrung mit Scala oder mag sich die Sprache ansehen um seine Meinung hier kundzugeben?

Verfasst: Montag 18. August 2008, 13:15
von sma
Ich würde sagen, Scala ist eine Programmiersprache für alle, denen Java (und auch C#) zu einfach sind :)

Die Sprache ist interessant, aber ist ihre zusätzliche Komplexität gegenüber Java gerechtfertigt? Wirkt sich das in der Produktivität aus? Ich habe da so meine Zweifel. Noch gibt es keine IDE, die einer Java-IDE gewachsen ist und damit verliert man IMHO viel. Ein neues Eclipse-Plugin soll zusammen mit Scala 2.7.2 noch diese oder nächste Woche erscheinen. Auch für Netbeans und Intellij IDEA wird es IDE-Support geben. Laut Javaposse ist aber noch keiner Bug-frei und produktionsreif. Das Plugin für Netbeans scheint bislang das beste zu sein, was Scala angeht. IDEA sieht die Stärke in der Kombination mit Java.

Daniel Spiewak hat übrigens ein ganz gutes sechsteiliges Tutorial über Scala geschrieben.

Auf Artima gibt es neben einem Einführungsartikel auch ein in der Entstehung befindliches Buch, welches recht gut sein soll. Recht gut - und umfangreich - ist aber eigentlich schon die mitgelieferte Dokumentation, somit habe ich bislang die Ausgabe von $60 gescheut.

Stefan

Verfasst: Donnerstag 20. November 2008, 08:20
von Leonidas
sma hat geschrieben:Ich würde sagen, Scala ist eine Programmiersprache für alle, denen Java (und auch C#) zu einfach sind :)
Mag sein, aber ich habe es jetzt wieder rausgepackt um darin Quicksort zu implementieren und muss sagen, dass es sehr viel Spaß gemacht hat, obwohl ich das meiste aus dem Internet zusammengeklaubt habe und im IRC blöde Fragen gestellt habe. Wobei man auch zugeben muss dass sowohl die Community im IRC als auch die Entwickler im Bugtracker sehr hilfreich waren. Aufgrund von Bugs in Scala und OpenJDK musste ich mir mein Scala selbst kopilieren, aber das ist nun sowohl auf Debian-Seite als auch auf Scala-Seite ausgebessert; die Korrekturen müssen es noch in ein Release schaffen.

Nach einiger Zeit kam dann QuickSort.scala raus. Natürlich nicht ganz so elegant wie die rekursive Lösung mit Pattern-Matching, aber ich hatte den Algorithmus in Pseudocode und Schleifenlos, deswegen habe ich auf Schleifen im Algorithmus selbst verzichtet.

Dafür habe ich mir einen Typen für die Natürlichen Zahlen mit Null definiert. Scala bietet zumindest in 2.7.x keine direkte Möglichkeit schnell Integer nachzubauen - Int ist final und entsprechende Zahlen-Traits gibt es erst ab Scala 2.8. Dafür gibt es den Ordered-Trait. Traits sind ein wenig wie Java-Interfaces aber können auch direkt die Implementierung enthalten. So reicht es, dass ich ``compare`` implementiere - die Vergleichsoperator-Funktionen < > sind im Trait definiert. Was in meinem Code auch noch vorkommt sind diese for-Expressions, die gut mit LCs in Python vergleichbar sind.

Re: Ein kurzer Ausflug in Scala

Verfasst: Donnerstag 20. November 2008, 10:37
von jens
Leonidas hat geschrieben:Auf das S60-Python würde ich wohl nicht setzen
Warum?

Re: Ein kurzer Ausflug in Scala

Verfasst: Donnerstag 20. November 2008, 12:33
von Leonidas
jens hat geschrieben:
Leonidas hat geschrieben:Auf das S60-Python würde ich wohl nicht setzen
Warum?
Weil es schon ewig hinterher ist, außerdem kann man wohl keine J2ME-Libs verwenden, was in Scala auf J2ME durchaus geht. Jython braucht hingegen minimal J2SE.

Außerdem kann man ja nicht überall Python nutzen, wird ja langweilig. Ich habe gestern in zwei Stunden so viel Scala gelernt, wie mein Python-Wissen sich das ganze letzte Jahr vermehrt hat. Aber eigentlich will ich in dem Thread Scala vorstellen und nicht Python für schlecht erklären 8)

Verfasst: Samstag 22. November 2008, 01:57
von Leonidas
sma hat geschrieben:Recht gut - und umfangreich - ist aber eigentlich schon die mitgelieferte Dokumentation
Ganz recht. Ich habe mir jetzt die 180 Seiten von "Scala by Example" ausgedruckt und einbinden lassen (insgesamt hat es mich 2€ gekostet, was mehr als güstig ist) und das resultierende Mini-Buch kann sich durchaus sehen lassen. Wenn man das durch hat, kann man entweder direkt losprogrammieren oder wenn einem noch etwas unklar ist die ähnlich umfangreiche Scala-Referenz durchsehen (die ebenso wie das Scala by Example-Buch vom Scala-Autor Martin Odersky geschrieben ist und topaktuell ist) - von dem her muss ich sagen dass es ganz, ganz selten ist dass man für so umfangreiche und interessante Projekte so erstaunlich vollständige und brauchbare Dokumentation bekommt. An dieser Stelle ist Scala Clojure momentan noch weit, weit vorraus.

Keine Frage, die Dokumentation rockt, auch ohne das Buch, das sicher ebenso großartig ist.

Verfasst: Samstag 22. November 2008, 09:49
von sma
Der Pragmatic Bookshelf hat sowohl für Clojure als auch für Scala ein Buch für März 2009 angekündigt. Beide sollen etwa 250 Seiten haben und sind damit viel dünner als der 770-Seiten-Schinken von Venners und Odersky, der leider immer noch nicht erhältlich ist.

Mein Eindruck bei Scala ist nach wie vor, dass noch mehr als bei Java eine IDE notwendig ist, um mit der Sprache effektiv zu arbeiten. Das Eclipse-Plugin habe ich längere Zeit nicht ausprobiert und laut JavaPosse sind die Plugins für Netbeans und IDEA beide immer noch nicht ganz fehlerfrei. Beide werden aber aktiv weiterentwickelt.

Übrigens, Clojure konnte nicht für JavaME (oder Android) eingesetzt werden, weil es keinen AOT-Compiler hatte, sondern beim Start den Quelltext einliest und dynamisch übersetzt. Das hat sich aber vor kurzem geändert. Bei Clojure sieht es IDE-mäßig allerdings eher düster aus. Es gibt etwas für Netbeans und ein Eclipse-Plugin würde gerade begonnen, doch ansonsten wird das Emacs-basierte Slime/Swink empfohlen, was sich jeder selbst zusammenstückeln darf und nicht so mein Geschmack ist - egal wie gut es wäre.

Stefan

Verfasst: Samstag 22. November 2008, 10:55
von Leonidas
sma hat geschrieben:Der Pragmatic Bookshelf hat sowohl für Clojure als auch für Scala ein Buch für März 2009 angekündigt. Beide sollen etwa 250 Seiten haben und sind damit viel dünner als der 770-Seiten-Schinken von Venners und Odersky, der leider immer noch nicht erhältlich ist.
So wie ich das verstehe kann man das Scala-Buch bei Artima wohl als Preview bekommen, momentan scheint Preview 6 aktuell zu sein.
sma hat geschrieben:Mein Eindruck bei Scala ist nach wie vor, dass noch mehr als bei Java eine IDE notwendig ist, um mit der Sprache effektiv zu arbeiten.
Warum? Weil man Java-Libs nutzen kann und diese unübersichtlich sind? Denn soweit ich es gesehen habe, war Scala bisher fast Boilerplate-los. Hast du da andere Erfahungen gemacht? Ich wäre an Beispielen interessiert.
sma hat geschrieben:Es gibt etwas für Netbeans und ein Eclipse-Plugin würde gerade begonnen, doch ansonsten wird das Emacs-basierte Slime/Swink empfohlen, was sich jeder selbst zusammenstückeln darf und nicht so mein Geschmack ist - egal wie gut es wäre.
Nun, Emacs ist traditionell *der* Lisp-Editor und SLIME *der* Common Lisp Mode. Allerdings gebe ich zu, dass ich ihn auch nicht nutze (also nur sporadisch und dann verzweifle ich oft an der Konfiguration), für Scheme habe ich DrScheme.