Deklarative Programmierung

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

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

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

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

Programmierparadigmen: Funktionale Programmierung

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

Einführung in die Programmierung

Logische Programmierung

Einführung in die Programmierung Wintersemester 2016/17

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

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

Einführung in die Informatik

Kapitel L:V. V. Erweiterungen und Anwendungen zur Logik

Kapitel L:V. V. Erweiterungen und Anwendungen zur Logik

Funktionale Programmierung Einführung

Programmierung Paradigmen und Konzepte

Theoretische Informatik

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Praktische Informatik 3: Funktionale Programmierung Vorlesung 1 vom : Einführung

Ein Stern in dunkler Nacht Die schoensten Weihnachtsgeschichten. Click here if your download doesn"t start automatically

Funktionale Programmierung (in Clojure)

Programmieren in Haskell Einführung

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -

Formale Methoden der Softwaretechnik 1 Vorlesung vom : Grundlage von Isabelle

Übersicht Formale Semantik. Übersicht Axiomatische Semantik. Inhaltsübersicht HPS WS 2003/04. Vorlesung Höhere Programmiersprachen,

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217

Einführung in die Funktionale Programmierung: Einleitung & Motivation

1 Funktionale vs. Imperative Programmierung

ALP I Geschichtliche Einführung in die Programmiersprachen

Grundlagen der Modellierung und Programmierung, Übung

Algorithmen und Programmieren II Programmverifikation {V} P {N}

Algorithmen und Programmierung I Funktionale Programmierung

Informatik-Seminar. Auftakt. Informatik. Grundlagen

Von der Chomsky-Hierarchie

ALP I Turing-Maschine

Programmiersprachen Proseminar

Anwendungen der Logik: Deklarative bzw. Logik-Programmierung in PROLOG

Informatik Lehre von der Darstellung und Verarbeitung von Information durch Algorithmen Teilgebiete der Informatik: theoretisch

Konzepte der Programmiersprachen

Informatik I. Grundlagen der systematischen Programmierung. Peter Thiemann WS 2007/08. Universität Freiburg, Germany

Informatik Allgemeines Einführung

Geschichte der Logik. Vorlesung Logik Sommersemester 2012 Universität Duisburg-Essen. Syllogismen (I) Syllogismen (II)

Berühmte Informatiker

Funktionale Programmiersprachen

Was heißt Denken?: Vorlesung Wintersemester 1951/52. [Was bedeutet das alles?] (Reclams Universal-Bibliothek) (German Edition)

Praktische Informatik I

1.3 Erinnerung: Mergesort

Multiparadigmen- Programmiersprachen

Wer bin ich - und wenn ja wie viele?: Eine philosophische Reise. Click here if your download doesn"t start automatically

PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB

Im Zeichen der Sonne: Schamanische Heilrituale (German Edition)

Programmierkurs II. Einführung in die deklarative Programmiersprache HASKELL

Wie man heute die Liebe fürs Leben findet

1 Inhalt der Vorlesung B-PS1

Aus FanLiebe zu Tokio Hotel: von Fans fã¼r Fans und ihre Band

Einführung in die Informatik

Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

1.3 Geschichte der Programmiersprachen

Level 1 German, 2012

Computergrundlagen Turingmaschinen und Programmierung

Die Bedeutung neurowissenschaftlicher Erkenntnisse für die Werbung (German Edition)

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

Organisatorisches/Einstieg

Brandbook. How to use our logo, our icon and the QR-Codes Wie verwendet Sie unser Logo, Icon und die QR-Codes. Version 1.0.1

Sagen und Geschichten aus dem oberen Flöhatal im Erzgebirge: Pfaffroda - Neuhausen - Olbernhau - Seiffen (German Edition)

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016

Vorlesung Programmieren

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 1. Einführung und Grundbegriffe

Vorlesung Programmieren

Vorlesung Programmieren. Programmiersprachen-Paradigmen. Programmierparadigmen. Eine Programmiersprache dient dem Aufschreiben von Algorithmen

Systemtheorie 1. Formale Systeme 1 # WS 2006/2007 Johannes Kepler Universität Linz, Österreich

Duell auf offener Straße: Wenn sich Hunde an der Leine aggressiv verhalten (Cadmos Hundebuch) (German Edition)

Vorlesung Logik Wintersemester 2017/18 Universität Duisburg-Essen

4.Grundsätzliche Programmentwicklungsmethoden

1. Übersicht und Organisatorisches

Funktionale Konzepte in objektorientierten Sprachen LAMBDAS / CLOSURES

Einführung in die Funktionale Programmierung mit Haskell

Formale Systeme. Prof. P.H. Schmitt. Winter 2007/2008. Fakultät für Informatik Universität Karlsruhe (TH) Voraussetzungen

Das Studium im Fach Informatik

Programmiertechnik II

Mathematik für Wirtschaftswissenschaftler: Basiswissen mit Praxisbezug (Pearson Studium - Economic BWL) (German Edition)

Level 2 German, 2013

Selbstbild vs. Fremdbild. Selbst- und Fremdwahrnehmung des Individuums (German Edition)

Das Zeitalter der Fünf 3: Götter (German Edition)

FACHKUNDE FüR KAUFLEUTE IM GESUNDHEITSWESEN FROM THIEME GEORG VERLAG

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

Grundlagen der Programmierung 2. Operationale Semantik

Level 1 German, 2014

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

Theorembeweiser und ihre Anwendungen

3 Exkurs: Der λ-kalkül

Privatverkauf von Immobilien - Erfolgreich ohne Makler (German Edition)

Die Kunst der Gotik: Eine Einführung (German Edition)

Studieninformationsveranstaltung. Informatik. Institut für Informatik IV Universität Bonn. Tel.: 0228/

ETHISCHES ARGUMENTIEREN IN DER SCHULE: GESELLSCHAFTLICHE, PSYCHOLOGISCHE UND PHILOSOPHISCHE GRUNDLAGEN UND DIDAKTISCHE ANSTZE (GERMAN

CNC ZUR STEUERUNG VON WERKZEUGMASCHINEN (GERMAN EDITION) BY TIM ROHR

Killy Literaturlexikon: Autoren Und Werke Des Deutschsprachigen Kulturraumes 2., Vollstandig Uberarbeitete Auflage (German Edition)

Schöpfung als Thema des Religionsunterrichts in der Sekundarstufe II (German Edition)

Transkript:

Deklarative Programmierung Prof. Dr. Sibylle Schwarz Westsächsische Hochschule Zwickau Dr. Friedrichs-Ring 2a, RII 263 http://www.fh-zwickau.de/~sibsc/ sibylle.schwarz@fh-zwickau.de WS 2012/2013 1

Motivation... there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult. Tony Hoare, 1980 ACM Turing Award Lecture 2

Programmierparadigmen Abstraktionsstufen: Programmierung = Maschinencode menschenlesbare symbolische Darstellung (Assembler) Programmablauf- und Datenstrukturen (Algorithmen) (imperative und objektorientierte Sprachen) deklarative Programmiersprachen (Constraint-Programmierung, logische Programmierung, funktionale Programmierung) Unterschied besteht darin, wie detailliert das Programm den Lösungsweg beschreiben muss. 3

Deklarative vs. imperative Programmierung deklarativ (beschreibend) Programm: Repräsentation eines Problems Programmelemente: Ausdrücke (Terme) und Gleichungen Programmierung: Modellierung der Aufgabe Ausführung: Lösung des beschriebenen Problems durch Umformung von Ausdrücken imperativ zustandsorientiert (von-neumann-typ) Programm: Repräsentation eines Algorithmus Programmelemente: Ausdrücke und Anweisungen Programmierung: Modellierung eines Verfahrens zur Lösung einer Aufgabe Ausführung des Lösungsverfahrens durch schrittweise Zustandsänderungen (Speicherbelegung) 4

Deklarative Programmierung Grundidee: Jedes Programm ist ein mathematisches Objekt mit einer bekannten wohldefinierten Semantik funktionale Programmierung (z.b. Haskell, ML, Lisp): Programm: Menge von Funktions-Definitionen (Gleichungen zwischen Termen) Ausführung: Pattern matching, Reduktion (Termersetzung) logische Programmierung (Prolog): Programm: Menge logischer Formeln (Horn-Klauseln) Ausführung: Unifikation, SLD-Resolution funktional-logische Programmierung (z.b. Mercury, Curry): Kombination funktionaler und logischer Konzepte Constraint-Programmierung: Programm: Menge von Constraints (z.b. Gleichungen, Ungleichungen, logische Formeln) Ausführung: Constraint-Löser (abhängig vom Constraint-Bereich) Beispiel: Constraints: Menge linearer Gleichungen Constraint-Löser: Gauß-Algorithmus 5

Einordnung in die Informatik Informatik Lehre von Darstellung und Verarbeitung von Information Anteil der Teilgebiete der Informatik: theoretische Informatik: Grundlagen formale Sprachen, Prädikatenlogik, Berechnungsmodell λ-kalkül technische Informatik: praktische Informatik: Grundlagen und Anwendung Programmierung, Softwareentwicklung, Übersetzerbau, rapid Prototyping, ausführbare Spezifikation, Verifikation deklarative Konzepte in Mainstream-Sprachen angewandte Informatik: Anwendung z.b. Finanzkalkulationen, sicherheitskritische Anwendungen, KI, Audio-Programmierung 6

Organisation der Lehrveranstaltung dienstags Vorlesung 14tägig (Z1) Übung / Praktikum Beispiele und schriftliche Übungen Prüfungsvorleistung: Testat (regelmäßiges Lösen der praktischen Aufgaben in den Übungen) alternative Prüfungsleistung: Programmierprojekt: Kryptographische Verfahren, z.b. ElGamal, Diffie-Hellman (neue autotool-aufgaben) Gruppen zu je drei Studenten Präsentation / Vortrag elektronische Einschreibung nicht vergessen 7

Literatur online: http://www.haskell.org/ Informationen, Download, Dokumentation, Tutorials,... Bücher: Graham Hutton: Programming in Haskell, Cambridge 2007 Klassiker (englisch): http://haskell.org/haskellwiki/books deutsch: Peter Pepper und Petra Hofstedt: Funktionale Programmierung. Sprachdesign und Programmiertechnik Springer 2006 Manuel Chakravarty und Gabriele Keller: Einführung in die Programmierung mit Haskell Pearson 2004 8

Werkzeug und Stil Die Grenzen meiner Sprache bedeuten die Grenzen meiner Welt. Ludwig Wittgenstein speziell in der Informatik: We are all shaped by the tools we use, in particular: the formalisms we use shape our thinking habits, for better or for worse, and that means that we have to be very careful in the choice of what we learn and teach, for unlearning is not really possible. (Many years ago, if I could use a new assistant, one prerequisite would be No prior exposure to FORTRAN", and at high schools in Siberia, the teaching of BASIC was not allowed.) Edsger W. Dijkstra aus E. W. Dijkstra Archive http://www.cs.utexas.edu/~ewd/ 9

Funktionale Programmierung Idee: Programm besteht aus einer Menge von Funktionsdefinitionen (Termgleichungen) einem Ausdruck Vorteile: deklarativ: Jedes funktionale Programm beschreibt ein Problem, nicht dessen Lösung Funktionen sind Daten, können also selbst Argumente und Ergebnisse von Funktionen sein (Funktionen höherer Ordnung) Rein funktionale Programme sind zustandsund damit nebenwirkungsfrei, daher Korrektheit einfach nachprüfbar (Verifikation) einfache modulare Konstruktion einfach parallelisierbar Programm repräsentiert seine Semantik (ausführbare Spezifikation, geeignet für rapid 10

Geschichte ab ca. 1930 Alonzo Church λ-kalkül ab ca. 1950 John McCarthy LISP ab ca. 1960 Peter Landin ISWIM ab ca. 1970 John Backus FP Robin Milner ML David Turner Miranda ab 1987 Haskell 11

Warum Haskell? deklarativ, Nähe zum (mathematischen) Modell keine Nebenwirkungen (klare Semantik) Funktionen sind Daten (Funktionen höherer Ordnung) starkes Typsystem Typklassen lazy evaluation (ermöglicht Rechnen mit unendlichen Datenstrukturen) kompakte Darstellung (kurze Programme) Modulsystem 12

Entwicklung von Haskell-Programmen Haskell-Interpreter: ghci, Hugs Haskell-Compiler: ghc Entwicklungsumgebungen: http://leksah.org/ http://eclipsefp.sourceforge.net/ http://www.haskell.org/visualhaskell/ alles kostenlos und open source Real Programmers (http://xkcd.com/378/) 13