Sehr gute Einführung in Scala

Scala ist ein wichtiger Meilenstein bei der Fusion von funktionaler und objektorientierter Programmierung. Diese Fusion ist noch nicht abgeschlossen, sondern ein “Entdeckungs-Prozess”, der noch ein paar Jahre andauern wird.

Programming in Scala

Um ein objekt-funktionaler Entwickler zu werden benötigt man momentan noch sehr viel Hintergrundwissen, weil man die Techniken und Methoden beider Paradigmen beherrschen muss. In Zukunft wird sich da eine Zwischenmenge bilden, so das der Einstieg leichter werden wird.

Ich persönlich kannte die funktionale Sprache Haskell und die Objektorientierung mit Java und Groovy auf der JVM sehr gut, hatte also weitreichende Vorkenntnisse. Aber trotzdem war das Buch eine doch fordernde Lektüre in der zweiten Hälfte.

Aber die Hauptaufgabe des Buchs - die Sprache Scala zu erklären - erledigen die Autoren meisterhaft. Sämtliche (damals implementierten Feature) werden ausführlich und verständlich erklärt. Das Buch ist auch jetzt nach 4 Jahren immer noch die beste Erklärung von Scala. Kapitel 25 z. B. enthält schöne fortgeschrittene Beispiele für die Integration eigener Datenstrukturen in das Collection-Framework ab Scala 2.8. Man benötigt allerdings Kenntnisse aus den Bereichen FP, OO und Java. Es ist kein Einsteigerbuch, sondern richtet sich an erfahrene Entwickler.

Ich habe dieses Buch jetzt dreimal gelesen, 2009 die erste Edition, 2011 die zweite und jetzt 2015 noch einmal. Das Buch kann man nicht gewinnbringend in einem Rutsch so durchlesen. Man muss zwischendrin stoppen und die Sprache ausprobieren, Beispiele erfinden und Scala am besten in Projekten verwenden. Nach dem ersten Mal 2009 habe ich bei manchen Teilen zuerst noch gedacht, “das ist so zu kompliziert, das brauche ich doch gar nicht” oder “die Syntax ist zu weit von Java entfernt, das will dann wieder kein Programmierer lernen”. Aber im Laufe der Zeit merkt man, dass sich viele Dinge mit Scala Traits, Klassen und Objekten sehr gut modellieren lassen, das Scala eine sehr elegante Sprache ist und das auch Kovarianz und Kontravarianz für die Implementierung eigener Kollektionen wichtig sind.

Das Buch ist 2010 erschienen, aber momentan nur in kleinen Teilen veraltet. GUIs erstellt man heute mit JavaFX und nicht mit Swing, die Skala-Aktoren sind deprecated. Leider fehlen natürlich auch wichtige Neuentwicklungen, wie z. B. die parallelen Collections (ab 2.9), Futures und Promises (2.10), Reflektions (2.10) und Makros. Auch die Frameworks Akka, Play und Spark gab es damals noch nicht und tauchen dementsprechend auch nicht auf. Sie würden den Rahmen des Buches allerdings auch sprengen.

Also: der Einstieg in Scala ist einfach, das Vorankommen dann aber erfordert Übung und man muss sich das Buch immer wieder zur Hand nehmen und Beispiele programmieren.

Scala ist eine sehr reichhaltige Sprache und dieses Buch ist nach wie vor der beste Einstieg. Es ist nicht immer einfach, aber es lohnt sich.

  • Martin Odersky, Lex Spoon, Bill Venners
  • Programming in Scala
  • Artima
  • 2010

Siehe auch die Renzension bei Amazon.

Anmerkung: Dieser Artikel wurde im November 2016 an das neue Blog-Format angepasst.

 "Definitiver Rundumschlag um das Hadoop-Ökosystem" "k-d-trees with Apache Spark and Scala"