Funktionale Sprachen
nach [RiSch14]:
- Grundparadigma sind Funktionen im mathematischen Sinne, wie Quadratwurze, Addition usw.
Funktionale Programmierung besteht as der Aplikation von Funktionen auf ihre Parameter
- Ein- und Ausgabe sind Werte, dese sind unveränderlich
- Verarbeitung ist zustandslos, es gibt keine Zustände
Hier kann man die Funktionalen Sprachen nach der striktheit einteilen in:
- pure
- konsequenter Versicht auf alle zustandbezogene Sprachkonstrukte
- inpure
- Zustand erlaubt durch Zuweisung und änderbasre Variablen
Sprachkonstrukte und Idome:
- Rekursion (statt Schleifen)
- Bei vielen funktionelen Sprache sind können Funktionen auch als Werte betrachtet werden, z.B. können Funktionen auch andere Funktionen als Parameter haben z.B. Listenfunktionen map,select, fold.
Grundlage ist das Lamdba-Kalkül
Weitere Konzepte:
- algebraische Datentypen mit Patternmatching (Sprache Hope)
- Typinferenz: Verfahren, das einem Typ aus dem Kontext zu erschließen, damit weniger explizite Typeannotation gebraucht (Sprache ML)
- Verzögerte Auswertung (lazyness) von Werten (Sprache Mirana)
- Typklassen (Sprache Haskell)
Haskell vereinigt alle Konzepte, und ist daher der Stand der Technik für Funktionale Sprachen.
Literatur:
- [RiSch14] "Das Beste beider Welten: Funktional versus imperativ" JavaSpectrum 2/2014
- John Backus 1977: Can Programming be liberated from the von Neumann Stype ? A functional Style and its Algebra of Programms in Common ACM August 1978
- [WP]
Informatik- und Netzwerkverein Ravensburg e.V
Rudolf Weber