Daniel Gronau
[über mich]    [hobbys]    [programmierung]    [links]

[programmierung]

Seit meiner Uni-Zeit war Java die Sprache meiner Wahl, aber inzwischen bin ich "konvertiert". Hier nur ein paar kurze Gedanken zu "meinen" beiden Sprachen, mehr dazu in meinem Blog eSCALAtion.

[java]

Ich mochte Java! Wirklich! Was für eine gute Idee, die verworrene C++-Syntax auszumisten, Pointer abzuschaffen und einen Garbage Collector einzuführen! Dazu eingebaute Threads und das Versprechen, dass der Bytecode überall läuft. Und etwas später, als sich schon eine Menge Frust angesammelt hatte, Java 5, die Wiedergeburt: Generics, Annotations, Enums! Ja, und dann? Ein vorsichtiger Blick zur Konkurrenz zeigte, dass Java noch ein wichtiges Feature fehlt: Closures (inzwischen ist zwar endlich eine etwas abgespeckte Variante für Java 7 angekündigt, aber erst zum Ende 2010 hin, und glauben tue ich es erst, wenn ich es sehe). Und die Syntax, die zwar besser als die von C++ war, aber den großen Fehler hat, viel zu langatmig zu sein (was durch die Einführung von Generics noch viel deutlicher wurde). Leute rannten in Scharen zu den dynamischen Sprachen über. Sie waren bereit, auf die unbestreitbaren Vorteile eines statischen Typsystems zu verzichten, nur weil die Syntax (im Vergleich zu anderen modernen Sprachen) so furchtbar weitschweifig war! Ich möchte aber auf statische Typprüfung nicht verzichten. Nice sah eine zeitlang ganz verlockend aus, starb dann aber - woran eigentlich? Und dann war da noch diese seltsam aussehende Sprache Scala. Es ist zur Zeit die einzige Alternative zu Java, die nicht mit der JVM, den vorhandenen Bibliotheken und der statischen Typprüfung bricht. Ich denke, Scala ist die Zukunft der JVM.

[scala]

Wenn jemand auf dieser Welt JVM-kompatiblen Bytecode schreiben kann, dann ist das Prof. Martin Odersky: Er schrieb die Version des javac Compilers, die die Basis des heutigen Sun-Compilers bildet. Ihm verdanken wir auch die Generics in Java, denn er war die treibende Kraft hinter dem GenericJava-Projekt. Ich denke, niemand anders wäre besser geeignet, eine auf der JVM basierende und zu Java kompatible Sprache zu schaffen, und er hat es glücklicherweise getan. Ja, die Sprache sieht erst einmal seltsam aus, wenn man die C-basierte Syntax gewöhnt ist. Ja, die Sprache hat viele Ecken und Kanten, oft begründet durch die notwendige Kompatibilität zu Java. Trotzdem ist das Kunststück gelungen, nicht nur ein Feuerwerk von Ideen umzusetzen, sondern das alles zu einer tragfähigen Einheit zu verschmelzen. Feuerwerk von Ideen? Ja ich weiß, das klingt reißerisch, aber ich stehe dazu. Pattern Matching, Case-Klassen, Singleton-Objekte, strukturelle Typen, implizite Konvertierungen, implizite Parameter, Typ-Konstruktoren ... Hinter jedem dieser Schlagworte (und ich habe sicher einige vergessen) verbirgt sich ein Konzept, das durch kein Java-Konstrukt ersetzt werden kann. Hinzu kommt jede Menge "syntaktischer" Zucker wie Typinferenz (der Compiler finden in vielen Fällen den Typ selbst heraus), XML-Literale oder Pseudo-Operator-Überladungen. Und die "seltsame" Syntax erweist sich am Ende als die konsistentere. Um nur ein Beispiel zu nennen: Arrays und primitive Typen spielen keine Sonderrolle mehr, sondern fügen sich nahtlos in die Sprache ein. Ein letztes Plus ist, dass Scala zwar stabil ist, die Entwicklung der Sprache aber in einem (vor allem im Vergleich zu Java) rasanten Tempo vor sich geht. Scala 2.8 wird z.B. neben einer völlig überarbeiteten Collection-Bibliothek die langersehnten benannten und Default-Methodenargumente bringen.

[scala lernen]

Wer jetzt als Java-Programmierer nicht wenigstens ein wenig neugierig geworden ist, dem kann ich auch nicht mehr helfen. Für alle anderen ein paar Einstiegspunkte: Offizielle Scala-Seite, Scala-Forum, Sygneca Scala-Wiki, Planet Scala und das großartige interaktive Online-Tutorial Simply Scala.

Inzwischen gibt es auch die ersten Scala-Bücher. Als "Standardwerk" gilt Programming in Scala von Martin Odersky, Bill Venners und Lex Spoon, das ich als eBook gekauft habe und nur empfehlen kann. Ich besitze auch Beginning Scala, das eher für Einsteiger gedacht ist und voller Codeschnipsel zum Ausprobieren steckt. Noch nicht erschienen ist Programming Scala von Dean Wampler, aber die Online-Version sieht sehr vielversprechend aus. Programming Scala: Tackle Multi-Core Complexity on the Java Virtual Machine kenne ich nicht, aber es wird wohl das richtige Buch sein, wenn man massive Parallelverarbeitung mit Scala realisieren will. Inzwischen gibt es schon das erste deutschsprachige Buch, Praxisbuch Scala: Programmieren in Scala für Ein- und Umsteiger von Jan Kriesten.