Scala Days 2018 in Berlin

by Andreas Hartmann
Tags: Scala

Die Scala Days sind die ideale Gelegenheit, sich einen Überblick über Neuigkeiten und Trends im Ökosystem der Programmiersprache zu verschaffen. BeCompanys Andreas Hartmann berichtet von seinem Ausflug nach Berlin.

ScalaDays 2018 im Kosmos Berlin Die ScalaDays 2018 fanden im Kosmos-Gebäude in Berlin Friedrichshain statt (Foto: BeCompany).

Die zweimal jährlich – einmal in Europa, einmal in Nordamerika – stattfindenden Scala Days sind so bedeutsam, dass ich dieses Mal meiner Tochter ausnahmsweise via Skype zum Geburtstag gratulieren musste.

Wo Entwickler sich wohlfühlen

Einen grossen Teil der fast 1000 Teilnehmer stellen junge, in mit dem Logo ihres favorisierten Open-Source-Projekts bedruckten T-Shirts gekleidete Entwickler, die in kleinen Gruppen über die Herausforderungen des Programmieralltags und die Eigenarten von Scala diskutieren. Dazu gesellen sich Besucher aus dem akademischen Bereich, die von den mathematischen Grundlagen der funktionalen Programmierung fasziniert sind und über die esoterisch Features der Programmiersprache fachsimpeln. Soweit sich Mitarbeiter aus den Bereichen Marketing, Business Development und Human Resources unter den Besuchern befinden, geben sie sich zumindest nicht auf den ersten Blick als solche zu erkennen. Dies und der Umstand, dass auch die Stände der Sponsoren mit T-Shirt-tragenden, fachlich versierten Personen besetzt sind, gibt der Konferenz einen Wohlfühl-Charakter aus Entwicklersicht.

Martin Odersky: "Preparing for Scala 3"

Martin Odersky (@odersky), der Urvater von Scala und Gründungsmitglied unserer Partnerfirma Lightbend, eröffnete die Konferenz am Dienstagabend mit der Keynote Preparing for Scala 3, einem Vorgeschmack auf den nächsten grossen Versionssprung der Programmiersprache. Das Credo der Sprache ist weiterhin, die Vorteile der objektorientierten Programmierung (Modularisierung und Orientierung an der Geschäftsterminologie) und der funktionalen Programmierung (beweisbare Korrektkeit und Zusammensetzbarkeit) zu verschmelzen und dadurch wegweisende neue Programmiertechniken zu ermöglichen.

Eine besondere Herausforderung bei der Entwicklung von Version 3 ist es, die Sprache noch einfacher und konsistenter zu machen, ohne dabei Ausdrucksstärke einzubüssen. Darüber hinaus wird besonderes Augenmerk auf die Werkzeugunterstützung, zum Beispiel IDE-Integration, und die Binärkompatibilität zwischen verschiedenen Sprachversionen gelegt. Aus Sicht eines Scala-Entwicklers und -Advokaten ist es sehr erfreulich, dass die Entscheidungsträger innerhalb der Community der Produktivität und dem einfachen Einstieg ins Scala-Ökosystem zunehmende Bedeutung beimessen.

Thomas Petricek: "Functionalist programming language design"

Den nächsten Tag eröffnete Tomas Petricek (@tomaspetricek), Spezialist für Grundlagen und Anwendung der funktionalen Programmierung und Zusammenhänge zwischen Informatik und anderen Wissenschaften, mit seiner Keynote Functionalist programming language design. Tomas zeigte anhand einiger anschaulicher Beispiele in der Sprache F#, dem Pendent zu Scala im Microsoft-Universum, wie sich jahrhundertealte Prinzipien aus der Welt der Architektur auf die moderne Softwareentwicklung übertragen lassen.

Petra Bierleutgeb: "ExecutionContext Demystified"

Die Entscheidung für die Wahl des nächsten Vortrags fiel mir besonders schwer; letztlich verpasste ich den Vortrag des Gurus der generischen Programmierung, Miles Sabin (@milessabin), über kind polymorphism zugunsten von ExecutionContext Demystified von Petra Bierleutgeb (@pbvie). Leider musste Petra den Vortrag aufgrund von Problemen mit der Internetverbindung unterbrechen, so dass etwas zu wenig Zeit für die Erläuterung der Codebeispiele blieb und einige Aspekte des Themas vielen Zuhörern nach wie vor etwas mystisch bleiben werden.

Sören Brunk: "Dive into Deep Learning with Scala"

Das Highlight des Tages war aus meiner Sicht der Vortrag Dive into Deep Learning with Scala von Sören Brunk (@soebrunk). Auf eine kurze und sehr verständlich präsentierte Einführung in die theoretischen Grundlagen künstlicher neuronaler Netze folgte ein Überblick über die vielversprechendsten Scala-basierten Projekte im Bereich Deep Learning. Anscheinend haben einige andere Projekte, zum Beispiel das vom Google Brain-Team in Python entwickelte TensorFlow, bezüglich Verbreitungsgrad noch die Nase vorn. Aber Sören zeigte anhand eines eindrücklichen Beispiels aus dem Bereich der Bilderkennung, dass sich Scala auch hier keineswegs hinter anderen Programmiersprachen verstecken muss.

Anschliessend erläuterte Manuel Bernhardt (@elmanu) vom Akka-Team, wie die Welt aus der Sicht eines Cluster-Nodes aussieht. Manuel gelang das Kunststück, vermeindlich trockene Konzepte wie Fehlererkennung und Gossip-Protokolle auf unterhaltsame und verständliche Weise zu vermitteln. Benchmark-Ergebnisse für die vorgestellten Algorithmen sowie Einblicke in persönliche Erfahrungen trugen weiter zur Relevanz und Praxisnähe des Vortrags bei.

Ólafur Páll Geirsson: "Six steps from zero to IDE"

Ólafur Páll Geirsson (@olafurpg) sprach in seinem Vortag Six steps from zero to IDE über die Herausforderungen der IDE-Integration und vielversprechende Lösungsansätze. Das auf der Basis des Language Server Protocols implementierte Projekt Metals wird hoffentlich dazu beitragen, dass die Entwicklergemeinde in Zukunft auf noch bessere und performantere Werkzeuge zur Arbeit mit ihrer favorisierten Programmiersprache zurückgreifen kann.

Round Table: "Teaching Scala"

Es folgte eine Round-Table-Diskussion zum Thema Teaching Scala. Ryan Tanner (@youfoundrian), Neville Li (@sinisa_lyh), Maciej Gorywoda (@makingthematrix), Kelley Robinson (@kelleyrobinson), Martin Odersky (@odersky) und Heather Miller (@heathercmiller) diskutierten über verschiedene Ansätze, jungen Studierende, aber auch IT-Fachleuten mit langjähriger Erfahrung im Bereich OOP die Symbiose aus funktionaler und objektorientierter Programmierung nahezubringen.

Heather Millers Anekdote von zwei sechzehnjährigen Neueinsteigerinnen, die den Lehrstoff zur funktionalen Programmierung in der Hälfte der veranschlagten Zeit verstanden hatten und den anderen Kursteilnehmern – erfahrenen Java-Programmieren – auf die Sprünge helfen mussten, brachte eine besondere Herausforderung der Programmiersprache auf den Punkt: Das Umdenken vom imperativen zum funktionalen Paradigma, das vielen Quereinsteigern schwerfällt.

Chris Phelps: "Type Parameter Power-Up! Variance, Bounds, and Inference"

Den Abschluss meines Tages bildete der Vortrag Type Parameter Power-Up! Variance, Bounds, and Inference von Chris Phelps (@CJPhelps). Chris erläuterte die Konzepte Ko-, Kontra- und Invarianz anhand von Beispielen und gab jeweils Empfehlungen zum Einsatzbereich. Ich hätte mir allerdings etwas mehr Tiefe gewünscht: Etwa Details über die Interna des Compilers, und einen kritischen Blick auf das Thema Subtyping im Allgemeinen.

Eric Bowman: "Where Teams Choose: Autonomy, Accountability & Scaling a Platform"

Eric Bowman (@ebowman) eröffnete den zweiten Konferenztag mit seiner Keynote Where Teams Choose: Autonomy, Accountability & Scaling a Platform. Eric schaffte es, auf sehr informative und inspirierende Weise die Wichtigkeit einer fundierten, nachhaltigen Unternehmenskultur und -organisation zu vermitteln.

Eric Bowman über die Pflege von Scala-Ökosystemen Eric Bowman spricht über die Pflege von Scala-Ökosystemen.

Nach einer kurzen Erläuterung, was die Begriffe responsibility, accountability, autonomy und governance aus seiner Sicht bedeuten, beschrieb Eric, unter welchen Bedingungen Entwicklerteams seiner Erfahrung nach optimale Ergebnisse erzielen können. Laut Eric funktionieren autonome Teams – insbesondere in einer zunehmend von loser Kopplung und Microservices geprägten Kultur – zwar effektiver, sie müssen sich ihre Autonomität jedoch zunächst verdienen. Ein weiterer Kerngedanke war die Bedeutung der Identifikation mit der Arbeit als Voraussetzung für eine dauerhaft hohe Produktivität.

Zahari Dichev: "High performance Scala systems without tears"

Ein weiteres Highlight war der Vortrag High performance Scala systems without tears von Zahari Dichev (@zaharidichev). Zahari erläuterte anhand einiger Beispiele, wie minimale Änderungen am Code signifikante Auswirkungen auf die Performance haben können. Er zeigte anhand von Codebeispielen aus der Standardbibliothek von Scala, wie sich die Performance durch die Verwendung imperativer Konzepte wie Variablen und Schleifen in kleinen, in sich abgeschlossenen Bereichen eines Programmes optimieren lässt.

Zahari gab einen detaillierten Einstieg in die Arbeitsweise der Cache-Hierarchien moderner Prozessoren und zeigte, welchen Einfluss die Gestaltung von Algorithmen auf wichtige Kennzahlen wie cache misses und instructions per second haben kann. Für alle vorgestellten Optimierungstechniken wurden entsprechende Analysewerkzeuge vorgestellt und Benchmark-Ergebnisse gezeigt.

Symbiose von funktionaler und imperativer Programmierung

Das zentrale Thema des Vortrags Effective Scala von Bill Venners (@bvenners) und Frank Sommers war die Symbiose von funktionaler und imperativer Programmierung. Laut Bill und Frank sollte ein typisches Scala-Programm idealerweise aus drei Schichten bestehen: Bei der Umsetzung von Low-Level-Funktionalität darf zur Optimierung der Performance auf imperative Techniken zurückgegriffen werden (confined). Der Grossteil des Programms, insbesondere die Geschäftslogik, sollte in Form von puren Funktionen implementiert werden (pure). Schnittstellen und andere Seiteneffekt-behaftete Funktionalität darf nur im äusseren Grenzbereich des Programms verwendet werden (wilderness).

Berliner-Pattern Bill Venners und Frank Sommers stellen das Berliner Pattern vor.

Die Sprecher tauften dieses Entwurfsmuster das Berliner Pattern, was selbstredend für Beifall sorgte. Insgesamt enthielt der Vortrag einige sinnvolle Empfehlungen; ich persönlich hätte mir jedoch eine differenzierte Betrachtung der Einsatzgebiete von Scala und auf verschiedene Anwendungsfälle zugeschnittene Praktiken und Entwurfsmuster gewünscht.

Boris Lublinsky vergleicht Apache Kafka und Akka

Als nächstes hätte ich mir sehr gern den Vortrag Strings are Evil: Methods to hide the use of primitive types von Adam Rosien (@arosien) und Noel Welsh (@noelwelsh) angesehen, in der Hoffnung, noch die eine oder andere Information über präzisierte Typen und Typ-Beschränkungen zu erhaschen. Ich entschied mich jedoch für den Vortrag Kafka Microservices with Kafka plus Akka and Kafka Streams von Boris Lublinsky, Software-Architekt bei Lightbend. Boris präsentierte einen umfangreichen und objektiven Vergleich zwischen Apache Kafka und Lightbends eigenem Produkt, Akka, im Bereich von reaktiven und Streaming-Anwendungen. Die beiden Plattformen wurden bezüglich ihrer Architektur und typischer Anwendungsbereiche gegenübergestellt, wobei Boris aus seinem umfangreichen Erfahrungsschatz schöpfen konnte, viele Hinweise gab und sich auch nicht vor kritischen Bemerkungen scheute.

Den nächsten Vortrag zum Thema reaktive Applikationen präsentierte Duncan DeVore (@ironfish), Principal Systems Engineer bei Lightbend. Duncan erläuterte zunächst einige Grundprinzipien erfolgreicher Microservice-Architekturen, insbesondere das Denken in Form von Versprechen (Promises). Darauf folgte eine Vorstellung der Architekturmuster Event Sourcing und Command Sourcing, die typischerweise in Microservices-basierten Plattformen zum Einsatz kommen. Den Abschluss bildete ein Einblick in darauf aufbauende Architekturen (zum Beispiel CQRS) und Anwendungen (zum Beispiel Fast Data Streaming), sowie der Vergleich mit traditionellen Techniken wie relationalen Datenbanksystemen und CRUD.

Olivier Blanvillain: "Applications of Implicit Function Types"

Der Vortrag Applications of Implicit Function Types von Olivier Blanvillain, Doktorand an der EPFL, gab einen Ausblick auf die Version 3 der Programmiersprache. Implicit Function Types abstrahieren über die von einer Funktion genutzten impliziten Parameter, d.h. über den Kontext, in dem die Funktion aufgerufen wird. Sie ermöglichen dadurch neuartige Programmiertechniken, mit denen sich viele Aufgaben auf klare und elegante Weise bewältigen lassen, darunter Dependency Injection und Typklassen. Olivier stellte eine Reihe von Anwendungsfällen mit zugehörigen Codebeispielen vor; leider schätzte er die Auffassungsgabe des Publikums jedoch als sehr hoch ein und liess jeweils recht wenig Zeit, um das Gezeigte nachzuvollziehen. Zum Glück gibt es inzwischen genug Informationen im Internet, um sich eingehend mit dem Konzept und den vorgestellten Techniken vertraut zu machen.

Vielversprechender Arbeitsmarkt für Scala-Entwickler

Den Abschluss der Konferenz bildete eine Fragerunde, in der die Zuschauer Jon Pretty (@propensive), Martin Odersky (@odersky), Adriaan Moors (@adriaanm), Heather Miller (@heathercmiller), Kelley Robinson (@kelleyrobinson) und Holden Karau (@holdenkarau) ihre Wünsche, Anregungen, Fragen und weiteres Feedback kommunizieren konnten.

Fragerunde Die abschliessende Fragerunde.

In den Pausen konnte man sich an den Ständen der Aussteller über deren Produkte und Dienstleistungen informieren. Viele der anwesenden Firmen kommunizierten den Bedarf an neuen Mitarbeitern; der Arbeitsmarkt für Scala-Entwickler sieht derzeit anscheinend sehr vielversprechend aus. Einige Aussteller boten die Gelegenheit, an Gewinnspielen teilzunehmen, mit durchaus interessanten Preisen wie zum Beispiel Dronen, Virtual-Reality-Brillen und Tickets zu kommenden Veranstaltungen.

Insgesamt haben sich die Scala Days 2018 für mich auf jeden Fall gelohnt – vor allem, weil sie Spass gemacht, meinen Horizont erweitert und die Begeisterung für meine favorisierte Programmiersprache und deren Community neu geweckt haben.

Möchten Sie mehr wissen über Scala oder über die Art, wie wir Software entwickeln? Ich freue mich auf Ihre Nachricht: andreas.hartmann@becompany.ch

Wir sind BeCompany

Wir entwickeln individuelle Internet-of-Things-Projekte für Kunden aus allen Branchen – unglaublich schnell und flexibel. Wir helfen Ihnen, Ihr Produkt durch Vernetzung von Menschen, Prozessen, Daten und Dingen mit einer neuen Welt zu verbinden. Dabei setzen wir auf Cutting-Edge-Technologien, fundierte Methoden, langjährige Branchenkenntnisse und gesunden Menschenverstand.