JVM Functional Language Battle

Größe: px
Ab Seite anzeigen:

Download "JVM Functional Language Battle"

Transkript

1 JVM Functional Language Battle JUG Hamburg, Orientation in Objects GmbH Weinheimer Str Mannheim Version: Ihr Sprecher Falk Sippach Trainer, Berater, Entwickler Co-Organisator Architektur Agile Softwareentwicklung Codequalität Feedback gern 2 1

2 Java, XML und Open Source seit 1998 ) Software Factory ) Schlüsselfertige Realisierung von Java Software Individualsoftware Pilot- und Migrationsprojekte Sanierung von Software Software Wartung ) Object Rangers ) Unterstützung laufender Java Projekte Perfect Match Rent-a-team Coaching on the project Inhouse Outsourcing ) Competence Center) Schulungen, Coaching, Weiterbildungsberatung, Train & Solve-Programme Methoden, Standards und Tools für die Entwicklung von offenen, unternehmensweiten Systemen 3 Abstract Funktionale Programmierung soll so viel ausdrucksstärker sein, aber leider ist dieses Programmier-Paradigma nicht ganz kompatibel zu der prozedural- und objektorientierten Denkweise von uns Java-Entwicklern. Anhand eines kleinen Algorithmus werden wir uns verschiedene Lösungen zunächst im klassischem imperativen Java (vor Java 8) und als Vergleich dazu in alternativen JVM-Sprachen (Groovy, Frege, ggf. Scala bzw. JavaScript) anschauen und die verschiedenen Lösungen diskutieren. Herauskommen soll eine saubere und verständlichere Struktur, die zu besser les- und wartbarem Code führen wird. Die gewonnenen Erkenntnisse wollen wir dann letztendlich in Java 8 mittels Streams und Lambda-Ausdrücken umsetzen, so dass jeder Zuhörer die Grundideen der funktionalen Programmierung mit in seine tägliche Arbeit nehmen kann. Es sind keine speziellen Vorkenntnisse in den angesprochenen alternativen Sprachen notwendig, ein solides Verständnis für die Programmiersprache Java genügt. 4 2

3 Gliederung Warum von Imperativ zu Funktional? Sprachwettkampf Functional Java 8+ 5 Java Groovy Scala JavaScript Haskell Frege Imperativ Funktional 6 3

4 Imperativ: Wie erreiche ich mein Ziel? Funktional: Was will ich erreichen? Foto von tomwieden, CC0 Public Domain Lizenz, Foto von Mohamed Nuzrath, CC0 Public Domain Lizenz, 7 Problemstellung Foto von Manfred Antranias Zimmer, CC0 Public Domain Lizenz, 8 4

5 Foto von Media Publishing, CC0 Public Domain Lizenz, 9 Prüfsummen-Berechnung Luhn-Algorithmus Luhn-Formel "Modulo 10"-Algorithmus rein clientseitige Prüfung möglich Double-Add-Double-Methode 10 5

6 Beispiel % 10 == 0 gültig 11 Der Kampf beginnt Foto von Marco Montoya, CC0 Public Domain Lizenz,

7 13 Java klassisch Variante

8 Java klassisch Variante 2 Variablen Schleifen Verzweigungen Tiefe der Verschachtelung Reihenfolge nicht beliebig Zustandsänderungen Exception- Handling? 15 OOP? SRP? DRY? SoC? Lesbarkeit? Testbarkeit? Wartbarkeit? Erweiterbarkeit? Wiederverwendbarkeit? Parallelisierbarkeit? Foto von Christopher Kuszajewski, CC0 Public Domain Lizenz,

9 Java klassisch mit sprechenden Methodennamen 17 Folge von Statements mit Schleifen, Verzweigungen, Sprüngen Typische Eigenschaften Verändern von Zuständen (Variablen) Vermischung von Was und Wie (bei Schleifen) Exceptions als Go-To- Statements Vorsicht bei Nebenläufigkeit Foto von tomwieden, CC0 Public Domain Lizenz,

10 Funktional 19 Java klassisch Spaghetti-Code Aufspalten in Ziffern Reihenfolge drehen Jede 2. Ziffer verdoppeln Aufsummieren Validierungsprüfung 20 10

11 Imperativ Funktional 21 Wie sieht es in anderen Sprachen aus? Foto von Marco Montoya, CC0 Public Domain Lizenz,

12 Groovy objektorientiert dynamisch typisiert (statisch auch möglich) ausdrucksstarke/prägnante Syntax sehr gute Integration mit Java (JVM, Bibliotheken, Vererbung, ) Metaprogrammierung, Closures, Operatorüberladung Funktionsliterale (Closures) sind First Class Citizens 23 Beispiele in Groovy 24 12

13 25 JavaScript objektorientierte Skriptsprache aber klassenlos (Prototyp-basiert) dynamisch typisiert Funktionen sind First Class Citizens geeignet für Client (Browser) und Server (Node.js, Nashorn) 26 13

14 Beispiel JavaScript 27 Kotlin statisch typisiert objektorientiert Übersetzung in Java Bytecode oder JavaScript Quellcode interoperabel mit Java entwickelt bei Jetbrains (IntelliJ IDEA) 28 14

15 Beispiel Kotlin 29 Viele Beispiele in vielen imperativen Sprachen später Foto von Marco Montoya, CC0 Public Domain Lizenz,

16 todigits reverse double2nd sumdigits divisible10 Frege Haskell for the JVM rein funktionale Programmiersprache statisch typisiert mit Typinferenz und Typvariablen frei von Nebeneffekten Monaden zur Kapselung von imperativen Konstrukten Pattern Matching Typklassen 31 Funktionskaskade true false isvalid n = divisibleby10(sumdigits(double2nd(reverse(todigits(n))))) n 32 16

17 Algorithmus in Frege isvalid n = divisibleby10( sumdigits( double2nd( reverse( Validierungsfunktion Teilbar durch 10? Aufsummieren jede 2. verdoppeln Ziffern umdrehen ) ) ) ) todigits(n) Aufsplitten in Ziffern 33 Typische Eigenschaften Foto von Mohamed Nuzrath, CC0 Public Domain Lizenz, Immutability pure/seiteneffektfrei referentielle Transparenz Funktionen als First-Class- Citizens Higher-Order Functions Lambdas/Closures Lazy Evaluation Rekursion Pattern Matching Currying/Partial Function Application Function Composition 34 17

18 Validierungsfunktion todigits n n < 0 = error "n must be 0 or greater" todigits 0 = [] todigits n = todigits (n `div` 10) ++ [(n `mod` 10)] double2nd = zipwith (\x y -> x * y) (cycle [1, 2]) double2nd' = zipwith (*) (cycle [1, 2]) sumdigits xs = sum (concat (map todigits xs)) sumdigits' = sum. concat. map todigits divisibleby10 n = mod n 10 == 0 isvalid = divisibleby10. sumdigits. double2nd. reverse. todigits 35 Umwandlung in Ziffern todigits n n < 0 = error "n must be 0 or greater" todigits 0 = [] todigits n = todigits (n `div` 10) ++ [(n `mod` 10)] Pattern double2nd Matching = zipwith Rekursion (\x y -> x * y) (cycle [1, 2]) double2nd' = zipwith (*) (cycle [1, 2]) sumdigits xs = sum (concat (map todigits xs)) sumdigits' = sum. concat. map todigits divisibleby10 n = mod n 10 == 0 isvalid = divisibleby10. sumdigits. double2nd. reverse. todigits 36 18

19 Jeweils 2. Ziffer verdoppeln todigits n n < 0 = error "n must be 0 or greater" todigits 0 = [] todigits n = todigits Lambda-Ausdruck (n `div` 10) ++ Lazy [(n Evaluation `mod` 10)] double2nd = zipwith (\x y -> x * y) (cycle [1, 2]) double2nd' = zipwith (*) (cycle [1, 2]) Persistente sumdigits Partial xs Function = sum (concat Higher Order (map Function todigits xs)) Datenstrukturen Application sumdigits' = sum. concat. map todigits divisibleby10 n = mod n 10 == 0 isvalid = divisibleby10. sumdigits. double2nd. reverse. todigits 37 Aufsummieren der Ziffern todigits n n < 0 = error "n must be 0 or greater" todigits 0 = [] todigits n = todigits (n `div` 10) ++ [(n `mod` 10)] double2nd = zipwith (\x y -> x * y) (cycle [1, 2]) double2nd' = zipwith (*) (cycle [1, 2]) sumdigits xs = sum (concat (map todigits xs)) sumdigits' = sum. concat. map todigits divisibleby10 Functionn Composition: = mod n 10 == Partial 0 Function f. g (x) == f(g(x)) Application isvalid = divisibleby10. sumdigits. double2nd. reverse. todigits 38 19

20 Teilbar durch 10? todigits n n < 0 = error "n must be 0 or greater" todigits 0 = [] todigits n = todigits (n `div` 10) ++ [(n `mod` 10)] double2nd = zipwith (\x y -> x * y) (cycle [1, 2]) double2nd' = zipwith (*) (cycle [1, 2]) sumdigits xs = sum (concat (map todigits xs)) sumdigits' = sum. concat Infix- statt. map Postfix-Notation todigits divisibleby10 n = n `mod` 10 == 0 isvalid = divisibleby10. sumdigits. double2nd. reverse. todigits 39 leicht verständlich, einfach zu schlussfolgern Vorteile seiteneffektfrei einfach test-/debugbar leicht parallelisierbar modularisierbar und einfach wieder zusammenführbar hohe Code-Qualität Foto von Mohamed Nuzrath, CC0 Public Domain Lizenz,

21 OO vs. Funktional Scala funktional und objektorientiert statisch typisiert (Typinferenz) Funktionen als First-Class-Citizens Pattern Matching Java-Integration möglich 43 21

22 Beispiel Scala 44 Ist Java 8 funktional? Foto von Marco Montoya, CC0 Public Domain Lizenz,

23 Luhn-Algorithmus in Java 8 Variante 1 46 Was heißt "Funktional Programmieren" in Java 8? Lambdas: Funktionsliterale als First-Class-Citizens Higher-Order Functions (map, foreach) Currying und Funktionskomposition Bedarfsauswertung durch Streams (bedingt) (Rekursion) 47 23

24 Java 8: Funktionskomposition Wiederverwendung von kleinen Funktionen: (f. g)(x) == f(g(x)) 48 Java 8: Currying und partielle Funktionsaufrufe Currying: Konvertierung einer Funktion mit n Argumenten in n Funktionen mit jeweils einem Argument

25 Was fehlt Java 8 zur besseren funktionalen Unterstützung? Erzwingen von Immutability persistente/unveränderbare Datenstrukturen Vermeidung von Seiteneffekten (erzwingen) beliebige Bedarfsauswertungen (mehr als unendliche Streams) funktionale Bibliotheksfunktionen 50 Luhn-Algorithmus in Java 8 Variante

26 Funktionale Erweiterungen für Java Project Lombok 52 Javaslang "Javaslang is a functional library for Java 8+ that provides persistent data types and functional control structures." Persistent Data Structures LinkedList, Queue, Sorted Set, Stream Tuple, Values (Option, Try, Lazy, Either, ) Pattern Matching Functions, CheckedFunctions, Lifting (Exceptions fangen) Currying, Partial Application, Composition Monaden, Zipping, 57 26

27 58 Javaslang: Currying 60 27

28 Javaslang: Partielle Funktionsaufrufe und Komposition 61 Luhn-Algorithmus in Java 8 mit Javaslang 63 28

29 Fazit Foto von Marco Montoya, CC0 Public Domain Lizenz, 64 Foto von Hans Braxmeier, CC0 Public Domain Lizenz,

30 + 66 Links Code-Beispiele Learn You a Haskell for Great Good! LYAH (Learn You a Haskell) adaptions for Frege Onlinekurs TU Delft (FP 101):

31 Links Javaslang Project Lombok Functional Java 68 Literaturhinweise Functional Programming in Java: Harnessing the Power Of Java 8 Lambda Expressions Venkat Subramaniam The Pragmatic Programmers, Erscheinungsdatum: Februar 2014 ISBN: Sprache: Englisch Mastering Lambdas Maurice Naftalin Oracle Press Erscheinungsdatum: Oktober 2014 ISBN: Sprache: Englisch 69 31

32 Literaturhinweise Learn You a Haskell for Great Good!: A Beginner's Guide Miran Lipovaca No Starch Press, Erscheinungsdatum: April 2011 ISBN: Sprache: Englisch Real World Haskell Bryan O'Sullivan und John Goerzen O'Reilly, Erscheinungsdatum: 2010 ISBN: Sprache: Englisch 70?? Fragen??? Orientation Objects GmbH Weinheimer Str Mannheim info@oio.de?? 71 32

33 Vielen Dank für Ihre Aufmerksamkeit! Orientation in Objects GmbH Weinheimer Str Mannheim 33

JVM Functional Language Battle

JVM Functional Language Battle JVM Functional Language Battle Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Ihr Sprecher Falk Sippach (@sippsack) Trainer, Berater, Entwickler Co-Organisator

Mehr

JVM Functional Language Battle

JVM Functional Language Battle JVM Functional Language Battle Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de @ Ihr Sprecher Falk Sippach (@sippsack) Trainer, Berater, Entwickler Co-Organisator

Mehr

JVM Functional Language Battle

JVM Functional Language Battle JVM Functional Language Battle Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Ihr Sprecher Falk Sippach (@sippsack) Trainer, Berater, Entwickler Co-Organisator

Mehr

JVM Functional Language Battle

JVM Functional Language Battle JVM Functional Language Battle Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Ihr Sprecher Falk Sippach (@sippsack) Trainer, Berater, Entwickler Co-Organisator

Mehr

Funktionale Programmierung geht auch mit Java!

Funktionale Programmierung geht auch mit Java! Funktionale Programmierung geht auch mit Java! Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de 1 Ihr Sprecher Falk Sippach (@sippsack) Trainer, Berater,

Mehr

Ant + Ivy Building with dependencies

Ant + Ivy Building with dependencies Ant + Ivy Building with dependencies Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Björn Feustel Version: 1.0 www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software Factory

Mehr

Google Collections. Gliederung. Los geht s... Praktische Helferlein Collections Wie geht s weiter? Version: 1.0. Orientation in Objects GmbH

Google Collections. Gliederung. Los geht s... Praktische Helferlein Collections Wie geht s weiter? Version: 1.0. Orientation in Objects GmbH Google Collections Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Gliederung Los geht s... Praktische Helferlein Collections Wie geht s weiter? 2009 Orientation

Mehr

(Building) Flexible Functional Programming Interfaces. Von Amos Treiber

(Building) Flexible Functional Programming Interfaces. Von Amos Treiber (Building) Flexible Functional Programming Interfaces Von Amos Treiber Gliederung Funktionale Programmierung Einführung Aspekte Vergleich: Funktional vs Imperativ Bending the language towards the problem

Mehr

WS 2012/2013. Robert Giegerich. 21. November 2012

WS 2012/2013. Robert Giegerich. 21. November 2012 WS 2012/2013 Robert AG Praktische Informatik 21. November 2012 Funktionen als Bürger erster Klasse Funktionen definieren kann man in jeder Programmiersprache. Eine funktionalen Programmiersprache erlaubt

Mehr

Legacy Code meistern in x einfachen Schritten

Legacy Code meistern in x einfachen Schritten Legacy Code meistern in x einfachen Schritten Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Über mich Falk Sippach (@sippsack) Trainer, Berater, Entwickler

Mehr

Legacy Code meistern in x einfachen Schritten

Legacy Code meistern in x einfachen Schritten Legacy Code meistern in x einfachen Schritten Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Über mich Falk Sippach (@sippsack) Trainer, Berater, Entwickler

Mehr

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung Gliederung n Teil I: Einleitung und Grundbegriffe l 1. Organisatorisches l 2. Grundlagen von Programmiersprachen n Teil II: Imperative und objektorientierte Programmierung l 1. Grundelemente der Programmierung

Mehr

VL06: Haskell (Funktionen höherer Ordnung, Currying)

VL06: Haskell (Funktionen höherer Ordnung, Currying) VL06: Haskell (Funktionen höherer Ordnung, Currying) IFM 5.3 Spezielle Methoden der Programmierung Carsten Gips, FH Bielefeld 18.05.2015 Wiederholung Wiederholung Wie können Sie die ersten n Elemente einer

Mehr

Legacy Code meistern in x einfachen Schritten

Legacy Code meistern in x einfachen Schritten Legacy Code meistern in x einfachen Schritten Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Abstract In einer idealen Welt würden wir nur "neuen" Code

Mehr

Legacy Code meistern in x einfachen Schritten

Legacy Code meistern in x einfachen Schritten Legacy Code meistern in x einfachen Schritten Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Abstract In einer idealen Welt würden wir nur "neuen" Code

Mehr

Funktionale Programmierung mit modernem C++ Rainer Grimm Schulungen, Coaching und Technologieberatung

Funktionale Programmierung mit modernem C++ Rainer Grimm Schulungen, Coaching und Technologieberatung Funktionale Programmierung mit modernem C++ Rainer Grimm Schulungen, Coaching und Technologieberatung Funktionale Programmierung in modernem C++ Funktional in C++ Warum Funktional? Definition Was fehlt

Mehr

Haskell for Hackers... or why functional programming matters

Haskell for Hackers... or why functional programming matters ... or why functional programming matters Franz Pletz CCC München 27-06-2009 @ GPN8 Fahrplan Ablauf Motivation 1 Ablauf Motivation 2 3 4 Ablauf Ablauf Motivation bei Fragen/Unklarheiten:

Mehr

WS 2013/2014. Robert Giegerich. 11. Dezember 2013

WS 2013/2014. Robert Giegerich. 11. Dezember 2013 WS 2013/2014 Robert AG Praktische Informatik 11. Dezember 2013 höherer Ordnung Worum geht es heute? In Haskell gibt es, die als Argument haben oder als Ergebnis liefern. Diese nennt man höherer Ordnung.

Mehr

Programmierparadigmen und Sprachen

Programmierparadigmen und Sprachen Fakultät Informatik Institut für Software- und Multimediatechnik Professur Softwaretechnologie Programmierparadigmen und Sprachen Scala Paul Henke Dresden, 07.05.2009 Gliederung Hello World Scala? Features

Mehr

Grundlegende Datentypen

Grundlegende Datentypen Grundlegende Datentypen Funktionale Programmierung Prof. Dr. Oliver Braun Letzte Änderung: 22.10.2018 10:53 Grundlegende Datentypen 1/21 Typen in Haskell ist alles streng typisiert Haskell verfügt über

Mehr

WS 2013/2014. Robert Giegerich. 11. Dezember 2013

WS 2013/2014. Robert Giegerich. 11. Dezember 2013 WS 2013/2014 Robert AG Praktische Informatik 11. Dezember 2013 höherer Ordnung Worum geht es heute? In Haskell gibt es, die als Argument haben oder als Ergebnis liefern. Diese nennt man höherer Ordnung.

Mehr

Funktionale Programmiersprachen

Funktionale Programmiersprachen Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte

Mehr

Last- und Stresstest mit the Grinder 3

Last- und Stresstest mit the Grinder 3 Last- und Stresstest mit the Grinder 3 Orientation in Objects GmbH oder auch mein Leben mit the Grinder 3 Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Java, XML und Open Source

Mehr

Alles außer Java! JVM-Sprachen sagen Happy Birthday

Alles außer Java! JVM-Sprachen sagen Happy Birthday JUGS 20 Jahre Java Alles außer Java! JVM-Sprachen sagen Happy Birthday Jan-Paul Buchwald BeOne Stuttgart GmbH 15 Jahre JVM Sprachen Jython Rhino 2001: JRuby Groovy Scala 2007: Clojure 1992 2002 2012 1992:

Mehr

III.1 Prinzipien der funktionalen Programmierung - 1 -

III.1 Prinzipien der funktionalen Programmierung - 1 - 1. Prinzipien der funktionalen Programmierung 2. Deklarationen 3. Ausdrücke 4. Muster (Patterns) 5. Typen und Datenstrukturen 6. Funktionale Programmiertechniken III.1 Prinzipien der funktionalen Programmierung

Mehr

Struts 2 Das Imperium schlägt zurück?

Struts 2 Das Imperium schlägt zurück? Struts 2 Das Imperium schlägt zurück? Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Tobias Kieninger www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software

Mehr

Funktionale Konzepte in objektorientierten Sprachen LAMBDAS / CLOSURES

Funktionale Konzepte in objektorientierten Sprachen LAMBDAS / CLOSURES Funktionale Konzepte in objektorientierten Sprachen LAMBDAS / CLOSURES Motivation Überblick Was macht Funktionale Programmierung aus? Sind Funktionale Programmierung und Objektorientierte Programmierung

Mehr

Funktionale Programmierung mit modernem C++ Rainer Grimm Schulungen, Coaching und Technologieberatung

Funktionale Programmierung mit modernem C++ Rainer Grimm Schulungen, Coaching und Technologieberatung Funktionale Programmierung mit modernem C++ Rainer Grimm Schulungen, Coaching und Technologieberatung Funktionale Programmierung in modernem C++ Funktional in C++ Warum Funktional? Definition Charakteristiken

Mehr

Funktionales Programmieren mit objektorientierten Sprachen

Funktionales Programmieren mit objektorientierten Sprachen Funktionales Programmieren mit objektorientierten Sprachen Dr. Dieter Hofbauer d.hofbauer@ba-nordhessen.de Hochschule Darmstadt, WS 2008/09 p.1/21 Function Objects In funktionalen Sprachen (Haskell, ML,...

Mehr

SOLID für.net und JavaScript

SOLID für.net und JavaScript SOLID für.net und JavaScript www.binarygears.de Stefan Dirschnabel Twitter: @StefanDirschnab #dncgn SOFTWARE ENTWICKLUNG BERATUNG SCHULUNG 5 Prinzipien für das Design von Software Wartbarer Code Leicht

Mehr

Programmiertechnik II WS 2017/18

Programmiertechnik II WS 2017/18 Programmiertechnik II WS 2017/18 Fakultät Informatik Bachelor Angewandte Informatik Prof. Dr. Oliver Bittel bittel@htwg-konstanz.de www-home.htwg-konstanz.de/~bittel WS 17/18 Überblick OOP: Schnittstellen

Mehr

Programmiertechnik II SS Fakultät Informatik Bachelor Angewandte Informatik

Programmiertechnik II SS Fakultät Informatik Bachelor Angewandte Informatik Programmiertechnik II SS 2017 Fakultät Informatik Bachelor Angewandte Informatik Prof. Dr. Oliver Bittel bittel@htwg-konstanz.de www-home.htwg-konstanz.de/~bittel SS 2017 Überblick! OOP: Schnittstellen

Mehr

Programmiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 -

Programmiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 - Programmiersprachen: Klassifizierung und Methoden Programmier-Paradigmen Grundlagen der Programmierung 2 (1.C) - 1 - Programmiersprachen: Begriffe Syntax Beschreibung der Programme als Texte let xyz =

Mehr

TDLCR Test Driven Legacy Code Refactoring

TDLCR Test Driven Legacy Code Refactoring TDLCR Test Driven Legacy Code Refactoring Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Java Forum Nord Hannover, 20.10.2016 Version: 1.0 www.oio.de info@oio.de Abstract Bestandsanwendungen

Mehr

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1 Übergang von funktionaler zu OOP Algorithmen und Datenstrukturen II 1 Imperative vs. funktionale Programmierung Plakativ lassen sich folgende Aussagen treffen: funktional: imperativ: Berechnung von Werten

Mehr

Übersicht. Einführung in die Funktionale Programmierung: Einleitung & Motivation. Klassifizierung von Programmiersprachen (1)

Übersicht. Einführung in die Funktionale Programmierung: Einleitung & Motivation. Klassifizierung von Programmiersprachen (1) Stand der Folien: 18. Oktober 2010 Motivation Funktionale Programmiersprachen Haskell Übersicht Einführung in die Funktionale Programmierung: Einleitung & Motivation Dr. David Sabel 1 Motivation Übersicht

Mehr

Beispiel: Hamming-Folge Erzeuge eine Folge X = x 0,x 2,... mit folgenden Eigenschaften: 1. x i+1 > x i für alle i

Beispiel: Hamming-Folge Erzeuge eine Folge X = x 0,x 2,... mit folgenden Eigenschaften: 1. x i+1 > x i für alle i Beispiel: Hamming-Folge Erzeuge eine Folge X = x 0,x 2,... mit folgenden Eigenschaften: 1. x i+1 > x i für alle i FP-8.7 2. x 0 = 1 3. Falls x in der Folge X auftritt, dann auch 2x, 3x und 5x. 4. Nur die

Mehr

Funktionale Programmierung Mehr funktionale Muster

Funktionale Programmierung Mehr funktionale Muster Mehr funktionale Muster Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 07.12.2017 06:56 Inhaltsverzeichnis Pattern Matching..................................

Mehr

Objekt-Funktionale Programmierung. am Beispiel von SCALA. Thorsten Jolitz

Objekt-Funktionale Programmierung. am Beispiel von SCALA. Thorsten Jolitz Objekt-Funktionale Programmierung am Beispiel von SCALA Thorsten Jolitz 1. Auflage 2012 Inhaltsverzeichnis 1. Einleitung 1 1. Ausgangspunkt Imperative Programmierung 5 2. Elemente der Imperativen Programmierung

Mehr

Praktische Informatik 3: Funktionale Programmierung Vorlesung 13 vom : Scala Eine praktische Einführung

Praktische Informatik 3: Funktionale Programmierung Vorlesung 13 vom : Scala Eine praktische Einführung 09:29:47 2017-01-25 1 [18] Praktische Informatik 3: Funktionale Programmierung Vorlesung 13 vom 24.01.17: Scala Eine praktische Einführung Christoph Lüth Universität Bremen Wintersemester 2016/17 PI3 WS

Mehr

Grundlegende Datentypen

Grundlegende Datentypen Grundlegende Datentypen (Funktionale Programmierung) Prof. Dr. Oliver Braun Letzte Änderung: 18.03.2018 21:08 Grundlegende Datentypen 1/16 Typen in Haskell ist alles streng typisiert Haskell verfügt über

Mehr

Funktionale Programmierung

Funktionale Programmierung Schleifen 1 Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 3 Teil I Jedem Anfang wohnt ein Zauber inne 4 Über mich Diplom in Informatik in Saarbrücken

Mehr

Praktische Informatik 3: Funktionale Programmierung Vorlesung 13 vom : Scala Eine praktische Einführung

Praktische Informatik 3: Funktionale Programmierung Vorlesung 13 vom : Scala Eine praktische Einführung 15:59:34 2019-01-22 1 [17] Praktische Informatik 3: Funktionale Programmierung Vorlesung 13 vom 22.01.19: Scala Eine praktische Einführung Christoph Lüth Universität Bremen Wintersemester 2018/19 PI3 WS

Mehr

Angriff auf den Platzhirsch

Angriff auf den Platzhirsch Angriff auf den Platzhirsch JSFTemplating, das bessere Facelets? Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 www.oio.de info@oio.de Java, XML und Open Source seit 1998 )

Mehr

Ausdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI

Ausdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI Ausdrücke in Scala Funktionale Programmierung Christoph Knabe FB VI 17.10.2014 Inhalt Einfache Ausdrücke Infix-Notation für Methodenaufruf Sonderzeichen in Bezeichnern Schlüsselwörter Konstanten Variablen

Mehr

Funktionale Programmierung ALP I. Funktionen höherer Ordnung SS Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Funktionale Programmierung ALP I. Funktionen höherer Ordnung SS Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda ALP I SS 2011 Funktionstypen Funktionen haben einen Datentyp, der folgende allgemeine Form hat: functionname :: T 1 -> T 2, wobei T 1, T 2 wiederum beliebige Datentypen sind Beispiel: T 1 T 2 Der Datentyp

Mehr

Grundlegende Datentypen

Grundlegende Datentypen Funktionale Programmierung Grundlegende Datentypen Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 14.11.2017 15:37 Inhaltsverzeichnis Typen........................................

Mehr

WS 2011/2012. Georg Sauthoff November 2011

WS 2011/2012. Georg Sauthoff November 2011 WS 2011/2012 Georg 1 AG Praktische Informatik 22. November 2011 1 gsauthof@techfak.uni-bielefeld.de Vorstellung der abgaben aus den Tutorien. Sieb-Beispiel Siehe Tafel (Auswertungsbeispiel) Sieb-Beispiel

Mehr

Atlassian Git Essentials Nahtlose Entwicklungsworkflows aus einer Hand

Atlassian Git Essentials Nahtlose Entwicklungsworkflows aus einer Hand Nahtlose Entwicklungsworkflows aus einer Hand Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software Factory )

Mehr

Kontinuierliche Architekturdokumentation im agilen Umfeld

Kontinuierliche Architekturdokumentation im agilen Umfeld Kontinuierliche Architekturdokumentation im agilen Umfeld Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Ihr Sprecher Falk Sippach (@sippsack) Trainer,

Mehr

Pre-tested commit 2.0 mit Gerrit und Jenkins

Pre-tested commit 2.0 mit Gerrit und Jenkins Pre-tested commit.0 mit und Orientation in Objects GmbH Weinheimer Str. 68 6809 Mannheim Steffen Schäfer Steffen Schluff Version:.0 www.oio.de info@oio.de Gliederung Pre-tested commit und Pre-tested commit

Mehr

Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten.

Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten. 4.5.5 Rekursive Typen Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten. datatype IntList = Nil Cons o f ( i n t IntList ) ; Damit

Mehr

Einführung in Funktionale Programmierung. Klassifizierung von Programmierparadigmen und -sprachen. Einleitung & Motivation

Einführung in Funktionale Programmierung. Klassifizierung von Programmierparadigmen und -sprachen. Einleitung & Motivation Einführung in Funktionale Programmierung Einleitung & Motivation PD Dr. David Sabel Klassifizierung von Programmierparadigmen und -sprachen Insbesondere: Was unterscheidet Funktionale Programmiersprachen

Mehr

Funktionale Programmierung (in Clojure)

Funktionale Programmierung (in Clojure) Funktionale Programmierung (in Clojure) Einführung Burkhardt Renz Fachbereich MNI Technische Hochschule Mittelhessen Wintersemester 2014/15 Übersicht Paradigmen von Programmiersprachen Paradigmen von Programmiersprachen

Mehr

Effektiver Einsatz von Code-Reviews

Effektiver Einsatz von Code-Reviews Effektiver Einsatz von Code-Reviews Version: 1.4 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de 18. Java Forum Stuttgart 2015 Ihr Sprecher Thorsten Maier Trainer,

Mehr

Praktische Informatik 3

Praktische Informatik 3 Praktische Informatik 3 Christian Maeder WS 03/04 Vorlesung vom 12.1.2004: Ein/Ausgabe in funktionalen Sprachen Vorlesung vom 12.1.2004: Ein/Ausgabe in funktionalen Sprachen 3 Inhalt Wo ist das Problem?

Mehr

Funktionale Programmierung Grundlegende Datentypen

Funktionale Programmierung Grundlegende Datentypen Grundlegende Datentypen Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 06.11.2017 16:45 Inhaltsverzeichnis Typen........................................

Mehr

Programmierparadigmen

Programmierparadigmen Programmierparadigmen Paradigma = Denkweise oder Art der Weltanschauung klassische Einteilung: Programmiersprache imperativ deklarativ prozedural objektorientiert funktional logisch Zusammenhänge tatsächlich

Mehr

Funktionale Programmierung mit C++

Funktionale Programmierung mit C++ Funktionale Programmierung mit C++ Überblick Programmierung in funktionaler Art Warum funktionale Programmierung? Was ist funktionale Programmierung? Charakteristiken funktionaler Programmierung Was fehlt

Mehr

Berechnungsschemata: Funktion als Parameter abstrahiert Operation im Schema, wird bei Aufruf des Schemas konkretisiert

Berechnungsschemata: Funktion als Parameter abstrahiert Operation im Schema, wird bei Aufruf des Schemas konkretisiert 6. Funktionen als Daten, Übersicht Orthogonales Typsystem: Funktionen sind beliebig mit anderen Typen kombinierbar Notation für Funktionswerte (Lambda-Ausdruck): fn (z,k) => z*k Datenstrukturen mit Funktionen

Mehr

Programmierparadigmen A01 OOP. Programmierparadigmen

Programmierparadigmen A01 OOP. Programmierparadigmen 2013-10-09 Programmierparadigmen 1 185.A01 OOP Programmierparadigmen 2013-10-09 Programmierparadigmen 2 OOP Klassische Programmierparadigmen Paradigma = Denkweise oder Art der Weltanschauung klassische

Mehr

Basiskonstrukte von Haskell

Basiskonstrukte von Haskell Basiskonstrukte von Haskell PD Dr. David Sabel Goethe-Universität Frankfurt am Main 29. September 2015 Basistypen und Operationen Ganzzahlen: Int = Ganzzahlen beschränkter Länge Integer = Ganzzahlen beliebiger

Mehr

Hibernate Search. Unterstützung laufender Java Projekte. Perfect Match Rent-a-team Coaching on the project Inhouse Outsourcing

Hibernate Search. Unterstützung laufender Java Projekte. Perfect Match Rent-a-team Coaching on the project Inhouse Outsourcing Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software Factory ) ) Object Rangers ) ) Competence Center) Schlüsselfertige

Mehr

Gliederung. Funktionale Programmierung. Pattern matching in Haskell. Pattern matching in ERLANG. Materialien zur Vorlesung

Gliederung. Funktionale Programmierung. Pattern matching in Haskell. Pattern matching in ERLANG. Materialien zur Vorlesung Gliederung Funktionale Programmierung Materialien zur Vorlesung D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Sommer 2011, 7.

Mehr

Prof. Dr. Ulrich Hoffmann, Prof. Dr. Uwe Schmidt

Prof. Dr. Ulrich Hoffmann, Prof. Dr. Uwe Schmidt Informatik Seminar WS 2009/2010 Prof. Dr. Ulrich Hoffmann, Prof. Dr. Uwe Schmidt Lisp in der JVM Michael Krüger (inf6065) 1 Übersicht 1. Hintergrund 2. Designziele 3. Spracheigenschaften 4. Klassenanalyse

Mehr

Typklassen, Eingabe und Monaden In Haskell

Typklassen, Eingabe und Monaden In Haskell Typklassen, Eingabe und Monaden In Haskell Felix Rahmati Jonathan Beierle 1 Einleitung In dieser Ausarbeitung befassen wir uns mit den Vorteilen einiger fortgeschrittener Konzepte der funktionalen Programmierung

Mehr

Workshop Einführung in die Sprache Haskell

Workshop Einführung in die Sprache Haskell Workshop Einführung in die Sprache Haskell Nils Rexin, Marcellus Siegburg und Alexander Bau Fakultät für Informatik, Mathematik und Naturwissenschaften Hochschule für Technik, Wirtschaft und Kultur Leipzig

Mehr

Softwaretechnik. Vorlesung 02: Spezifikation mit Typen. Peter Thiemann SS Universität Freiburg, Germany

Softwaretechnik. Vorlesung 02: Spezifikation mit Typen. Peter Thiemann SS Universität Freiburg, Germany Softwaretechnik Vorlesung 02: Spezifikation mit Typen Peter Thiemann Universität Freiburg, Germany SS 2008 Peter Thiemann (Univ. Freiburg) Softwaretechnik SWT 1 / 21 Inhalt Spezifikation mit Typen Exkursion:

Mehr

11. Funktionale Konzepte in Java

11. Funktionale Konzepte in Java Funktionale vs. Imperative Programmierung 11. Funktionale Konzepte in Java Funktionale Programmierung, Lambda Ausdrücke, Datenströme, Pipelines Imperative Konzepte Ausführen von Anweisungen Zustand (z.b.

Mehr

Funktionale Programmierung. Das Funktionale Quiz. Das Funktionale Quiz. Das Funktionale Quiz

Funktionale Programmierung. Das Funktionale Quiz. Das Funktionale Quiz. Das Funktionale Quiz Funktionale Programmierung Das Funktionale Quiz 31.5.2005 Nenne eine Gemeinsamkeit zwischen Typklassen und OO-Klassen Das Funktionale Quiz Das Funktionale Quiz Nenne einen Unterschied zwischen Typklassen

Mehr

Einbindung dynamischer Sprachen in Java

Einbindung dynamischer Sprachen in Java Einbindung dynamischer Sprachen in Java Orientation in Objects GmbH Steffen Schluff Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Gliederung Einleitung Einsatzszenarien Java Scripting

Mehr

Grundprinzipien der funktionalen Programmierung

Grundprinzipien der funktionalen Programmierung Grundprinzipien der funktionalen Programmierung Funktionen haben keine Seiteneffekte Eine Funktion berechnet einen Ausgabewert der nur von den Eingabewerten abhängt: 12 inputs + output 46 34 2 Nicht nur

Mehr

Haskell. (Compiler) Prof. Dr. Oliver Braun. Letzte Änderung: :58. Haskell 1/28

Haskell. (Compiler) Prof. Dr. Oliver Braun. Letzte Änderung: :58. Haskell 1/28 Haskell (Compiler) Prof. Dr. Oliver Braun Letzte Änderung: 03.05.2017 14:58 Haskell 1/28 Haskell vs. imperative Sprachen https://www.haskell.org/ rein funktionale Sprache funktionale Programmierung ==

Mehr

Funktionen höherer Ordnung. 3. Dezember 2014

Funktionen höherer Ordnung. 3. Dezember 2014 höherer Ordnung Universität Bielefeld AG Praktische Informatik 3. Dezember 2014 höherer Ordnung Worum geht es heute? In Haskell gibt es, die als Argument haben oder als Ergebnis liefern. Diese nennt man

Mehr

Programmiersprachen Proseminar

Programmiersprachen Proseminar Programmiersprachen Proseminar Prof. Dr. Manfred Schmidt-Schauß Künstliche Intelligenz/Softwaretechnologie Programmiersprachen Proseminar SS 2005 p.1/25 Personen Prof. Dr. Manfred Schmidt-Schauß, Zimmer

Mehr

FACHHOCHSCHULE MANNHEIM

FACHHOCHSCHULE MANNHEIM Objektorientierte Programmierung 3. Vorlesung Prof. Dr. Peter Knauber FACHHOCHSCHULE MANNHEIM Hochschule für Technik und Gestaltung Wiederholung: Begriffsübersicht Strukturierte vs. objektorientierte Programmierung

Mehr

Lebendige Architektur- Dokumentation - kontinuierlich und effizient

Lebendige Architektur- Dokumentation - kontinuierlich und effizient Lebendige Architektur- Dokumentation - kontinuierlich und effizient Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Ihr Sprecher Falk Sippach (@sippsack)

Mehr

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1 Übergang von funktionaler zu OOP Algorithmen und Datenstrukturen II 1 Imperative vs. funktionale Programmierung Plakativ lassen sich folgende Aussagen treffen: funktional: imperativ: Berechnung von Werten

Mehr

1 Funktionale vs. Imperative Programmierung

1 Funktionale vs. Imperative Programmierung 1 Funktionale vs. Imperative Programmierung 1.1 Einführung Programme einer funktionalen Programmiersprache (functional programming language, FPL) bestehen ausschließlich aus Funktionsdefinitionen und Funktionsaufrufen.

Mehr

Grundlagen der Programmierung 2 (1.A)

Grundlagen der Programmierung 2 (1.A) Grundlagen der Programmierung 2 (1.A) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 18. April 2007 Grundlagen der Programmierung 2: Geplanter Inhalt der ersten Hälfte

Mehr

Konsequent agile Entwicklung mit funk4onaler Programmierung. Michael Sperber

Konsequent agile Entwicklung mit funk4onaler Programmierung. Michael Sperber Konsequent agile Entwicklung mit funk4onaler Programmierung Michael Sperber Individualso4ware branchenunabhängig Scala, Clojure, Erlang, Haskell, F# Schulungen, Coaching www.acave- group.de funkaonale-

Mehr

Behutsame Modernisierung

Behutsame Modernisierung Software Evolution mit Legacy Systemen Forum Forschungsförderung / ViSEK Trends im Software Engineering Software Evolution mit Legacy Systemen Behutsame Modernisierung Jan Wloka

Mehr

Grundlagen der Programmierung 2 (1.A)

Grundlagen der Programmierung 2 (1.A) Grundlagen der Programmierung 2 (1.A) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 20. April 2006 Grundlagen der Programmierung 2: Geplanter Inhalt der ersten Hälfte

Mehr

13. Funktionale Konzepte in Java

13. Funktionale Konzepte in Java Funktionale vs. Imperative Programmierung 13. Funktionale Konzepte in Java Funktionale Programmierung, Lambda Ausdrücke, Datenströme, Pipelines Imperative Konzepte Ausführen von Anweisungen Zustand (z.b.

Mehr

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners

Mehr

Objektorientierte Programmierung II

Objektorientierte Programmierung II Objektorientierte Programmierung II OOP I Erlaubt Entwicklers, im Problemraum zu denken und zu arbeiten. Das Problem wird in eine Menge von Objekten zerlegt. Objekte wirken aufeinander, um das Problem

Mehr

Kontinuierliche Architekturdokumentation im agilen Umfeld

Kontinuierliche Architekturdokumentation im agilen Umfeld Kontinuierliche Architekturdokumentation im agilen Umfeld Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Ihr Sprecher Falk Sippach (@sippsack) Trainer,

Mehr

Einführung in die Funktionale Programmierung

Einführung in die Funktionale Programmierung Einführung in die Funktionale Programmierung Am Beispiel von OCaml Michael Dienert 12. Oktober 2018 Inhaltsverzeichnis 1 Welche funktionale Sprache wählen wir? 2 1.1 Welche funktionale Sprache soll ich

Mehr

Motivation Von Funktoren, Komposition, Applikation Zu Monoiden Die Monade Zusammenfassung. Monaden für alle. Franz Pletz

Motivation Von Funktoren, Komposition, Applikation Zu Monoiden Die Monade Zusammenfassung. Monaden für alle. Franz Pletz Monaden für alle Franz Pletz Chaos Computer Club München 13. Juni 2010, GPN10 Wieso, weshalb, warum? einige von euch haben sich sicher schon mal Haskell angeschaut und sind an Monaden

Mehr

Haskell für Mathematiker

Haskell für Mathematiker Haskell für Mathematiker Joachim Breitner AG Seminar Topology 12. Mai 2016, Karlsruhe LEHRSTUHL PROGRAMMIERPARADIGMEN 1 KIT 19.2.2016 University of the Joachim State ofbreitner Baden-Wuerttemberg - Haskell

Mehr

TypeScript JavaScript mit ohne Kopfschmerzen. Veit Weber 3. JUG Saxony Day Radebeul

TypeScript JavaScript mit ohne Kopfschmerzen. Veit Weber 3. JUG Saxony Day Radebeul TypeScript JavaScript mit ohne Kopfschmerzen Veit Weber 3. JUG Saxony Day 30.09.2016 Radebeul Über mich blog.pikodat.com veit_weber Workshops Apps AngularJS Java EE Agenda 01 02 03 Die Krankheit JavaScript

Mehr

Einführung in die Funktionale Programmierung: Einleitung & Motivation

Einführung in die Funktionale Programmierung: Einleitung & Motivation Einführung in die Funktionale Programmierung: Einleitung & Motivation Prof Dr. Manfred Schmidt-Schauß WS 2011/12 Stand der Folien: 25. Oktober 2011 Motivation Funktionale Programmiersprachen Haskell Übersicht

Mehr

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 - n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik n "Informatik" = Kunstwort aus Information

Mehr

Grundlagen der Programmierung 3 A

Grundlagen der Programmierung 3 A Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2016 Haskell, Typen, und Typberechnung Ziele: Haskells Typisierung Typisierungs-Regeln

Mehr

Inhaltsverzeichnis. Lothar Piepmeyer. Grundkurs funktionale Programmierung mit Scala ISBN:

Inhaltsverzeichnis. Lothar Piepmeyer. Grundkurs funktionale Programmierung mit Scala ISBN: Lothar Piepmeyer Grundkurs funktionale Programmierung mit Scala ISBN: 978-3-446-42092-2 Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-42092-2 sowie im Buchhandel. Carl Hanser

Mehr

SmallTalk - Eine kurze Einführung

SmallTalk - Eine kurze Einführung SmallTalk - Eine kurze Einführung Andreas Lochbihler Lehrstuhl Programmierparadigmen Universität Karlsruhe 15. Juni 2009 SmallTalk Entwickelt seit Anfang der 70er bei XEROX PARC Alan Kay, Dan Ingalls,

Mehr