Programmierung, WIE Problemlösung schrittweise erzeugt wird
Programm: Abfolge von Anweisungen zur Lösung eines Problems
oft komplexerer, längerer Code
Programm: Beschreibung zur Problemlösung
Programmierung, WAS erreicht werden soll
oft einfacher, kürzer, verständlicher
Konzepte funktionaler Programmierung
Funktionen, die so behandelt werden wie Variablen, ermöglichen HOF
Funktionen, die Funktionen als Parameter übergeben bekommen oder Funktionen zurückgeben
Funktionen ohne Seiteneffekte, nur von Eingabeparametern abhängig
Seiteneffekte: jedes Ergebnis außer dem zurückgegebenen Wert
Änderung Attribute oder globaler Variablen
Konsolenausgabe
Datei speichern, Email senden..
Vorteile:
unabhängig vom Kontext, keine Seiteneffekte auf Kontext
Wartbarkeit, Wiederverwendbarkeit, Testbarkeit, Parallelisierbarkeit
rein funktionale Programmiersprachen:
Haskell und SML
lange Zeit hauptsächlich auf Forschung und Lehre beschränkt
üblich: Mix aus imperativ/objektorientiert und funktionalen Konzepten
funktionale Programmierkonzepte (HOF, Lambda) in populären Sprachen integriert (Java, Python, C#)
Multiparadigmische Sprachen mit Fokus auf funktionale Programmierung:
Clojure, Scala, F#, Lisp, Racket
Wofür steht Lisp – der Name einer der ̈altesten und der ersten funktionalen Programmiersprache?
Wie heißt eine moderne Programmiersprache, die ein Lisp-Dialekt ist und in die Java Virtual Machine kompiliert?
Wie heißt eine der populärsten rein funktionalen Programiersprachen, die hauptsächlich in Forschung und Lehre, aber auch (wenn auch eher selten) in der Industrie verwendet wird?
Wie heißt eine von einem Industrie-Unternehmen entwickelte und vielfach in der Industrie eingesetzte funktionale Programmiersprache?
Dialekt von Lisp, Nachfolger von Scheme
im Kern funktional, aber auch multiparadigmisch
programmable programming language
Spracherweiterungen können definiert werden, neue Programmiersprachen entwickelt werden
multipurpose, in Lehre weitverbreitet
In Lisp und Racket ist alles eine S-Expression
Daten, programme, Funktionsdefinitionen, Funktionsaufrufe, arithmetische Ausdrücke…
(interessante) Konsequenz:
Lisp Programme können andere Lisp Programme als Daten verarbeiten
S-Expression ist enweder Atom oder (vernestete) Liste von S-Expressions
rekursive Definition
Atome:
Zahlem, Character, Wahrweitswerte, Strings, Symbole
Namensregelung
Arithmetik
Infix -> Präfix Schreibweise
Vergleichsoperatoren und logische Funktionen
if, when, cond
Input/Output und Define
Zu welcher Programmiersprachenfamilie gehöhrt die Sprache Racket? Welches ist die grundlegende sowohl Daten- als auch Programmcodestruktur in Racket? Wie werden die beiden Wahrheitswerte true und false in Racket geschrieben?
Geben Sie ein Beispiel für die charakteristische S-Expression-Präfix-Schreibweise für die Anwendung von Operatoren oder Funktionen in Racket an (z.B. Multiplikation zweier Zahlen oder Initialisierung einer Variablen mit einem String)
Wie lautet die Funktion für eine mehrseitige Auswahl in Racket?
Zuletzt geändertvor einem Jahr