SlideShare ist ein Scribd-Unternehmen logo
Prinzipien der funktionalen Programmierung
III.1 Prinzipien der funktionalen Programmierung - 1 -Christoph Santschi – dipl. natw. ETHZ
Kenntnis verschiedener Sprachen
 Eigene Ideen bei der Software-Entwicklung
können besser ausgedrückt werden
 Nötig, um in konkreten Projekten geeignete
Sprache auszuwählen
 Erleichtert das Erlernen weiterer
Programmiersprachen
 Nötig für den Entwurf neuer
Programmiersprachen
III.1 Prinzipien der funktionalen Programmierung - 2 -Christoph Santschi – dipl. natw. ETHZ
Übersicht
III.1 Prinzipien der funktionalen Programmierung - 3 -Christoph Santschi – dipl. natw. ETHZ
Imperative Sprachen Deklarative Sprachen
Folge von nacheinander ausgeführten
Anweisungen
• Spezifikation dessen, was berechnet
werden soll
• Compiler legt fest, wie Berechnung
verläuft
Prozedurale Sprachen
• Variablen, Zuweisungen
Kontrollstrukturen
Funktionale Sprachen
• keine Seiteneffekte
Rekursion
• Objektorientierte Sprachen
• Objekte und Klassen
• ADT und Vererbung
Logische Sprachen
• Regeln zur Definition von Relationen
Wichtige Programmiersprachen
prozedural objektorientiert funktional logisch
PL/1
1970
C
ML
Ada1980
C++
EiffelModula-3
1990
Java
Pascal
Algol 68
Ada 95
Smalltalk
Simula
Scheme
Miranda
Haskell
Prolog
1950
Fortran
Cobol1960 Algol 60
Lisp
III.1 Prinzipien der funktionalen Programmierung - 4 -Christoph Santschi – dipl. natw. ETHZ
Imperative Programmierung (Java)
Eingabe: Eine Liste x
Ausgabe: Länge der Liste x
Algorithmus:
1. Setze n = 0.
2. Falls x nicht die
leere Liste ist, dann:
a. Lösche das erste
Element von x.
a. Erhöhe n um 1.
b. Gehe zu Schritt 2.
3. Liefere n zurück.
class Element {
Vergleichbar wert;
Element next; ... }
public class Liste {
Element kopf;
...
static int len (Liste x) {
int n = 0;
while (x.kopf != null) {
x.kopf = x.kopf.next;
n = n + 1;
}
return n;
}
III.1 Prinzipien der funktionalen Programmierung - 5 -Christoph Santschi – dipl. natw. ETHZ
Kennzeichen imperativer Programmierung
 Programm besteht aus einzelnen Anweisungen,
die nacheinander abgearbeitet werden.
 Verschiedene Kontrollstrukturen, um
Programmablauf zu steuern.
 Abarbeitung einer Anweisung ändert Werte der
Variablen.
 Seiteneffekte
 Programmierer muss Speicherorganisation
bedenken
III.1 Prinzipien der funktionalen Programmierung - 6 -Christoph Santschi – dipl. natw. ETHZ
FunktionaleProgrammierung(Haskell)
A. Falls die Liste x leer ist, so ist len(x) = 0.
B. Falls die Liste x nicht leer ist und
"rest" die Liste x ohne ihr erstes Element ist,
so ist len(x) = 1 + len(rest).
Programm in Haskell:
len [] = 0
len (kopf : rest) = 1 + len rest
III.1 Prinzipien der funktionalen Programmierung - 7 -Christoph Santschi – dipl. natw. ETHZ
Ausführung funktionaler Programme
len [] = 0
len (kopf : rest) = 1 + len rest
len [15, 70, 36]
= 1 + len [70, 36]
= 1 + 1 + len [36]
= 1 + 1 + 1 + len []
= 1 + 1 + 1 + 0
= 3
III.1 Prinzipien der funktionalen Programmierung - 8 -
Kennzeichen funktionaler Programme
 Rekursion statt Schleifen
 Keine Seiteneffekte (referentielle Transparenz)
 Funktionen als gleichberechtigte Datenobjekte
(Funktionen höherer Ordnung)
 Verwendung von einer Funktions-Implementie-
rung für verschiedene Typen (Polymorphismus)
 Programme sind kürzer, klarer, besser zu warten,
zuverlässiger, schneller zu erstellen
III.1 Prinzipien der funktionalen Programmierung - 9 -Christoph Santschi – dipl. natw. ETHZ
FunktionaleProgrammierung(Haskell)
 Haskell-Interpreter Hugs
 Eingabe: Auszuwertender Ausdruck
 Ausgabe: Ergebnis des ausgewerteten Ausdrucks
 Bsp:
 Eingabe: len [15, 36, 70]
 Ausgabe: 3
 Interpreter
 führen jede Zeile des Programms nacheinander aus.
 Vorteil: Keine vorherige Übersetzung nötig, gut zur
Programmentwicklung geeignet.
 Nachteil: Ineffizienter als Compiler.
III.1 Prinzipien der funktionalen Programmierung - 10 -Christoph Santschi – dipl. natw. ETHZ

Weitere ähnliche Inhalte

Andere mochten auch

fvw online marketing day - Destinationsmarketing Direkt zum Ziel
fvw online marketing day - Destinationsmarketing Direkt zum Zielfvw online marketing day - Destinationsmarketing Direkt zum Ziel
fvw online marketing day - Destinationsmarketing Direkt zum Ziel
Martin Schobert
 
DAB Evotron - Technisches datenblatt evotron
DAB Evotron - Technisches datenblatt evotronDAB Evotron - Technisches datenblatt evotron
DAB Evotron - Technisches datenblatt evotron
Fornid-Deutschland
 
Dialnet
DialnetDialnet
Kunden gewinnen und binden mit Facebook
Kunden gewinnen und binden mit FacebookKunden gewinnen und binden mit Facebook
Kunden gewinnen und binden mit Facebook
Martin Szugat
 
Bkk advita - Das Natürliche leben / Imagebroschüre
Bkk advita - Das Natürliche leben / ImagebroschüreBkk advita - Das Natürliche leben / Imagebroschüre
Bkk advita - Das Natürliche leben / Imagebroschüre
BKK advita
 
Peter Scheurer: Grand Prix Bern1
Peter Scheurer: Grand Prix Bern1Peter Scheurer: Grand Prix Bern1
Peter Scheurer: Grand Prix Bern1Lokalrundfunktage
 
Online-Marketing & Recht - Die 3 wichtigsten Tipps im B2B-Marketing
Online-Marketing & Recht - Die 3 wichtigsten Tipps im B2B-MarketingOnline-Marketing & Recht - Die 3 wichtigsten Tipps im B2B-Marketing
Online-Marketing & Recht - Die 3 wichtigsten Tipps im B2B-Marketing
RESMEDIA - Anwälte für IT-IP-Medien
 
Referentenprofil Martin Szugat
Referentenprofil Martin SzugatReferentenprofil Martin Szugat
Referentenprofil Martin SzugatMartin Szugat
 
Via 02 2015 martin suter
Via 02 2015 martin suterVia 02 2015 martin suter
Via 02 2015 martin suter
Gaston Haas
 
Austin
AustinAustin
Making people talkabout...
Making people talkabout...Making people talkabout...
Making people talkabout...
ScribbleLive
 
DaFWEBKON-Freie Materialien finden, aber wie?
DaFWEBKON-Freie Materialien finden, aber wie?DaFWEBKON-Freie Materialien finden, aber wie?
DaFWEBKON-Freie Materialien finden, aber wie?
aquarana
 
Workshop social-media-dashboard 2010-3-25
Workshop social-media-dashboard 2010-3-25Workshop social-media-dashboard 2010-3-25
Workshop social-media-dashboard 2010-3-25Twittwoch e.V.
 
S m shah painters
S m shah paintersS m shah painters
S m shah painters
chirag chavda
 
#mmd15, Franz Buchenberger, Pylba GmbH
#mmd15, Franz Buchenberger, Pylba GmbH#mmd15, Franz Buchenberger, Pylba GmbH
#mmd15, Franz Buchenberger, Pylba GmbH
Lokalrundfunktage
 

Andere mochten auch (18)

PROFACTOR Gruppe | NANO
PROFACTOR Gruppe | NANOPROFACTOR Gruppe | NANO
PROFACTOR Gruppe | NANO
 
fvw online marketing day - Destinationsmarketing Direkt zum Ziel
fvw online marketing day - Destinationsmarketing Direkt zum Zielfvw online marketing day - Destinationsmarketing Direkt zum Ziel
fvw online marketing day - Destinationsmarketing Direkt zum Ziel
 
DAB Evotron - Technisches datenblatt evotron
DAB Evotron - Technisches datenblatt evotronDAB Evotron - Technisches datenblatt evotron
DAB Evotron - Technisches datenblatt evotron
 
Dialnet
DialnetDialnet
Dialnet
 
Joachim Helfer
Joachim HelferJoachim Helfer
Joachim Helfer
 
Kunden gewinnen und binden mit Facebook
Kunden gewinnen und binden mit FacebookKunden gewinnen und binden mit Facebook
Kunden gewinnen und binden mit Facebook
 
Bkk advita - Das Natürliche leben / Imagebroschüre
Bkk advita - Das Natürliche leben / ImagebroschüreBkk advita - Das Natürliche leben / Imagebroschüre
Bkk advita - Das Natürliche leben / Imagebroschüre
 
Peter Scheurer: Grand Prix Bern1
Peter Scheurer: Grand Prix Bern1Peter Scheurer: Grand Prix Bern1
Peter Scheurer: Grand Prix Bern1
 
Online-Marketing & Recht - Die 3 wichtigsten Tipps im B2B-Marketing
Online-Marketing & Recht - Die 3 wichtigsten Tipps im B2B-MarketingOnline-Marketing & Recht - Die 3 wichtigsten Tipps im B2B-Marketing
Online-Marketing & Recht - Die 3 wichtigsten Tipps im B2B-Marketing
 
Referentenprofil Martin Szugat
Referentenprofil Martin SzugatReferentenprofil Martin Szugat
Referentenprofil Martin Szugat
 
Via 02 2015 martin suter
Via 02 2015 martin suterVia 02 2015 martin suter
Via 02 2015 martin suter
 
Austin
AustinAustin
Austin
 
Making people talkabout...
Making people talkabout...Making people talkabout...
Making people talkabout...
 
DaFWEBKON-Freie Materialien finden, aber wie?
DaFWEBKON-Freie Materialien finden, aber wie?DaFWEBKON-Freie Materialien finden, aber wie?
DaFWEBKON-Freie Materialien finden, aber wie?
 
Workshop social-media-dashboard 2010-3-25
Workshop social-media-dashboard 2010-3-25Workshop social-media-dashboard 2010-3-25
Workshop social-media-dashboard 2010-3-25
 
S m shah painters
S m shah paintersS m shah painters
S m shah painters
 
Dirk Spannaus
Dirk SpannausDirk Spannaus
Dirk Spannaus
 
#mmd15, Franz Buchenberger, Pylba GmbH
#mmd15, Franz Buchenberger, Pylba GmbH#mmd15, Franz Buchenberger, Pylba GmbH
#mmd15, Franz Buchenberger, Pylba GmbH
 

Ähnlich wie Prinzipien funktionaler programmierung

Analyse-Methodik
Analyse-MethodikAnalyse-Methodik
Analyse-Methodik
Christoph Santschi
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NET
GFU Cyrus AG
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & Tools
Ulrich Krause
 
Funktionales Programmieren mit Clojure
Funktionales Programmieren mit ClojureFunktionales Programmieren mit Clojure
Funktionales Programmieren mit Clojure
Dr. Christian Betz
 
Beschreibungsebenen und computersysteme
Beschreibungsebenen und computersysteme    Beschreibungsebenen und computersysteme
Beschreibungsebenen und computersysteme
Abdelhamid81
 
Script hydroinformatik i
Script hydroinformatik iScript hydroinformatik i
Script hydroinformatik icuitla68
 

Ähnlich wie Prinzipien funktionaler programmierung (6)

Analyse-Methodik
Analyse-MethodikAnalyse-Methodik
Analyse-Methodik
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NET
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & Tools
 
Funktionales Programmieren mit Clojure
Funktionales Programmieren mit ClojureFunktionales Programmieren mit Clojure
Funktionales Programmieren mit Clojure
 
Beschreibungsebenen und computersysteme
Beschreibungsebenen und computersysteme    Beschreibungsebenen und computersysteme
Beschreibungsebenen und computersysteme
 
Script hydroinformatik i
Script hydroinformatik iScript hydroinformatik i
Script hydroinformatik i
 

Mehr von Christoph Santschi

Was uns wirklich nährt
Was uns wirklich nährtWas uns wirklich nährt
Was uns wirklich nährt
Christoph Santschi
 
Yaml
YamlYaml
Json - ideal for data interchange
Json - ideal for data interchangeJson - ideal for data interchange
Json - ideal for data interchange
Christoph Santschi
 
Self Assembly
Self AssemblySelf Assembly
Self Assembly
Christoph Santschi
 
Wasser und die Biochemie des Menschen
Wasser und die Biochemie des MenschenWasser und die Biochemie des Menschen
Wasser und die Biochemie des Menschen
Christoph Santschi
 
F sharp - an overview
F sharp - an overviewF sharp - an overview
F sharp - an overview
Christoph Santschi
 
Ernaehrung und Gesundheit
Ernaehrung und GesundheitErnaehrung und Gesundheit
Ernaehrung und Gesundheit
Christoph Santschi
 
Schlafstoerung
SchlafstoerungSchlafstoerung
Schlafstoerung
Christoph Santschi
 
Enzyme
EnzymeEnzyme
Natürliche Schmerzmittel
Natürliche SchmerzmittelNatürliche Schmerzmittel
Natürliche Schmerzmittel
Christoph Santschi
 
Die w fragen
Die w fragenDie w fragen
Die w fragen
Christoph Santschi
 
Vitamin D - das Sonnenvitamin
Vitamin D - das SonnenvitaminVitamin D - das Sonnenvitamin
Vitamin D - das Sonnenvitamin
Christoph Santschi
 
Standortbestimmung Ernährung - Wo sind wir?
Standortbestimmung Ernährung - Wo sind wir?Standortbestimmung Ernährung - Wo sind wir?
Standortbestimmung Ernährung - Wo sind wir?
Christoph Santschi
 
Ad(h)s und Ernaehrung
Ad(h)s und ErnaehrungAd(h)s und Ernaehrung
Ad(h)s und Ernaehrung
Christoph Santschi
 
Projektmanagement
ProjektmanagementProjektmanagement
Projektmanagement
Christoph Santschi
 

Mehr von Christoph Santschi (15)

Was uns wirklich nährt
Was uns wirklich nährtWas uns wirklich nährt
Was uns wirklich nährt
 
Yaml
YamlYaml
Yaml
 
Json - ideal for data interchange
Json - ideal for data interchangeJson - ideal for data interchange
Json - ideal for data interchange
 
Self Assembly
Self AssemblySelf Assembly
Self Assembly
 
Wasser und die Biochemie des Menschen
Wasser und die Biochemie des MenschenWasser und die Biochemie des Menschen
Wasser und die Biochemie des Menschen
 
F sharp - an overview
F sharp - an overviewF sharp - an overview
F sharp - an overview
 
Ernaehrung und Gesundheit
Ernaehrung und GesundheitErnaehrung und Gesundheit
Ernaehrung und Gesundheit
 
Schlafstoerung
SchlafstoerungSchlafstoerung
Schlafstoerung
 
Enzyme
EnzymeEnzyme
Enzyme
 
Natürliche Schmerzmittel
Natürliche SchmerzmittelNatürliche Schmerzmittel
Natürliche Schmerzmittel
 
Die w fragen
Die w fragenDie w fragen
Die w fragen
 
Vitamin D - das Sonnenvitamin
Vitamin D - das SonnenvitaminVitamin D - das Sonnenvitamin
Vitamin D - das Sonnenvitamin
 
Standortbestimmung Ernährung - Wo sind wir?
Standortbestimmung Ernährung - Wo sind wir?Standortbestimmung Ernährung - Wo sind wir?
Standortbestimmung Ernährung - Wo sind wir?
 
Ad(h)s und Ernaehrung
Ad(h)s und ErnaehrungAd(h)s und Ernaehrung
Ad(h)s und Ernaehrung
 
Projektmanagement
ProjektmanagementProjektmanagement
Projektmanagement
 

Prinzipien funktionaler programmierung

  • 1. Prinzipien der funktionalen Programmierung III.1 Prinzipien der funktionalen Programmierung - 1 -Christoph Santschi – dipl. natw. ETHZ
  • 2. Kenntnis verschiedener Sprachen  Eigene Ideen bei der Software-Entwicklung können besser ausgedrückt werden  Nötig, um in konkreten Projekten geeignete Sprache auszuwählen  Erleichtert das Erlernen weiterer Programmiersprachen  Nötig für den Entwurf neuer Programmiersprachen III.1 Prinzipien der funktionalen Programmierung - 2 -Christoph Santschi – dipl. natw. ETHZ
  • 3. Übersicht III.1 Prinzipien der funktionalen Programmierung - 3 -Christoph Santschi – dipl. natw. ETHZ Imperative Sprachen Deklarative Sprachen Folge von nacheinander ausgeführten Anweisungen • Spezifikation dessen, was berechnet werden soll • Compiler legt fest, wie Berechnung verläuft Prozedurale Sprachen • Variablen, Zuweisungen Kontrollstrukturen Funktionale Sprachen • keine Seiteneffekte Rekursion • Objektorientierte Sprachen • Objekte und Klassen • ADT und Vererbung Logische Sprachen • Regeln zur Definition von Relationen
  • 4. Wichtige Programmiersprachen prozedural objektorientiert funktional logisch PL/1 1970 C ML Ada1980 C++ EiffelModula-3 1990 Java Pascal Algol 68 Ada 95 Smalltalk Simula Scheme Miranda Haskell Prolog 1950 Fortran Cobol1960 Algol 60 Lisp III.1 Prinzipien der funktionalen Programmierung - 4 -Christoph Santschi – dipl. natw. ETHZ
  • 5. Imperative Programmierung (Java) Eingabe: Eine Liste x Ausgabe: Länge der Liste x Algorithmus: 1. Setze n = 0. 2. Falls x nicht die leere Liste ist, dann: a. Lösche das erste Element von x. a. Erhöhe n um 1. b. Gehe zu Schritt 2. 3. Liefere n zurück. class Element { Vergleichbar wert; Element next; ... } public class Liste { Element kopf; ... static int len (Liste x) { int n = 0; while (x.kopf != null) { x.kopf = x.kopf.next; n = n + 1; } return n; } III.1 Prinzipien der funktionalen Programmierung - 5 -Christoph Santschi – dipl. natw. ETHZ
  • 6. Kennzeichen imperativer Programmierung  Programm besteht aus einzelnen Anweisungen, die nacheinander abgearbeitet werden.  Verschiedene Kontrollstrukturen, um Programmablauf zu steuern.  Abarbeitung einer Anweisung ändert Werte der Variablen.  Seiteneffekte  Programmierer muss Speicherorganisation bedenken III.1 Prinzipien der funktionalen Programmierung - 6 -Christoph Santschi – dipl. natw. ETHZ
  • 7. FunktionaleProgrammierung(Haskell) A. Falls die Liste x leer ist, so ist len(x) = 0. B. Falls die Liste x nicht leer ist und "rest" die Liste x ohne ihr erstes Element ist, so ist len(x) = 1 + len(rest). Programm in Haskell: len [] = 0 len (kopf : rest) = 1 + len rest III.1 Prinzipien der funktionalen Programmierung - 7 -Christoph Santschi – dipl. natw. ETHZ
  • 8. Ausführung funktionaler Programme len [] = 0 len (kopf : rest) = 1 + len rest len [15, 70, 36] = 1 + len [70, 36] = 1 + 1 + len [36] = 1 + 1 + 1 + len [] = 1 + 1 + 1 + 0 = 3 III.1 Prinzipien der funktionalen Programmierung - 8 -
  • 9. Kennzeichen funktionaler Programme  Rekursion statt Schleifen  Keine Seiteneffekte (referentielle Transparenz)  Funktionen als gleichberechtigte Datenobjekte (Funktionen höherer Ordnung)  Verwendung von einer Funktions-Implementie- rung für verschiedene Typen (Polymorphismus)  Programme sind kürzer, klarer, besser zu warten, zuverlässiger, schneller zu erstellen III.1 Prinzipien der funktionalen Programmierung - 9 -Christoph Santschi – dipl. natw. ETHZ
  • 10. FunktionaleProgrammierung(Haskell)  Haskell-Interpreter Hugs  Eingabe: Auszuwertender Ausdruck  Ausgabe: Ergebnis des ausgewerteten Ausdrucks  Bsp:  Eingabe: len [15, 36, 70]  Ausgabe: 3  Interpreter  führen jede Zeile des Programms nacheinander aus.  Vorteil: Keine vorherige Übersetzung nötig, gut zur Programmentwicklung geeignet.  Nachteil: Ineffizienter als Compiler. III.1 Prinzipien der funktionalen Programmierung - 10 -Christoph Santschi – dipl. natw. ETHZ