home Grundlagen der Funktionalen Programmierung: Einleitung Prof. Dr. Uwe Schmidt FH Wedel

Einleitung

weiter

weiter

Probleme bei der Software-Entwickung

merke
Wie kann man die Größe und Komplexität von heutiger Software beherrschen?
weiter
merke
Wie kann man Zeit und Kosten bei der Software-Entwicklung reduzieren?
weiter
merke
Wie kann man das Vertrauen in die Zuverlässigkeit und Korrektheit von Programmen verbessern?

weiter

Programmiersprachen

Lösungsansatz
Neue Programmiersprachen mit folgenden Eigenschaften
weiter
merke
Ermöglichung des Schreibens von Programmen in einem klaren und konsistenten Stil und mit einem hohen Abstraktionsgrad
weiter
merke
Unterstützung der Entwicklung von wiederverwendbaren Komponenten
weiter
merke
Unterstützung von formaler Verifikation
weiter
merke
Schnelle Entwicklung von Prototypen (Rapid Prototyping)
weiter
merke
Einsatz von mächtigen Software-Werkzeugen
Testgeneratoren,
Korrektheitsbeweiser,
frühe Fehlererkennung,
...
weiter
gut
Funktionale Sprachen bieten einen mächtigen und eleganten Rahmen zum Erreichen dieser Ziele

weiter

Definition

Funktionale Programmiersprache
weiter
Funktionen
im mathematischen Sinne
liefern für ein Argument immer das gleiche Resultat
weiter
Variablen
im mathematischen Sinne
stehen an jedem Vorkommen für den gleichen Wert
weiter
Berechnung
besteht aus dem Anwenden von Funktionen auf Werte
weiter
Definition
Eine funktionale Sprache unterstützt diese Konzepte
weiter

weiter

Gegensatz

Imperative Programmiersprache
weiter
Programm-
Variable
Ein Behälter für die Speicherung eines Wertes
weiter
Zuweisung
das Speichern eines Wertes in einem Behälter ist DAS zentrale Konzept
weiter
Programm
besteht aus einer Folge von Verzweigungen und Zuweisungen
weiter
schlecht
Sehr viel schwerer zu verstehen und zu beherrschen

weiter

Historie

1930s
Alonzo Church: Lambda-Kalül
weiter
1950s
John McCarthy: LISP (mit Zuweisungen)
weiter
1960s
Peter Landin: 1. rein funktionale Programmiersprache
weiter
1970s
John Backus: FP, mit Funktionen höherer Ordnung
weiter
1970s
Robin Milner: ML, getypte Sprache mit Polymorphie
weiter
1980s
David Turner: Miranda, Bedarfsauswertung
weiter
ab 1987
Entwickung von Haskell
weiter

weiter

Bedeutung einer Programmiersprache

Steve Jobs
berühmter Satz über die Wichtigkeit in seinem Beruf eine Programmiersprache zu nutzen:
 
... much more importantly, it had nothing to do with using [the programs we wrote] for anything practical.
 
It had to do with using them to be a mirror of your thought process; to actually learn how to think.
 
I think everybody in this country should learn how to program a computer --- should learn a computer language --- because it teaches you how to think.

weiter

Beispiel

?
Sortieren mit Quicksort

Letzte Änderung: 17.10.2016
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel