Einblicke in Scalas Vergangenheit, Gegenwart & Zukunft

Scala, quo vadis? – Interview mit Martin Odersky

Hartmut Schlosser
Scala-Chef Martin Odersky

Martin Odersky

Vor etwa 15 Jahren erblickte Scala das Licht der Welt. Gestartet als akademisches Nischenprojekt, hat sich die Programmiersprache in den letzten Jahren nicht nur stetig weiterentwickeln, sondern auch verbreitet. Mittlerweile ist die Sprache, die funktionale und objektorientierte Programmierung in sich vereint, im Mainstream angekommen. Im Zuge unserer Themenwoche zu Scala haben wir uns mit Chef-Entwickler Martin Odersky über den Status Quo der Sprache unterhalten. Im Gespräch gibt er einen interessanten Einblick in die Vergangenheit und Gegenwart von Scala und wagt einen Ausblick in die Zukunft.

Vergangenheit: „Zu Beginn wurde funktionales Programmieren noch als akademische Nische angesehen“

JAXenter: Die Arbeiten an Scala begannen 2001 im Labor für Programmiermethoden an der École polytechnique fédérale de Lausanne. Seitdem ist viel Zeit vergangen. Wenn du die Zeit einmal Revue passieren lässt: Was war Scala damals, was ist es heute? Wie stark hat sich Scala, so wie es heute ist, vom ursprünglichen Konzept und Erscheinungsbild entfernt?

Martin Odersky: Scala wurde entwickelt, um zu zeigen, dass eine Fusion von funktionaler und objektorientierter Programmierung möglich und zweckmäßig ist. Dies ist nach wie vor die primäre Rolle, die die Sprache einnimmt. Was sich mittlerweile aber geändert hat, ist die Einstellung zur funktionalen Programmierung. Zu Beginn wurde funktionales Programmieren noch als akademische Nische angesehen. Es war also schwierig, die Wichtigkeit funktionaler Programmierkonzepte in einer Mainstream-Sprache zu belegen. Da traditionelle objektorientierte Techniken mit XML-Bäumen nicht so gut klar kommen, wurden XML-Literale als spezifischer Use-Case von Scala definiert.

Heute hat sich das Blatt gewendet. Die funktionale Programmierung ist nicht mehr nur eine Nische, sondern ein respektiertes Feld, das in manchen Bereichen sogar als Mainstream angesehen wird. Und es ist manchmal sogar schwieriger, für ein gutes Objekt-orientiertes Design zu argumentieren.

Ich glaube, dass Implicits in Zukunft noch wichtiger werden.

Was die Spracheigenschaften angeht, so glaube ich, dass sich die größte Entwicklung im Bereich der implizierten Parametersuche abgespielt hat: Die sogenannten Implicits haben sich von einem ad-hoc-Feature zu einem Grundpfeiler der meisten Scala-Bibliotheken entwickelt. Ich glaube, dass sie in Zukunft sogar noch wichtiger werden.

JAXenter: Welches waren aus deiner Sicht die wichtigsten technologischen Meilensteine für die Sprache?

Martin Odersky: Das wichtigste Update war ohne Frage Scala 2.8, das 2010 erschien. In dieser Version gab es zum ersten Mal eine einheitliche Collections-Bibliothek, verfeinerte Regeln für die implizierte Auflösung und Typen-Inferenz. Ein weiterer, großer Schritt war Scala 2.10 mit dem die Meta-Programmierung in die Sprache eingeführt wurde.

Lesen Sie auch: Themen-Dossier Scala: Wie Sie Scala-Code effektiv in Java-Applikationen nutzen

JAXenter: Gab es solche Meilensteine auch in Bezug auf die Verbreitung der Sprache? Es hat sich ja recht schnell eine Community um Scala gebildet, und auch wichtige Projekte und Unternehmen haben Scala adoptiert. Welche Ereignisse haben, denkst du, zur Verbreitung der Sprache beigetragen?

Martin Odersky: Scala hat sich in den letzten acht Jahren stetig verbreitet, aber es gab natürlich einige Beschleuniger, die zu einer schnelleren Adoption in gewissen Bereichen führten. Als Twitter und andere neue Web-Unternehmen begannen, Scala zu verwenden, war dies die erste Beschleunigungsphase. Die zweite startete mit der großflächigen Verbreitung des reaktiven Programmierens, besonders im Bereich Akka und Play, die etwa 2011 begann. Die dritte Welle war schließlich der Erfolg von Scala in Big- und Fast-Data-Szenarios sowie Data Science, die von Spark, Kafka und vielen anderen Frameworks angetrieben wurde.

Gegenwart: „Scala 2.12 optimiert die Sprache für den Einsatz mit Java 8“

JAXenter: Um Scala hat sich mittlerweile ein ganzer Technologie-Stack gebildet, bestehend aus Akka, Play, Lagom, Spark und anderen Komponenten. Welche Rolle spielt dieser Stack – und damit das sogenannte reaktive Programmiermodell – für die Scala-Community bzw. das Unternehmen Lightbend?

Ein besonderer Fokus liegt bei Lightbend auf der reaktiven Programmierung und Microservices in verteilten Systemen

Martin Odersky: Im Kern dessen, was Lightbend tut, stehen die Entwicklung und die Unterstützung eben dieses Technologie-Stacks. Von Web-Frameworks bis hin zu Big-Data-Backends deckt der Stack alles ab, wobei ein besonderer Fokus auf der reaktiven Programmierung und Microservices in verteilten Systemen liegt. In diesen Bereichen sind diese Technologien sehr erfolgreich. Es gibt natürlich eine Menge anderer Frameworks, die man nutzen kann, aber ein großer Teil der Scala-Community nutzt genau diesen Stack.

JAXenter: Aktuell wird an der Version 2.12 von Scala gearbeitet – worum geht es bei dem Release hauptsächlich?

Martin Odersky: Version 2.12 von Scala dient in erster Linie dazu, die Sprache auf den Einsatz mit Java 8 hin zu optimieren. In Java 8 wurden Lambdas und Default Methods für Interfaces eingeführt. Beides sehr nützliche Dinge, um die Codegenerierung von Scala zu streamlinen und den Code selbst leichtgewichtiger zu machen.

Zukunft: „Wir hoffen, für Scala 3.0 die nötigen Technologien parat haben, um größere Veränderungen ohne allzu viele Brüche durchführen zu können“

JAXenter: Am Horizont steht nun die nächste große Major-Version: Scala 3.0. Kannst du uns eine kleine Vorschau geben, welche technologischen Neuerungen uns da erwarten?

Martin Odersky: Es ist noch zu früh, um darüber zu sprechen. Die nächste große Version wird Scala 2.13 sein und sich auf die Modernisierung und Modularisierung einiger Core Libraries konzentrieren.

Die funktionale Programmierung beginnt gerade erst, Boden in der Szene gut zu machen.

JAXenter: Wird Scala 3.0, wie es bei manchen Major-Versionen ja der Fall ist, ein Bruch mit der 2.x-Entwicklungslinie darstellen? Oder würdest du hier eher von Kontinuität und Evolution sprechen?

Martin Odersky: Scala war in den letzten fünf Jahren ziemlich stabil. Wir hoffen natürlich, dass wir die nötigen Technologien parat haben, um größere Veränderungen ohne allzu viele Brüche durchführen zu können, sobald Scala 3.0 erscheint. Derzeit arbeiten wir an ausgefeilten Rewrite-Tools, die es Programmcode erlauben, sich in die Richtung neuer Standards zu entwickeln. Wir planen außerdem, das plattformunabhängige Austauschformat TASTY zu verwenden, um binäre Kompatibilitätsprobleme durch automatische Code-Anpassungen auf spezifische Plattformen und Versionen zu verhindern.

JAXenter: Gibt es schon eine grobe Release-Roadmap für Scala 3.0?

Martin Odersky: Nein, noch nicht. Wir wollen bei der Entscheidung, was wir veröffentlichen flexibel bleiben, bevor wir entscheiden, wann wir es veröffentlichen.

Lesen Sie auch: Sechs Jahre Scala: Anwendungstipps, Ausblicke und Vorurteile

JAXenter: Scala ist ja explizit als Sprache konzipiert worden, die nicht (nur) in der Forschung, sondern (auch) in der Industrie Anwendung finden sollte. Ist die Schere zwischen Forschung und Industrie tatsächlich groß?

Martin Odersky: Ich kann nicht für andere Universitäten sprechen. Aber ich denke, dass die Studenten am EPFL wenig Probleme damit haben, interessante Jobs zu finden, in denen sie das anwenden können, was sie während ihrer Studienzeit gelernt haben. Scala hilft definitiv dabei, da auf dem Arbeitsmarkt eine gesunde Nachfrage besteht.

JAXenter: Was wäre denn zum Beispiel ein Forschungsbereich, der in den aktuellen Mainstream-Sprachen aus deiner Sicht noch unzureichend berücksichtigt wird?

Martin Odersky: Die funktionale Programmierung beginnt gerade erst, Boden in der Industrie gut zu machen. Ich denke, die Verfeinerung von Typen-Systemen, um immer präziser die Eigenschaften von Programmen zu beschreiben, ist einer der nächsten großen Entwicklungsschritte. Die Untersuchungen dafür dauern schon eine Weile an, es ist allerdings noch ein wenig mehr Fortschritt nötig, um das Ganze wirklich praktikabel zu machen. Doch ich sage voraus, dass dieser Forschungsgegenstand  in Zukunft Fahrt aufnehmen wird.

JAXenter: Vielen Dank für dieses Interview!

scala-iconDossier Scala
Diese Woche dreht sich auf JAXenter alles um die JVM-Sprache Scala. Entwickelt ab 2001 von Martin Odersky im Labor für Programmiermethoden an der École polytechnique fédérale de Lausanne, wurde die Sprache schnell als eines der heißestes Eisen im Java-Ökosystem gehandelt, mit dem Potenzial, die Innovationsflaute in der Java-Programmiersprache zu beenden. Der Hype ist mittlerweile abgeflaut, und spätestens seit der Integration von Lambda-Ausdrücken in Java 8, mit denen funktionale Programmierelemente auch in Java selbst Einzug hielten, stellt sich die Frage nach der Position Scalas im Raum der JVM-Sprachen neu.
Wir versuchen, hier auf JAXenter im Themen-Dossier „Scala“ eine Antwort zu geben. Nach unserer Einführung in die grundlegenden Konzepte von Scala ordnet Martin Odersky die Evolution Scalas für uns im Interview ein. Wir beleuchten den reaktiven Technologie-Stack um Scala in all seinen Facetten, und Scala-Entwickler berichten von ihren persönlichen Scala-Tops und Flops.

.

MartinMartin Odersky ist Informatiker, Entwickler der aktuellen Version von javac und Begründer der Programmiersprache Scala. Er promovierte 1989 an der ETH Zürich und lehrt heute als Professor für Programmiermethoden an der École polytechnique fédérale de Lausanne. Im Jahr 2011 gründete er das Unternehmen Lightbend (ehemals Typesafe).

Verwandte Themen:

Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Content-Stratege, IT-Redakteur, Storyteller – als Online-Teamlead bei S&S Media ist Hartmut Schlosser immer auf der Suche nach der Geschichte hinter der News. SEO und KPIs isst er zum Frühstück. Satt machen ihn kreative Aktionen, die den Leser bewegen. @hschlosser
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: