scala - jugs.org€¦ · diese version ist feature-complete bzgl. scala 3. › nach dem aktuellen...
TRANSCRIPT
22. Januar 2020, StuttgartDavid Alberts
ScalaEin Überblick
©it
erat
ec
Scala combines object-oriented
and functional programming
in one concise, high-level language.[scala-lang.org im Dezember 2019]
Was ist Scala?
22
.01
.20
20
2
scalable language
DEMO
©it
erat
ec
Agenda
› In welchem Kontext ist Scala entstanden?
› Wie kann ich funktionale Programmierung nach und nach einführen (in Scala)?
› Wie entwickelt sich Scala weiter?
› Was gibt es für Werkzeuge und Bibliotheken?
› Wo kann ich mehr Informationen finden?
22
.01
.20
20
3
©it
erat
ec
Geschichte
› 1958: Lisp erscheint, erste funktionale Programmiersprache
› 1967: Simula 67 erscheint, erste objektorientierte Programmiersprache
› 1985: C++ erscheint, objektorientiertes C
› 1990: Haskell erscheint (rein funktional)
› 1995: Java erscheint (rein objektorientiert)
› 1995: JavaScript erscheint mit first-class functions
› 2004: Scala erscheint (Martin Odersky, EPFL)
› 2005: In C# 2.0 gibt es delegates und damit erste begrenzte Unterstützung funktionaler Programmierung.
› 2011: Kotlin erscheint (objektorientiert und funktional)
› 2012: TypeScript erscheint (objektorientiert und funktional)
› 2014: Java 8 integriert Lambda-Ausdrücke und weitere funktionale Features. 22
.01
.20
20
4
©it
erat
ec
𝑓: 𝑋 → 𝑌𝑋
𝑥
𝑌
𝑓(𝑥)
Funktionale Programmierung: was ist das eigentlich?Frag Wikipedia!
Functional programming is a paradigmthat treats computation as
the evaluation of mathematical functionsand avoids mutable data.
frei nach der englischen Wikipedia
22
.01
.20
20
5
©it
erat
ec
Beispiel – Refactoring mit funktionalen TechnikenFrei nach „Functional TypeScript“ von Victor Savkin
› Funktionale Programmierung kann auch graduell eingesetzt werden.
› Nicht erst beim allerneuesten Projekt, das von 0 anfängt, sondern auch in bestehenden Projekten.
› Ein Ansatzpunkt ist Refactoring.
› Victor Savkin schlägt dafür folgende Techniken vor.
› Use Functions Instead of Simple Values
› Model Data Transformations as a Pipeline
› Extract Generic Functions
22
.01
.20
20
6
DEMO
©it
erat
ec
Scala 3
› Das Dotty-Projekt
› läuft seit Jahren am EPFL und
› soll die Grundlagen für die Zukunft von Scala schaffen.
› Ziele
› „Strengthen Scala's foundations.“
› „Make Scala easier and safer to use.”
› „Further improve the consistency and expressiveness of Scala's language constructs.”
› Aktueller Stand
› Am 20.12.2019 wurde Dotty Version 0.21.0-RC1 veröffentlicht.
› Diese Version ist feature-complete bzgl. Scala 3.
› Nach dem aktuellen Scala 2.13 soll Scala 3 auf Basis (der Features) von Dotty 0.21 folgen.
› Ein bisher geplantes Scala 2.14 vor Scala 3 ist aktuell nicht mehr geplant. The Road to Scala 3 auf scala-lang.org
› Scala 3 wird für Ende 2020 erwartet.
22
.01
.20
20
7
©it
erat
ec
Neuerungen in Scala 3
› Union Types und Intersection Types
› Toplevel Definitions
› Drop new
› Extension Methods
› Givens
› … 22
.01
.20
20
8
DEMO
©it
erat
ec
Werkzeuge und Bibliotheken
› IntelliJ IDEA ist die meistgenutzte IDE. Scala wird in der freien Version unterstützt.
› sbt ist das meistgenutzte Build-Tool.
› ScalaTest ist ein populäres Testwerkzeug, das in etwa JUnit ähnelt.
› ScalaCheck unterstützt Property-Based Testing und kann mit ScalaTest integriert werden.
› Scala.js ermöglicht die Übersetzung von Scala-Quellcode nach JavaScript.
› Akka implementiert Aktoren, HTTP-Server, Cluster, Reactive Streams…
› ZIO und cats sind Bibliotheken, die strikt funktionale Programmierung mit Scala ermöglichen.
22
.01
.20
20
9
©it
erat
ec
scala-lang.org Die offizielle Scala-Seite mit einer guten Tour der Sprache und vielen Verweisen.
dotty.epfl.ch Die Seite für Dotty, das Projekt für die Grundlagen zu Scala 3.
lightbend.com Die Seite der Firma, die Scala und weitere Projekte (z.B. Akka) begleitet, mit Projektschablonen.
coursera.org Online-Learning-Plattform mit Kursen zu Scala, z.B. Functional Programming Principles in Scala.
Scala Tutorial Online-Scala-Tutorial mit Aufgaben
scalatimes.com Eine freie wöchentliche Publikation zu Scala-Neuigkeiten.
scastie.scala-lang.org Scala programmieren im Browser
Konferenzvideos Z.B. Martin Odersky – A Tour of Scala 3, weitere Videos der Scala Days, …
Web Ressources
22
.01
.20
20
10
©it
erat
ec
Bücher
22
.01
.20
20
11
Constraints Liberate, Liberties Constrain
[Runar Bjarnason]
StandardwerkWird mit Scala 3 sicher überarbeitet.