Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im...

43
Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Transcript of Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im...

Page 1: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Pragmatik von Programmiersprachen

Im Kontext der Notation von Quelltexten

Mike Becker, 11. Dezember 2014

Page 2: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Szenario: IT Dienstleister

Unternehmen: IT DienstleistungProdukte: Beratung und SoftwareKunden: möchten Spezialsoftware einsetzen

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 2

Page 3: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Fragestellung

Früher oder später:

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 3

Page 4: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Lösungsansätze

Mögliche Auswahlkriterien:

• Vorgabe des Kunden

= alternativlos

• Best Practises

6= Best Choice

• Skillset der Mitarbeiter

⇒ keine Weiterentwicklung

• Vorlieben der Mitarbeiter

⇒ noch weniger Weiterentwicklung

• Spracheigenschaften

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 4

Page 5: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Lösungsansätze

Mögliche Auswahlkriterien:

• Vorgabe des Kunden = alternativlos

• Best Practises

6= Best Choice

• Skillset der Mitarbeiter

⇒ keine Weiterentwicklung

• Vorlieben der Mitarbeiter

⇒ noch weniger Weiterentwicklung

• Spracheigenschaften

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 4

Page 6: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Lösungsansätze

Mögliche Auswahlkriterien:

• Vorgabe des Kunden = alternativlos

• Best Practises 6= Best Choice

• Skillset der Mitarbeiter

⇒ keine Weiterentwicklung

• Vorlieben der Mitarbeiter

⇒ noch weniger Weiterentwicklung

• Spracheigenschaften

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 4

Page 7: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Lösungsansätze

Mögliche Auswahlkriterien:

• Vorgabe des Kunden = alternativlos

• Best Practises 6= Best Choice

• Skillset der Mitarbeiter ⇒ keine Weiterentwicklung

• Vorlieben der Mitarbeiter

⇒ noch weniger Weiterentwicklung

• Spracheigenschaften

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 4

Page 8: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Lösungsansätze

Mögliche Auswahlkriterien:

• Vorgabe des Kunden = alternativlos

• Best Practises 6= Best Choice

• Skillset der Mitarbeiter ⇒ keine Weiterentwicklung

• Vorlieben der Mitarbeiter ⇒ noch weniger Weiterentwicklung

• Spracheigenschaften

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 4

Page 9: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Lösungsansätze

Mögliche Auswahlkriterien:

• Vorgabe des Kunden = alternativlos

• Best Practises 6= Best Choice

• Skillset der Mitarbeiter ⇒ keine Weiterentwicklung

• Vorlieben der Mitarbeiter ⇒ noch weniger Weiterentwicklung

• Spracheigenschaften

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 4

Page 10: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Aspekte einer Programmiersprache

NotationFormale Sprache mit Alphabet und GrammatikLexik und Syntax

BedeutungWas tut der notierte Algorithmus?Semantik

EinsetzbarkeitWie gut lässt sich der Lösungsweg ausdrücken?Pragmatik

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 5

Page 11: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Pragmatik

Bei natürlichen Sprachen:

Was man mit Sprache bewirken kann (Wagenknecht, Hielscher)Ironie, SatireHöflichkeit, ProvokationÜberzeugen (rhetorische Tricks)

Änderung der Bedeutung durch externe EinflüsseBeispiel: „Wo bist du?“ – „Hier.“

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 6

Page 12: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Pragmatik

Übertragen auf Programmiersprachen:

Fachliche Einsatzbereiche

Technisches Umfeld

Beziehungen zwischen Mensch und Maschine

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 7

Page 13: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Mögliche Betrachtungen

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 8

Page 14: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Mögliche Betrachtungen

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 8

Page 15: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Notation des Quellcodes

Mögliche Kriterien für die Untersuchung:

Lesbarkeit

Eindeutigkeit

Kompaktheit

Compilerunterstützung

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 9

Page 16: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Notation des Quellcodes

Wichtige Bemerkungen um unsachliche Diskussionen zu vermeiden:

Lesbarkeit:

ist allgemein subjektiv⇒ vergleichend und von außen bewerten

Eindeutigkeit:

der Mensch gewöhnt sich schnell⇒ Bedeutung für Software?

Kompaktheit:

Optik versus Metrik

Compilerunterstützung:

Nicht nur mit VI programmieren

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 10

Page 17: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Notation des Quellcodes

Wichtige Bemerkungen um unsachliche Diskussionen zu vermeiden:

Lesbarkeit:ist allgemein subjektiv⇒ vergleichend und von außen bewerten

Eindeutigkeit:

der Mensch gewöhnt sich schnell⇒ Bedeutung für Software?

Kompaktheit:

Optik versus Metrik

Compilerunterstützung:

Nicht nur mit VI programmieren

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 10

Page 18: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Notation des Quellcodes

Wichtige Bemerkungen um unsachliche Diskussionen zu vermeiden:

Lesbarkeit:ist allgemein subjektiv⇒ vergleichend und von außen bewerten

Eindeutigkeit:der Mensch gewöhnt sich schnell⇒ Bedeutung für Software?

Kompaktheit:

Optik versus Metrik

Compilerunterstützung:

Nicht nur mit VI programmieren

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 10

Page 19: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Notation des Quellcodes

Wichtige Bemerkungen um unsachliche Diskussionen zu vermeiden:

Lesbarkeit:ist allgemein subjektiv⇒ vergleichend und von außen bewerten

Eindeutigkeit:der Mensch gewöhnt sich schnell⇒ Bedeutung für Software?

Kompaktheit:Optik versus Metrik

Compilerunterstützung:

Nicht nur mit VI programmieren

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 10

Page 20: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Notation des Quellcodes

Wichtige Bemerkungen um unsachliche Diskussionen zu vermeiden:

Lesbarkeit:ist allgemein subjektiv⇒ vergleichend und von außen bewerten

Eindeutigkeit:der Mensch gewöhnt sich schnell⇒ Bedeutung für Software?

Kompaktheit:Optik versus Metrik

Compilerunterstützung:Nicht nur mit VI programmieren

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 10

Page 21: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Lesbarkeit und Kompaktheit

LesbarkeitWie gut ist der Quelltext für Sprachneulinge verständlich?

KompaktheitWie viele Instruktionen werden für die Problemlösung benötigt?

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 11

Page 22: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Beispiel - Zeilen zählen mit Haskell

main = print . length . lines=<< readFile "linecount.hs"

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 12

Page 23: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Beispiel - Zeilen zählen mit Python

with open("linecount.py") as f:for i, l in enumerate(f):

passprint i + 1

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 13

Page 24: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Beispiel - Zeilen zählen mit Java

import java.io.∗;

public class LineCount {public static void main(String args[])

throws IOException {try (BufferedReader reader = new BufferedReader(

new InputStreamReader(new FileInputStream("LineCount.java")))) {

int n = 0; while(reader.readLine() != null) n++;System.out.printf("%d\n", n);

}}

}

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 14

Page 25: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Beispiel - Zeilen zählen mit Assembler

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 15

Page 26: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Lesbarkeit und Kompaktheit

FeststellungLesbarkeit und Kompaktheit sind in der Theorie unabhängig, aberunterliegen in der Praxis den gleichen Einflüssen.

MerksatzVerbosität und Granularität erhöhen die Lesbarkeit auf Kosten derKompaktheit.

Beispiel (Java): synchronized

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 16

Page 27: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Lesbarkeit und Kompaktheit

FeststellungLesbarkeit und Kompaktheit sind in der Theorie unabhängig, aberunterliegen in der Praxis den gleichen Einflüssen.

MerksatzVerbosität und Granularität erhöhen die Lesbarkeit auf Kosten derKompaktheit.

Beispiel (Java): synchronized

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 16

Page 28: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Lesbarkeit und Kompaktheit

FeststellungLesbarkeit und Kompaktheit sind in der Theorie unabhängig, aberunterliegen in der Praxis den gleichen Einflüssen.

MerksatzVerbosität und Granularität erhöhen die Lesbarkeit auf Kosten derKompaktheit.

Beispiel (Java): synchronized

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 16

Page 29: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Schlüsselwort-Eindeutigkeit

Beispiel (Java):

class Foo implements Bar// ...List<? extends Bar> list = new ArrayList<Foo>();

Beispiel (Python):

for e in l:# <Block>else# <Block>

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 17

Page 30: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Symbol-Eindeutigkeit

Beispiel (C#):

G(F < A, B > (-7))

Beispiel (C++):

typedef sometype<T1, T2<T1, T3> >

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 18

Page 31: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Symbol-Eindeutigkeit

Beispiel (C#):

G(F < A, B > (-7))

Beispiel (C++):

typedef sometype<T1, T2<T1, T3> >

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 18

Page 32: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Symbol-Eindeutigkeit

Beispiel (C#):

G(F < A, B > (-7))

Beispiel (C++):

typedef sometype<T1, T2<T1, T3> >

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 18

Page 33: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Eindeutigkeit

FeststellungWiederverwendung von Schlüsselwörtern und Symbolen stellen nichtnur Programmierer, sondern auch Programe vor Herausforderungen.

MerksatzJe mehr Symbole und Schlüsselwörter eine eindeutige Bedeutunghaben, desto kleiner sind die Lernkurve des Programmierers und derUmfang eines Parsers.

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 19

Page 34: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Eindeutigkeit

FeststellungWiederverwendung von Schlüsselwörtern und Symbolen stellen nichtnur Programmierer, sondern auch Programe vor Herausforderungen.

MerksatzJe mehr Symbole und Schlüsselwörter eine eindeutige Bedeutunghaben, desto kleiner sind die Lernkurve des Programmierers und derUmfang eines Parsers.

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 19

Page 35: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Compilerunterstützung

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 20

Page 36: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

NullPointerException-Vermeidung

NullPointerException-Vermeidung in Ceylon:

null ist keine Instanz von Object, sondern von Null

Null ist nicht instanzierbar, sondern ein Enumerationstyp

null ist die einzige Instanz von Null

über Union-Types kann jeder beliebige Typ optional werdenBeispiel: String | Null (in Kurzschreibweise: String?)

⇒ Das Typsystem wird zur Vermeidung von NPE ausgenutzt

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 21

Page 37: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

NullPointerException-Vermeidung

NullPointerException-Vermeidung in Ceylon:

null ist keine Instanz von Object, sondern von Null

Null ist nicht instanzierbar, sondern ein Enumerationstyp

null ist die einzige Instanz von Null

über Union-Types kann jeder beliebige Typ optional werdenBeispiel: String | Null (in Kurzschreibweise: String?)

⇒ Das Typsystem wird zur Vermeidung von NPE ausgenutzt

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 21

Page 38: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Vollständige Pfadabdeckung

Beispiel (Ceylon):

switch (cmpResult)case (smaller) {// ...}case (equal) {// ...}case (larger) {// ...}

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 22

Page 39: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Compilerunterstützung

FeststellungStrengere Regeln ermöglichen es dem Compiler bei der Vermeidungvon Fehlern zu unterstützen, aber erzwingen auch einen bestimmtenStil.

MerksatzDie möglichen Kosten von Fehleranalyse und -behebung sind gegendie möglichen Kosten eines zu restriktiven Compilers abzuwägen.

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 23

Page 40: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Compilerunterstützung

FeststellungStrengere Regeln ermöglichen es dem Compiler bei der Vermeidungvon Fehlern zu unterstützen, aber erzwingen auch einen bestimmtenStil.

MerksatzDie möglichen Kosten von Fehleranalyse und -behebung sind gegendie möglichen Kosten eines zu restriktiven Compilers abzuwägen.

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 23

Page 41: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Fazit

Soweit zur Theorie!

Praxis?

Hinweis: strategische Schokoladenreserven bereithalten.

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 24

Page 42: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Fazit

Soweit zur Theorie!

Praxis⇒ selbst!

Hinweis: strategische Schokoladenreserven bereithalten.

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 24

Page 43: Pragmatik von Programmiersprachen - Im Kontext der ... · Pragmatik von Programmiersprachen Im Kontext der Notation von Quelltexten Mike Becker, 11. Dezember 2014

Szenario Pragmatik Lesbarkeit und Kompaktheit Eindeutigkeit Compilerunterstützung Funktionale Programmierung Fazit

Fazit

Soweit zur Theorie!

Praxis⇒ selbst!

Hinweis: strategische Schokoladenreserven bereithalten.

11. Dezember 2014 Mike Becker Pragmatik von Programmiersprachen Seite 24