Die heutige Sprache mag Sie überraschen. Sie kennen Scala nicht? Kein Problem. Mit einer Nutzung von nur knapp 3 % gemäss Statista ist Scala eine Nischensprache. Entwickelt wurde Scala in der Schweiz von Martin Odersky an der EPFL und 2004 erstmals vorgestellt. Scala ist eine objektorientierte aber vor allem auch funktionale Programmiersprache. Scala läuft auf drei verschiedenen Plattformen, resp. kann in drei verschiedene Ziele "kompiliert" werden: JVM, Native, JavaScript. Scala kann in Java Bytcode übersetzt werden und bietet daher vollständige Kompatibilität mit bestehenden Java-Bibliotheken. Mehr dazu bei den Stärken. Scala Native bietet die Möglichkeit, Scala direkt in binären Code zu kompilieren. Der Vorteil ist die bessere Performance. Der Nachteil (je nach Einsatz) ist die fehlende Interpolarität mit Java-Bibliotheken. Dafür kann Scala native einfach mit C- und C++ Bibliotheken interagieren. Scala.js schliesslich erzeugt aus dem Scala-Quellcode optimiertes JavaScript. Der Vorteil ist, je nach Sichtweise, dass man so typsicher und mit den Vorteilen der Scala-Sprache Programme für den Browser schreiben kann (oder natürlich auch für das Backend). Der Nachteil: Java-Bibliotheken können nicht verwendet werden und andere Scala-Bibliotheken auch nur, wenn diese Scala.js-Kompatibel sind. Meiner Meinung nach ist Scala.js mehr eine Spielerei. Das liegt vielleicht daran, dass ich JavaScript mag und den Vorteil nicht sehe, weshalb man sich die Mühe machen sollte in einer anderen Sprache zu schreiben für etwas, dass sich offenbar auch in JavaScript eignet. Persönlich würde ich es begrüssen, wenn Scala stattdessen WebAssembly unterstützen würde. Will man Scala im Browser nutzen, wäre dies meines Erachtens der sinnvollere Ansatz. Scala native kann je nach Einsatzzweck eine sinnvolle Alternative sein. Wobei bei den sinnvollen Einsatzzwecken die Abwägung gemacht werden sollte, ob dafür nicht Rust die bessere Alternative wäre. Obwohl nur sehr wenige Entwickler Scala nutzen, wird Scala für spezielle Zwecke von ein paar namhaften Firmen eingesetzt. Darunter bspw. X (vormals Twitter), LinkedIn, Netflix oder auch Airbnb.
Für was soll die Sprache verwendet werden?
Scala kann breit eingesetzt werden und eignet sich besonders für komplexe Business-Logik, verteilte asynchrone Systeme sowie in den Themenfelder von maschinellem Lernen (ML) und data processing. Es eignet sich auch gut um Libraries zu entwickeln, welche (auch) von anderen JVM-Sprachen wie Java oder Kotlin einfach genutzt werden können. Da Scala sehr performant ist, ist es bestens geeignet für die Lösung komplexer Berechnungen wie z.B. VaR oder Stresssimulationen im Finanzbereich.
Was macht die Sprache so stark?
Scala fasziniert durch die Kombination von funktionaler und objektorientierter Programmierung (auf der JVM) mit einem ausdrucksstarken Typsystem und ermöglicht knappen und verständlichen Code, wie es wohl nur in wenigen anderen Sprachen möglich ist. Dies zeigt sich besonders deutlich bei Case Classes, dem Pattern Matching (eine Art "Switch auf Stereoiden"), den impliziten Variablen oder den sog. "Extensions". Die Interoperabilität mit Java (in der JVM-Variante) ermöglicht das Profitieren von zahlreichen bekannten Java-Bibliotheken. Betreffend Objekt orientiert ist es reiner als Java, alles ist ein Objekt. Scala bietet zudem mächtige immutable und mutable Collections. Dazu gibt es potente Frameworks im Bereich von Multi-Threading und verteilten Anwendungen wie bspw. Akka.
Beispiele
Wie bereits gewohnt, unser Beispiel mit der String-Sortierung:
Das Thema mit der Grossschreibung kennen Sie ja bereits von den vorherigen Blogbeiträgen. Scala ist diesbezüglich nicht anders.Warum hat die Sprache Zukunft und warum soll ich sie lernen?
Scala ist auf der JVM in Sache funktionale Programmierung wohl unter den Top 2. Obwohl Objekt orientiere Programmierung seine Stärken hat, lassen sich gewisse Probleme eleganter und vor allem sicherer mit einem funktionalen Ansatz lösen. Scala kann beides. Die Möglichkeiten, komplexe Logiken mit wenig Zeilen Code abzubilden, machen Scala sehr wartungsfreundlich. Scala steht zudem in Konkurrenz zu Python in den Bereichen maschinelles Lernen und Data processing. Beides stark wachsende Themenfelder. Eine Nischensprache zu können hat zudem seinen Reiz für Entwickler. Sie sind gesucht und i.d.R. gut bezahlt.
Spoiler: Nächste Woche folgt ein letzter Artikel in dieser Serie mit Zusammenfassung und zusätzlichen Informationen sowie einer Auflösung der "Grossschreibung"-Problematik in den Code-Beispielen.
#scala #programming