Ich lerne Scala – Tag 1

Dieser Artikel stammt aus meinen früheren Wordpress-Instanzen und steht hier aus Gründen der Nostalgie.

Man liest ja oft und viel vom Shooting-Star unter den JVM-Sprachen „Scala“. Scala ist eine Programmiersprache, die in sich das objektorientierte und das funktionale Programmierparadigma vereinigt und dabei stolz auf ihren extrem schlanken Sprachkern ist. Dabei ist Sprache statisch typisiert und nach Aussage der Entwickler meist genauso schnell wie Java. Klingt spannend, dachte ich mir. Also habe ich begonnen die Sprache zu lernen.

Erste Anlaufstelle war natürlich die englischsprachige 

Projektwebsite. Dort finden sich neben der Software auch zahlreiche Informationen für Lernende, einige Code-Beispiele und, wie sollte es bei einem freien Softwareprodukt anders sein, der Einstieg in die Community.

Der „Einstieg für Java-Entwickler„, den ich für mich gewählt habe, empfiehlt die Lektüre des Buches „Programming in Scala„, welches es in einer etwas veralteteten Variant (Es wird Scala 2.7 behandelt) beim Verlag kostenlos zum Lesen gibt. Für die aktuellere Variante zu Scala 2.8 kostet das PDF knapp $30. Da sich von Scala 2.7 zu 2.8 vor allem im Bereich Datenstrukturen viel getan hat, und weil ich damit das Projekt unterstütze, habe ich das komplett uneingeschränkte eBook-PDF gekauft.

Weiterhin wird auf einen FOSDEM Talk von Scala-Gründer Martin Odersky verwiesen. Diesen gibt es auf der Website zum Download als AVI oder von YouTube eingebunden hier.

In dem Video werden die Hauptfeatures von Scala kurz angerissen und ein Vergleich mit der Sprache Java gezogen. Besonders interessant fand ich, dass Scala die Funktionale Programmierung nicht zwangsläufig seiteneffektfrei umsetzt, sondern auch Seiteneffekte zulässt. Die Typinferenz von Scala ist beeindruckend und lässt mich weinen, wenn ich wieder zu Java zurück muss. 🙂 Weiterhin wird das Thema Skalierbarkeit – Scala steht für Scalable Language – recht ausführlich behandelt. Skalierbarkeit bedeutet bei Programmiersprachen, dass sie mit dem Einsatzweck mitwachsen und -schrumpfen. Insgesamt ist die gut 1 Stunde Video keine verschwendete Lebenszeit.

Das erste Kapitel des Buches entspricht inhaltlich im Wesentlichen dem FOSDEM-Vortrag. Der erste Scala-Code, den ich dann noch geschrieben habe war

  <td>
    <div class="scala codecolorer">
      <a href="http://scala-lang.org"><span class="kw1">def</span></a> factorial<span class="br0">&#40;</span> x <span class="sy0">:</span> BigInt<span class="br0">&#41;</span> <span class="sy0">:</span> BigInt <span class="sy0">=</span><br /> <br /> <a href="http://scala-lang.org"><span class="kw1">if</span></a> <span class="br0">&#40;</span> x <span class="sy0">==</span> <span class="nu0"></span> <span class="br0">&#41;</span> x <span class="sy0">=</span> <span class="nu0">1</span> <a href="http://scala-lang.org"><span class="kw1">else</span></a> x <span class="sy0">*</span> factorial<span class="br0">&#40;</span>x-<span class="nu0">1</span><span class="br0">&#41;</span>
    </div>
  </td>
</tr>

Diese einfache Funktion berechnet x! (Fakultät von x), also das Produkt der natürlichen Zahlen im Interval [0, x].

Das war mein erster Tag mit Scala. Ich werde das Gelernte in Blog-Posts dokumentieren, in der Hoffnung, dass es sich dann besser festsetzt. Falls die LeserIn auch davon profitiert, umso besser. Über Kommentare freue mich mich natürlich sehr.