Scala - jugs.org€¦ · Diese Version ist feature-complete bzgl. Scala 3. › Nach dem aktuellen...

12
22. Januar 2020, Stuttgart David Alberts Scala Ein Überblick

Transcript of Scala - jugs.org€¦ · Diese Version ist feature-complete bzgl. Scala 3. › Nach dem aktuellen...

Page 1: Scala - jugs.org€¦ · 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

22. Januar 2020, StuttgartDavid Alberts

ScalaEin Überblick

Page 2: Scala - jugs.org€¦ · 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

©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

Page 3: Scala - jugs.org€¦ · 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

©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

Page 4: Scala - jugs.org€¦ · 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

©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

Page 5: Scala - jugs.org€¦ · 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

©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

Page 6: Scala - jugs.org€¦ · 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

©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

Page 7: Scala - jugs.org€¦ · 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

©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

Page 8: Scala - jugs.org€¦ · 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

©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

Page 9: Scala - jugs.org€¦ · 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

©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

Page 10: Scala - jugs.org€¦ · 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

©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

Page 11: Scala - jugs.org€¦ · 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

©it

erat

ec

Bücher

22

.01

.20

20

11

Constraints Liberate, Liberties Constrain

[Runar Bjarnason]

StandardwerkWird mit Scala 3 sicher überarbeitet.

Page 12: Scala - jugs.org€¦ · 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

www.iteratec.de

KontaktDavid Alberts

[email protected]

Zettachring 6 | 70567 Stuttgart