Blog

Ein Besuch in den Brutstätten von Scala: EPFL

Urs Peter

Aktualisiert Oktober 22, 2025
5 Minuten

Diese Woche habe ich die Scala-Hochburg EPFL besucht, um mich als 'offizieller' Scala-Trainer zertifizieren zu lassen. Es war ein beeindruckender Besuch, dessen Höhepunkte ich in diesem Blog verarbeitet habe.

Diese Woche verbrachte ich zwei Tage an der EPF in Lausanne (EPFL), wo ich ein Modul des Scala-Kurses von Martin Odersky unterrichtete, um mich als 'offizieller' Scala-Trainer zu zertifizieren. Mein Unterricht wurde von dem Meister selbst verfolgt und bewertet, was eine einzigartige Erfahrung war. Es hört sich definitiv beängstigender an, als es tatsächlich war. Nichtsdestotrotz war es eine einmalige Gelegenheit, die viel Spaß gemacht hat und glücklicherweise mit einem positiven Ergebnis endete. In den Mauern zu sein, in denen Scala zum ersten Mal das Licht der Welt erblickt hat, hatte mehr Einfluss auf mich, als ich anfangs dachte. Als ich erkannte, dass alle hochgradig modularen und erweiterbaren Bausteine von Scala in diesen Mauern erfunden wurden, begann ich zu begreifen, dass dies erst der Anfang war. Martin leitet einen großen Teil der Forschung zu neuen Funktionen für Scala, wo er die Möglichkeit hat, das Beste vom Besten auszuwählen und es in neue Versionen von Scala zu integrieren. Während des Gesprächs erfuhr ich, dass sich nur ein paar Blocks weiter die Forschungsgruppe befand, die Scala auf die .Net-Plattform portierte. Martins Assistent, Iulian Dragos, der ein anderes Modul des Scala-Kurses unterrichtete, schrieb seine Diplomarbeit u.a. über die @specialized-Annotation, die jetzt Teil von Scala 2.8 ist. Während die für 2.9 geplanten Parallelsammlungen bereits ein fortgeschrittenes Stadium erreicht haben, hörte ich ihn über Sprachvirtualisierung (Verwendung des Scala-Compilers zur Kompilierung in andere Sprachen), einen 'zertifizierten' Scala-Stack für Unternehmen, vergleichbar mit dem, was RedHat mit JBoss macht, um die Einführung für Unternehmen zu erleichtern, die Beta-Eclipse Scala IDE, die kurz vor der Veröffentlichung steht, und so weiter und so fort sprechen. MitMOEPFL Posieren mit Martin Odersky und den Schweizer Bergen, die die EPFL umgeben Am interessantesten fand ich als Berater jedoch, dass viele große Banken, vor allem in den USA und Europa, begonnen haben, Scala einzusetzen, bisher vor allem für ihre geschäftskritischen Handelsplattformen. Wenn neben innovativen Startups wie Twitter und LinkedIn eher konservative Unternehmen einen solchen Schritt wagen, höre ich eine Glocke läuten. Während des Kurses wurde auch deutlich, dass wirklich viel los ist. Martin musste Teile des Kurses an seinen Assistenten Iulian delegieren, weil er eine Unzahl von aktuellen Aktivitäten hat. Den größten Teil seiner Freizeit während des Kurses verbrachte er mit dem Versand von E-Mails, der Durchsicht von Papieren usw., um das immer anspruchsvollere Scala-Imperium zu verwalten. Er sagte mir, dass er aus Zeitmangel die Scala-Schulungen an einen Mitarbeiter delegieren wird, damit er sich auf die Richtung konzentrieren kann, in die sich Scala entwickelt. Es wurde mir klar, dass Scala weit über die akademischen Mauern hinausgewachsen ist und in der Industrie ernsthaft an Boden gewinnt. Alles in allem sind das also WIRKLICH gute Nachrichten. Am Ende des ersten Tages wartete noch eine weitere erfreuliche Überraschung auf mich. Zwei einheimische Teilnehmer des Scala-Kurses erzählten mir, dass genau an diesem Abend ein Treffen der Scala-Benutzergruppe von Lausanne stattfindet und sie baten mich, daran teilzunehmen. Eine halbe Stunde später stand ich Ceki Gülcü gegenüber, dem Erfinder von log4j und anderen Logging-Frameworks, der die Scala-Anwendergruppe in Lausanne leitet. Natürlich war es ein toller Abend mit viel Scala-Live-Coding und interessanten Diskussionen. Am nächsten Tag erzählten wir Martin Odersky von unserem Aufenthaltsort, und da ich erwähnte, dass die Anzahl der Teilnehmer an dem Treffen der Benutzergruppe nicht besonders beeindruckend war, antwortete er: "Richtig, ich denke, ich sollte ihnen ein paar Scala-Leute von der EPFL schicken, um ihnen beim Start zu helfen". Ich wünschte, unsere Scala-Benutzergruppe in den Niederlanden hätte so einen hochentwickelten Scala-Ressourcenpool in Reichweite... ;-) ScalaUserGroup Einige Mitglieder der Scala User Group Lausanne mit Ceki Gülcü auf der linken Seite. Es gibt noch eine weitere bemerkenswerte Anekdote. Nach dem Mittagessen in der Kantine der EPFL wies mich Iulian auf das andere Ende der Aula und fragte mich, ob ich 'es' erkenne. Was ich sah, war eine ausgefallene Treppe, die mich auf den zweiten Blick ansprach. Schauen Sie doch selbst einmal nach: kombiniert DIE Treppe zu Scala Bislang haben wir in diesem Blog alles andere als das ausgefallene Innenleben von Scala vorgestellt. Schauen wir uns also zum Abschluss einen netten kleinen Ausdruck an, der seinen Weg in Scala 2.9 finden könnte:

def ??? = throw new IllegalArgumentException("Noch nicht implementiert")

Was wir definiert haben, ist eine Methode mit dem Namen ???, die eine IllegalArgumentException auslöst. Was ist daran so besonders? Das Interessante daran ist, dass Sie die Methode ??? für alle Methoden verwenden können, die Sie noch nicht implementiert haben, unabhängig davon, welchen Typ sie zurückgeben (einen Werttyp, eine Einheit, eine Funktion, Nichts usw.). Praktisch für das Prototyping:

def myMethod(i:Int):String = ???
def myMethod(s:String, i:Int):Unit = ???
def myMethod:Int =>  Int= ???

Warum lässt sich das dann kompilieren? Aufgrund der grundlegenden OO-Natur von Scala gibt jede Methode etwas zurück. Im Falle von void ist der Rückgabetyp Unit, im Falle einer Methode, die nur eine Ausnahme wirft, ist der Rückgabetyp Nothing. Daher ist der Rückgabetyp der Methode ??? vom Typ Nothing. Ohne die Typinferenz von Scala zu nutzen, müsste ich schreiben:

def ???():Nothing = throw new IllegalArgumentException("noch nicht implementiert")

Wenn Sie sich die Klassenhierarchie von Scala ansehen, sehen Sie, dass Nothing der Untertyp eines jeden Typs ist. Da Sie immer einen Untertyp des tatsächlich definierten Typs zurückgeben können, den Sie in einer Methode zurückgeben, ist der Typ Nothing ein gültiger Rückgabetyp für alles. Wie Sie wahrscheinlich angenommen haben, wird der Typ Nothing vom Compiler hinzugefügt. Es gibt keine Möglichkeit und keine Notwendigkeit, den Nothing-Typ explizit zu behandeln. Ich persönlich halte dies für ein kluges und leistungsfähiges Konstrukt, das einmal mehr Scalas makellosen Aufbau der Klassenhierarchie unterstreicht. Alles in allem war es eine großartige und besondere Erfahrung, die Brutstätte von Scala zu besuchen, deren begnadeter Schöpfer diese beeindruckende Sprache zu neuen Höhen führt, damit alle, die den Schritt über die Schwelle wagen, jahrelang Spaß haben und produktiv sein können.

Verfasst von

Urs Peter

Contact

Let’s discuss how we can support your journey.