Höhere Programmiersprachen

Größe: px
Ab Seite anzeigen:

Download "Höhere Programmiersprachen"

Transkript

1 Höhere Programmiersprachen Prof. Dr. Dr. h.c. Gerhard Goos Dipl.-Inform. Sebastian Hack (ggoos Institut für Programmstrukturen und Datenorganisation Universität Karlsruhe Wintersemester 2005/2006 Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

2 Allgemeine Informationen Ort -102 Informatikbau Zeit Montags, 14:00-15:30 Web Mail Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

3 Lernziele Sprachübergreifende Konzepte Lernen und Verstehen Wiederfinden in Sprachen Überblick über höhere Programmiersprachen Unterschiede, Vorteile und Nachteile Welche Sprache ist wofür besonders geeignet Formale Semantik von Programmiersprachen Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

4 Überblick 1 Grundlagen: λ-kalkül 2 Konzepte imperativer Sprachen: Typen, Prozeduren, Module, Ablaufsteuerung 3 Deklarative Sprachen: Lisp, Prolog, Datalog 4 Objektorientierte Sprachen 5 Wissenschaftliches Rechnen: Fortran 6 Wirtschaftsanwendungen: Cobol 7 Formale Semantik: operational, denotationell, axiomatisch Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

5 1 Eigenschaften und Geschichte von Programmiersprachen 2 λ-kalkül Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

6 Grundlagen Programmiersprache: Notation, um Berechnungen in maschinen- und menschenlesbarer Form zu beschreiben Abstraktion von Maschineneigenschaften Programmiersprachen sind Spezifikationssprachen Programm: Algorithmus: Funktion Eingangsdaten Ausgangsdaten Reaktives System: Strom von Eingabedaten Strom von Ausgabedaten Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

7 Geschichte 1944 Zuse s Plankalkül (erst um 1970 bekannt geworden) 40er Maschinensprache (sedezimal) 50er Maschinensprache (symbolisch, symbolisch adressiert) Fortran: Formeln, Parameterübergabe 1958/60 Algol 60: Ablaufstruktur, Blockstruktur, Kellerverwaltung, Namensaufruf, 1959 Lisp: Listenorganisation, Speicherbereinigung,,,Programm ist Liste 1959/60 Cobol: Verbunde, Fallunterscheidung, Trennung der E/A 1962/65 APL: interaktive Sprache 1964 Snobol: Textverarbeitung, Muster auf Texte anwenden, Suchbäume Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

8 Geschichte II 1967 Algol-W: Halde, Verweise, benutzerdeklarierte Typen 1967 Simula 67: Objektorientierung 1971 Pascal: Vereinfachung von Algol Prolog: Unifikation, Termersetzung Smalltalk: alles sind Objekte 1975 Modula, CLU: Modulbegriff Scheme, ML: funktionales Programmieren SQL:,,Sprachen der vierten Generation 90er- Perl, Python, PHP: Skriptsprachen (auch für s Web) Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

9 Geschichte III 1955 Fortran I (1954) 1960 Lisp Algol 60 CPL Cobol Fortan IV Algol 68 Pascal Simula 67 BCPL C PL/ Scheme ML Fortran 77 Modula 2 Smalltalk SML Prolog Common Lisp Ada 83 Oberon Eiffel Smalltalk 80 C++ ABAP CLOS Gofer Fortran 90 Haskell Sather HPF Ada 95 Java Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

10 Sprachtypen Imperativ (prozedural, operational) Zustände Zustandsübergänge (Zuweisung) Funktional geschachtelte Funktionsauswertung Funktionen als Werte applikativ: Kopplung imperativ+funktional Logisch Hornklauseln (Resolution, Unifikation) Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

11 Was ist ein Programm? Programmiersprache legt fest: Syntax Was ist ein wohlgeformtes Programm? Semantik Welche abstrakte Bedeutung hat ein wohlgeformtes Programm? Pragmatik Welche konkrete Bedeutung hat ein wohlgeformtes Programm? Unterschiede Semantik Bedeutung im formalen System (Selbstbezug) Pragmatik Bedeutung in der Umwelt (und auf dem Rechner) Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

12 Gemeinsame Eigenschaften Gliederung in Syntax, Semantik, Pragmatik Typen Bindungen von Namen an Deklarationen an Typen und Werte Ablaufsteuerung Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

13 Syntax Lexik: Bedeutungstragende Sprachelemente Beschrieben durch reguläre Ausdrücke Syntax : Obermenge der gültigen Programme Beschrieben durch kontextfreie Grammatik Statische Semantik : Definiert gültige Programme eigentlich: Syntax = kontextfreie Syntax + statische Semantik Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

14 Semantik und Pragmatik Semantik: dynamische Semantik Ordnet syntaktischen Sprachelementen Bedeutung zu Definiert die Ausführung des Programms Pragmatik: setzt Sprachelemente zu Konzepten außerhalb der Sprache in Beziehung Beispiel: Arithmetik der Zielmaschine Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

15 λ-kalkül einfachste algorithmische Sprache entwickelt von Alonzo Church Eigenschaften: einfache Termalgebra mit Variablen Programm ist Folge von Termen Daten sind Terme einfache Syntax nur drei semantische Regeln keine E/A Grundlage von funktionalen Sprachen Beschreibung von Programmiersprachen Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

16 λ-kalkül Termalgebra Λ mit abzählbarer Variablenmenge V : v V ist ein Term λv.t ist ein Term für v V, t Λ tt ist ein Term für t, t Λ Abstraktion Anwendung Ein Programm im λ-kalkül ist eine Funktionsanwendung Beispiel (λv.vv) λx.x Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

17 Syntax des λ-kalküls Grundsymbole: Bezeichner (Namen) für Variable,., λ, (, ) Syntax: siehe vorangehenden Folien Statische Semantik: (noch) keine Einschränkungen Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

18 Substitutionen im λ-kalkül Freie Variable φ(t) eines Terms t φ(v) = {v} φ(λv.t) = φ(t) \ v φ(tt ) = φ(t) φ(t ) Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

19 Substitutionen im λ-kalkül Freie Variable φ(t) eines Terms t Zulässige Substitution φ(v) = {v} φ(λv.t) = φ(t) \ v φ(tt ) = φ(t) φ(t ) t[t /v] is zulässig, wenn freie Variablen in t durch die Ersetzung nicht gebunden werden Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

20 Programmlauf im λ-kalkül Programmlauf wird durch drei Konversionen bestimmt: α : λv.t λv.t[v /v] falls zulässig β : (λv.t)t t[t /v] falls zulässig η : (λv.(tv)) t falls v φ(t) Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

21 Programmlauf im λ-kalkül Beispiel α β (λx.λy.xy)λv.vy (λx.λz.xz)λv.vy λz.(λv.vy)z Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

22 Semantik des λ-kalküls Bindung von Variablen in Termen (Bindung der Bedeutung) Ausführung: Folge von Transformationen Pragmatik: (noch) keine Beziehung zu anderen Konzepten Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

23 Endlose Auswertung Aber Ω = (λx.xx)λx.xx = (λx.xx)λx.xx = (λy.λz.z)ω = ((λy.λz.z)λx.xx)λx.xx = λz.z Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

24 Auswertestrategie Links zuerst: Vollständig Namensaufruf Faule Auswertung Rechts zuerst: Unvollständig Wertaufruf Strikte Auswertung Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

25 Konfluenz Konfluenz λ-kalkül ist konfluent (Church-Rosser-Eigenschaft), d.h. Regelanwendung in beliebiger Reihenfolge erlaubt Terme ohne weitere Reduktion: Normalform Normalformen bis auf α-konversion eindeutig Aber: Nicht alle Terme besitzen Normalform t t 1 t t 2 = t 1 t t 2 t t 1 t 2 t t Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

26 If-Then-Else Definition Definition λx 1 x 2 x n.t := λx 1.(λx 2. (λx n.t) ) wahr = λxy.x falsch = λxy.y if-then-else = λbtt.(btt ) b muss eine Funktion sein, die wahr oder falsch liefert Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

27 Rekursion Beispiel: Fakultät fac = (λn.if-then-else (= n 1) 1 ( n (fac( n 1)))) Funktion referenziert sich selbst: Nicht erlaubt im λ-kalkül Mache β-konversion rückgängig : fac = (λf.(λn.if-then-else (= n 1) 1 ( n (f ( n 1))))) }{{} H fac = H fac fac ist Fixpunkt von H fac Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

28 Rekursion II Sei Y eine Funktion folgender Bauart Y H = H (Y H) Y heißt auch Fixpunkt Kombinator Dann ist fac = Y H, denn fac = H fac Clou: Y ist eine ganz normale λ-abstraktion Y = (λh.(λx.h(xx))(λx.h(xx))) Also: Rekursion im λ-kalkül ausdrückbar Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

29 Eigenschaften von Termen Letzte Folien: if-then-else erfordert, dass b wahr oder falsch liefert. Allgemeiner: Der Kontext erzwingt Einschränkung der potentiell an einen Namen gebundener Terme Typisierung der Terme: Partitionierung der Terme bzgl. anwendbarer Funktionen Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

30 Typ eines Terms Beispiel Ein Typ T verhält sich wie eine Menge von Termen Er ist induktiv definiert über Konstruktoren Operatoren Axiome Beispiel: Abstrakte Datentypen (ADT) ADT INT: Konstruktoren..., 2, 1, 0, 1, 2,... Operatoren +,,, / : INT INT INT =, <, >: INT INT BOOL Axiome (+ 0 t) = t ( 1 t) = t Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

31 Zusammenfassung λ-kalkül Einfache Sprache über Termen nur drei Regeln definieren die Semantik Ausführungsreihenfolge beliebig: Church-Rosser-Eigenschaft Turing-mächtig: nicht abbrechende Berechnungen, Fixpunkte Programme sind Daten, Daten sind Programmstücke Grundlage von LISP, Haskell, ML, etc. Grundlage vieler formaler Sprachbeschreibungen Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 95

Lernziele. Übersicht. 1. Grundlagen. Höhere Programmiersprachen Sommersemester 2001

Lernziele. Übersicht. 1. Grundlagen. Höhere Programmiersprachen Sommersemester 2001 Höhere Programmiersprachen Sommersemester 2001 Lernziele Prof. Dr. Gerhard Goos Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation Ort: -101 neue Informatik Zeit: Dienstag, 14:00-15:30

Mehr

III.1 Prinzipien der funktionalen Programmierung - 1 -

III.1 Prinzipien der funktionalen Programmierung - 1 - 1. Prinzipien der funktionalen Programmierung 2. Deklarationen 3. Ausdrücke 4. Muster (Patterns) 5. Typen und Datenstrukturen 6. Funktionale Programmiertechniken III.1 Prinzipien der funktionalen Programmierung

Mehr

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

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 - n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik n "Informatik" = Kunstwort aus Information

Mehr

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

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 - 1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - Übersicht Imperative Sprachen Deklarative Sprachen Folge von

Mehr

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

n 1. Grundkonzepte der logischen Programmierung n 2. Syntax von Prolog n 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - n 1. Grundkonzepte der logischen Programmierung n 2. Syntax von Prolog n 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - Übersicht Imperative Sprachen Deklarative Sprachen l

Mehr

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

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

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

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung Gliederung n Teil I: Einleitung und Grundbegriffe l 1. Organisatorisches l 2. Grundlagen von Programmiersprachen n Teil II: Imperative und objektorientierte Programmierung l 1. Grundelemente der Programmierung

Mehr

Höhere Programmiersprachen Wintersemester 2002/2003. Dr. Sabine Glesner Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation

Höhere Programmiersprachen Wintersemester 2002/2003. Dr. Sabine Glesner Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation Höhere Programmiersprachen Wintersemester 2002/2003 Dr. Sabine Glesner Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation Ort: -102 neue Informatik Zeit: Montag, 14:00-15:30 Vorlesungsunterlagen:

Mehr

Lernziele. Inhaltsübersicht HPS WS 2004/05. Übung Höhere Programmiersprachen Wintersemester 2004/2005

Lernziele. Inhaltsübersicht HPS WS 2004/05. Übung Höhere Programmiersprachen Wintersemester 2004/2005 Höhere Programmiersprachen Wintersemester 2004/2005 Übung Höhere Programmiersprachen Wintersemester 2004/2005 Dr. Sabine Glesner Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation

Mehr

Lernziele. 1. Grundlagen. Inhaltsübersicht HPS WS 2002/03. Höhere Programmiersprachen Wintersemester 2002/2003

Lernziele. 1. Grundlagen. Inhaltsübersicht HPS WS 2002/03. Höhere Programmiersprachen Wintersemester 2002/2003 Höhere Programmiersprachen Wintersemester 2002/2003 Lernziele Dr. Sabine Glesner Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation Ort: -102 neue Informatik Zeit: Montag, 14:00-15:30

Mehr

Lernziele. 1. Grundlagen. Inhaltsübersicht HPS WS 2003/04. Höhere Programmiersprachen Wintersemester 2003/2004

Lernziele. 1. Grundlagen. Inhaltsübersicht HPS WS 2003/04. Höhere Programmiersprachen Wintersemester 2003/2004 Höhere Programmiersprachen Wintersemester 2003/2004 Lernziele Dr. Sabine Glesner Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation Ort: -102 neue Informatik Zeit: Montag, 14:00-15:30

Mehr

1 Bindung. 2 Typen. Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 89

1 Bindung. 2 Typen. Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 89 1 Bindung 2 Typen Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/2006 31 / 89 Bindung Zwei Formen der Bindung Bedeutung Zuordnung (freie) Variable (Bezeichner) zu

Mehr

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

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen Organisation und Einführung Studiengang Informatik Universität Bremen Sommersemester 2010 (Vorlesung am Montag, der 12. April 2010) (Montag, der 12. April 2008) 1 Vorstellung 2 Organisation 3 Einführung

Mehr

Funktionale Programmierung Einführung

Funktionale Programmierung Einführung Einführung Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 13.09.2017 15:29 Inhaltsverzeichnis Was ist imperative Programmierung.......................

Mehr

1.3 Geschichte der Programmiersprachen

1.3 Geschichte der Programmiersprachen 50er Jahre erste Definition höherer Programmiersprachen Effizienz maßgebliches Designziel FORTRAN (Backus) als Sprache für wissenschaftliches Rechnen (komplexe Berechnungen, einfachen Daten), Arrays, Schleifen,

Mehr

Übersicht. Nebenläufige Programmierung: Praxis und Semantik. Semantische Modelle nebenläufiger Programmiersprachen. Einleitung

Übersicht. Nebenläufige Programmierung: Praxis und Semantik. Semantische Modelle nebenläufiger Programmiersprachen. Einleitung Stand der Folien: 24. Januar 2012 Übersicht Aktuelle Themen zu Informatik der Systeme: Nebenläufige Programmierung: Praxis und Semantik Semantische Modelle nebenläufiger Programmiersprachen 1 2 Call-by-Name

Mehr

3 Exkurs: Der λ-kalkül

3 Exkurs: Der λ-kalkül 3 Exkurs: Der λ-kalkül Alonso Churchs λ-kalkül (ca. 1940) ist der formale Kern jeder funktionalen Programmiersprache. Der λ-kalkül ist eine einfache Sprache, mit nur wenigen syntaktischen Konstrukten und

Mehr

Programmierung Paradigmen und Konzepte

Programmierung Paradigmen und Konzepte Programmierung Paradigmen und Konzepte Mit 79 Bildern, 85 Beispielen, 130 Aufgaben und Kontrollfragen und 19 Referatsthemen Fachbuchverlag Leipzig im Carl Hanser Verlag 1 Einführung und Überblick 11 1.1

Mehr

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

Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda ALP I λ Kalkül WS 2012/2013 Berechenbarkeit - inspiriert durch Hilbert's Frage - im Jahr 1900, Paris - Internationaler Mathematikerkongress Gibt es ein System von Axiomen, aus denen alle Gesetze der Mathematik

Mehr

Theoretische Informatik II

Theoretische Informatik II Vorlesung Theoretische Informatik II Bernhard Beckert Institut für Informatik Wintersemester 2007/2008 B. Beckert Theoretischen Informatik II: WS 2007/08 1 / 179 Dank Diese Vorlesungsmaterialien basieren

Mehr

EIGENSCHAFTEN VON SPRACHEN

EIGENSCHAFTEN VON SPRACHEN Vorlesung und Übung Universität Paderborn Wintersemester 2016/2017 Dr. Peter Pfahler EIGENSCHAFTEN VON SPRACHEN EWS, WS 2016/17, Pfahler C-1 Einführung Sprachen in der Informatik werden für bestimmte Zwecke

Mehr

Programmiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 -

Programmiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 - Programmiersprachen: Klassifizierung und Methoden Programmier-Paradigmen Grundlagen der Programmierung 2 (1.C) - 1 - Programmiersprachen: Begriffe Syntax Beschreibung der Programme als Texte let xyz =

Mehr

1 Geschichte. 2 Syntax und Konzepte. Lamdba-Kalkül

1 Geschichte. 2 Syntax und Konzepte. Lamdba-Kalkül 1 Geschichte 1673 Gottfried Wilhelm Leibniz entwickelt eine mechanische Rechenmaschine, beginnt zu träumen: Gibt es eine universelle Sprache, in der alle Probleme dargestellt werden können? Gibt es eine

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Einleitung Gliederung Einführung in die Programmierung Wintersemester 2017/18 Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Einleitung Gliederung Einführung in die Programmierung Wintersemester 08/09 Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering

Mehr

Einführung in die Programmierung Wintersemester 2016/17

Einführung in die Programmierung Wintersemester 2016/17 Einführung in die Programmierung Wintersemester 2016/17 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Einleitung Gliederung Zum Begriff Informatik Zum

Mehr

1 Programmiersprachen 1.1 1

1 Programmiersprachen 1.1 1 1 Programmiersprachen 1.1 1 Meilensteine imperativer Programmiersprachen (teilweise objektorientiert) Fortran 1960 Cobol Algol 60 PL/I Algol W Simula 67 Algol 68 1970 Pascal C Smalltalk Modula 1980 Ada

Mehr

Info B VL 1: Einführung p.1

Info B VL 1: Einführung p.1 Info B VL 1: Einführung Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 1: Einführung p.1 Programmier-Paradigmen

Mehr

Funktionale Programmiersprachen

Funktionale Programmiersprachen Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte

Mehr

Der einfach getypter Lambda-Kalkül

Der einfach getypter Lambda-Kalkül Der einfach getypter Lambda-Kalkül Typprüfung und Typinferenz Tobias Nipkow und Steffen Smolka Technische Universität München 1 Einleitung 2 Explizit getypter λ-kalkül 3 Implizit getypter λ-kalkül Statische

Mehr

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

Übersicht Formale Semantik. Übersicht Axiomatische Semantik. Inhaltsübersicht HPS WS 2003/04. Vorlesung Höhere Programmiersprachen, Vorlesung Höhere Programmiersprachen, WS 2003/04 Teil 2: Formale Semantik Axiomatische Semantik Inhaltsübersicht - Grundlagen (1,2) - Konzepte imperativer Programmiersprachen (2,3) - Deklarative Programmiersprachen

Mehr

Prof. Dr. Jürgen Giesl Lehr- und Forschungsgebiet Informatik 2. Proseminar - 1 -

Prof. Dr. Jürgen Giesl Lehr- und Forschungsgebiet Informatik 2. Proseminar - 1 - Prof. Dr. Jürgen Giesl Lehr- und Forschungsgebiet Informatik 2 Proseminar - 1 - Lernziele des Proseminars Wie komme ich zu gesicherten Ergebnissen? Stimmen Angaben? Andere Quellen? Neuere Entwicklungen?

Mehr

Sprachen und Programmiersprachen

Sprachen und Programmiersprachen Sprachen und Programmiersprachen Natürliche Sprachen versus Programmiersprachen / Spezifikationssprachen Syntax legt die grammatikalische Korrektheit fest. Semantik legt die Bedeutung von syntaktisch korrekten

Mehr

1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Ein Zitat zu Beginn Vor der Wahl, ein theoretischer Physiker oder ein Programmierer

Mehr

Kapitel 1: Einleitung. Gliederung. Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren

Kapitel 1: Einleitung. Gliederung. Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Kapitel 1: Einleitung Wintersemester 2006/07 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Gliederung Zum Begriff Informatik

Mehr

Inhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms.

Inhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms. Inhalt Algorithmus Euklidscher Algorithmus Sortieren Programmiersprachen Entwicklungsschritte eines Programms Algorithmen 1 Algorithmus Eindeutige Beschreibung eines allgemeinen Verfahrens unter Verwendung

Mehr

Einführung in die funktionale Programmierung

Einführung in die funktionale Programmierung Einführung in die funktionale Programmierung Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 17. Oktober 2006 Einführung in Haskell: Syntax, Reduktionen, Kernsprachen Haskell,

Mehr

Grundlagen der Programmierung 2. Operationale Semantik

Grundlagen der Programmierung 2. Operationale Semantik Grundlagen der Programmierung 2 Operationale Semantik Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 29. April 2009 Semantik von Programmiersprachen Semantik = Bedeutung

Mehr

Semantik von Programmiersprachen

Semantik von Programmiersprachen Semantik von Programmiersprachen 1. Einführung Werner Struckmann Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Sommersemester 2017 1. Einführung 1.1 Sprachen und

Mehr

Lambda-Kalkül. Philipp Meyer. 28. April 2009

Lambda-Kalkül. Philipp Meyer. 28. April 2009 Lambda-Kalkül Philipp Meyer 28. April 2009 1 Einleitung Der λ-kalkül ist eine von Alonzo Church und Stephen Kleene in den 1930er Jahren eingeführtes Modell zur Beschreibung berechenbarer Funktionen. Es

Mehr

Der untypisierte Lambda-Kalkül als Programmiersprache

Der untypisierte Lambda-Kalkül als Programmiersprache Der untypisierte Lambda-Kalkül als Programmiersprache November 29, 2006 betreut von Prof. Tobias Nipkow Einführung In den 1930er Jahren von Alonzo Church und Stephen Kleene eingeführt Der Lambda-Kalkül

Mehr

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Agenda Elementare Einführung C Programm Syntax Datentypen, Variablen und Konstanten Operatoren und Ausdrücke Kontrollstrukturen

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Überblick für heute Programmierparadigmen Imperative vs. deklarative Programmierung Beispiele Funktionale Programmierung

Mehr

Theoretische Informatik II

Theoretische Informatik II Theoretische Informatik II Dr. Eva Richter / Holger Arnold Universität Potsdam, Theoretische Informatik, Sommersemester 2008 Übungsblatt 3 (Version 4) Abgabetermin: 13.5.2008, 12.00 Uhr Der λ-kalkül Da

Mehr

Formale Methoden der Softwaretechnik 1 Vorlesung vom : Grundlage von Isabelle

Formale Methoden der Softwaretechnik 1 Vorlesung vom : Grundlage von Isabelle 1 Formale Methoden der Softwaretechnik 1 Vorlesung vom 16.11.09: Grundlage von Isabelle Christoph Lüth, Lutz Schröder Universität Bremen Wintersemester 2009/10 2 Fahrplan Teil I: Grundlagen der Formalen

Mehr

7. Syntax: Grammatiken, EBNF

7. Syntax: Grammatiken, EBNF 7. Syntax: Grammatiken, EBNF Teil 1 Sehr schönes Beispiel für Notwendigkeit der Theoretischen Informatik für Belange der Praktischen Informatik Vertiefung in: Einführung in die Theoretische Informatik

Mehr

vii 4 t.scheme: Funktionale Programmierung Funktionen als Daten erster Klasse

vii 4 t.scheme: Funktionale Programmierung Funktionen als Daten erster Klasse Inhaltsverzeichnis Einleitung 1 Kaffee oder Tee?................................ 1 Die t.sprachen.................................. 2 Die Java-Implementierung........................... 5 Ockhams Rasiermesser.............................

Mehr

Beschreibung von Werten: Beschreibung von Werten: (2) Begriffsklärung: (Ausdruck, expression) (2) Begriffsklärung: (Ausdruck, expression)

Beschreibung von Werten: Beschreibung von Werten: (2) Begriffsklärung: (Ausdruck, expression) (2) Begriffsklärung: (Ausdruck, expression) Beschreibung von Werten: Beschreibung von Werten: (2) mittels Konstanten oder Bezeichnern für Werte: 23 " Ich bin eine Zeichenreihe" True x durch direkte Anwendung von Funktionen: abs (-28382) "Urin" ++

Mehr

7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik:

Mehr

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

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen. 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

Von der Chomsky-Hierarchie

Von der Chomsky-Hierarchie Von der Chomsky-Hierarchie zur Backus-Naur-Form Ein Beitrag der Theoretischen Informatik zum Siegeszug des Computers Referat von Helmut Schnitzspan Im Rahmen des Seminars Von der EDV zu Facebook Alexander

Mehr

Einführung in das λ-kalkül

Einführung in das λ-kalkül Einführung in das λ-kalkül Max Wagner IPD Snelting 1 3.11.2017 Max Wagner - Einführung in das λ-kalkül IPD KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Syntax Abstrakte Syntax:

Mehr

10. Programmierungs-Phase: Objektorientierung Software Engineering

10. Programmierungs-Phase: Objektorientierung Software Engineering 10. Programmierungs-Phase: Objektorientierung Software Engineering Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 15. Dezember 2005 Einordnung in den Kontext

Mehr

Einführung IMP-Syntax Reduktionssemantik Maschinen-Semantik. Teil IV. Semantik imperativer Sprachen

Einführung IMP-Syntax Reduktionssemantik Maschinen-Semantik. Teil IV. Semantik imperativer Sprachen Teil IV Semantik imperativer Sprachen 201 1. Einführung Alternativen zur Beschreibung der Semantik: natürliche Sprache (bisher, unpräzise) operational Reduktionssemantik (vgl. Haskell-Semantik in Kap.

Mehr

1 Inhalt der Vorlesung B-PS1

1 Inhalt der Vorlesung B-PS1 1 Inhalt der Vorlesung B-PS1 1.1 Tag 1 1.1.1 Vormittag Geschichte der Programmiersprachen Wie viele Programmiersprachen gibt es? https://en.wikipedia.org/wiki/list_of_programming_languages Esoterische

Mehr

Workshop Einführung in die Sprache Haskell

Workshop Einführung in die Sprache Haskell Workshop Einführung in die Sprache Haskell Nils Rexin, Marcellus Siegburg und Alexander Bau Fakultät für Informatik, Mathematik und Naturwissenschaften Hochschule für Technik, Wirtschaft und Kultur Leipzig

Mehr

Paradigmen zur Algorithmenbeschreibung

Paradigmen zur Algorithmenbeschreibung Paradigmen zur Algorithmenbeschreibung In einem objektorientierten Algorithmus werden Datenstrukturen und Methoden zu einer Klasse zusammengefasst. Von jeder Klasse können Objekte gemäß der Datenstruktur

Mehr

6. Funktionen, Parameterübergabe

6. Funktionen, Parameterübergabe 6. Funktionen, Parameterübergabe GPS-6-1 Themen dieses Kapitels: Begriffe zu Funktionen und Aufrufen Parameterübergabearten call-by-value, call-by-reference, call-by-value-and-result in verschiedenen Sprachen

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Programmierparadigmen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Programmiersprachen-Paradigmen Eine Programmiersprache

Mehr

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

Vorlesung Programmieren. Programmiersprachen-Paradigmen. Programmierparadigmen. Eine Programmiersprache dient dem Aufschreiben von Algorithmen Vorlesung Programmieren Programmierparadigmen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Programmiersprachen-Paradigmen Eine Programmiersprache

Mehr

Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten.

Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten. 4.5.5 Rekursive Typen Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten. datatype IntList = Nil Cons o f ( i n t IntList ) ; Damit

Mehr

Semantik von Programmiersprachen

Semantik von Programmiersprachen Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 14. Juli 2017 Semantik von Programmiersprachen Übersicht Art der Veranstaltung: Vorlesung mit

Mehr

Geschichte der Programmiersprachen

Geschichte der Programmiersprachen Erster Vorläufer: das Plankalkül, 1942 von K. Zuse, erst 1975 erstmals vollständig beschrieben und implementiert, keine praktische Relevanz Sprachen der 1. Generation (1.GL): Maschinensprachen: binär,

Mehr

Der untypisierte Lambda-Kalkül

Der untypisierte Lambda-Kalkül Der untypisierte Lambda-Kalkül Der Lambda-Kalkül wurde zur Beschreibung des mathematischen Begriffs Funktion entwickelt. Die Menge aller Lambda-Ausdrücke Exp ist folgendermaßen definiert: x Exp wenn x

Mehr

3 Syntax von Programmiersprachen

3 Syntax von Programmiersprachen 3 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ) formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmiersprache Festlegung, wie Programme

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

6. Programmiersprachen im Überblick. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

6. Programmiersprachen im Überblick. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 6. Programmiersprachen im Überblick K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 21. Okt. 2015 2 Was ist das: eine Programmiersprache? Formale Sprache *), die zur Beschreibung

Mehr

Grundlagen der Programmierung 2 (1.A)

Grundlagen der Programmierung 2 (1.A) Grundlagen der Programmierung 2 (1.A) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 18. April 2007 Grundlagen der Programmierung 2: Geplanter Inhalt der ersten Hälfte

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

1 Funktionale vs. Imperative Programmierung

1 Funktionale vs. Imperative Programmierung 1 Funktionale vs. Imperative Programmierung 1.1 Einführung Programme einer funktionalen Programmiersprache (functional programming language, FPL) bestehen ausschließlich aus Funktionsdefinitionen und Funktionsaufrufen.

Mehr

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

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

Mehr

3 Syntax von Programmiersprachen

3 Syntax von Programmiersprachen 3 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ) formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmiersprache Festlegung, wie Programme

Mehr

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Foliensatz, 25.11.05 Wintersemester 2005/2006 Strukturierungskonzepte Strukturierungskonzepte Richtige Algorithmen Richtige Programme Definitionen

Mehr

Kapitel 6. Programme mit Schleifen. Wir betrachten jetzt eine einfache imperative Programmiersprache IMP. IMP verfügt

Kapitel 6. Programme mit Schleifen. Wir betrachten jetzt eine einfache imperative Programmiersprache IMP. IMP verfügt Kapitel 6 Programme mit Schleifen Wir betrachten jetzt eine einfache imperative Programmiersprache IMP. IMP verfügt über zuweisbare Variablen, Konditionale und Schleifen, hat aber keine Prozeduren. IMP

Mehr

Inferenzmethoden. Einheit 18. Logik höherer Stufe

Inferenzmethoden. Einheit 18. Logik höherer Stufe Inferenzmethoden Einheit 18 Logik höherer Stufe 1. Syntax und Semantik 2. Simulation mathematischer Konstrukte 3. Beweisführung in Logik höherer Stufe Logik höherer Stufe Logik erster Stufe hat nur einfache

Mehr

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell): Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel

Mehr

Sprachanalyse. Fachseminar WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Nadia Douiri

Sprachanalyse. Fachseminar WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Nadia Douiri Sprachanalyse WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Inhalt 1. Formale Sprachen 2. Chomsky-Hierarchie 2 FORMALE SPRACHE 1. WAS IST EINE SPRACHE? 2. WIE BESCHREIBT MAN EINE SPRACHE? 3. WAS

Mehr

Programmieren I. Methoden-Spezial Heusch --- Ratz 6.1, Institut für Angewandte Informatik

Programmieren I. Methoden-Spezial Heusch --- Ratz 6.1, Institut für Angewandte Informatik Programmieren I Methoden-Spezial Heusch --- Ratz 6.1, 6.2 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Parameterübergabe bei primitivem Datentypen (Wertkopie) public class MethodParameters

Mehr

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners

Mehr

Fortgeschrittene Funktionale Programmierung

Fortgeschrittene Funktionale Programmierung Fortgeschrittene Funktionale Programmierung 12. Vorlesung Janis Voigtländer Universität Bonn Wintersemester 2015/16 Motivation Auf http://www-ps.iai.uni-bonn.de/ft: 1 Motivation 1 Betrachtungen zu Polymorphie

Mehr

Reduktionssysteme und Termersetzungssysteme

Reduktionssysteme und Termersetzungssysteme Reduktionssysteme und Termersetzungssysteme Untersuchung von Berechnungen mittels Reduktionsregeln Simplifikation von: Datenstrukturen / Termen usw. Erkennen von gleichen Objekten durch Normalisierung

Mehr

Philosophie des Intuitionismus und sein Einfluß auf die Informatik

Philosophie des Intuitionismus und sein Einfluß auf die Informatik Philosophie des Intuitionismus und sein Einfluß auf die Informatik Christoph Kreitz Was ist Intuitionismus? Unterschiede zur klassischen Mathematik Historische Entwicklung Bezüge zur Informatik Ähnlichkeit

Mehr

Semantik von Programmiersprachen SS 2017

Semantik von Programmiersprachen SS 2017 Lehrstuhl für Programmierparadigmen Denis Lohner Sebastian Ullrich denis.lohner@kit.edu sebastian.ullrich@kit.edu Semantik von Programmiersprachen SS 2017 http://pp.ipd.kit.edu/lehre/ss2017/semantik Lösungen

Mehr

Compilerbau für die Common Language Run-Time

Compilerbau für die Common Language Run-Time Compilerbau für die Common Language Run-Time Syntax und Semantik von Programmiersprachen 2 Compilerbau Sprachbeschreibung vs. Implementierung Beschreibung: formale oder informale (engl.) Lexik, Syntax,

Mehr

Wiederholung. Organisatorisches. VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger

Wiederholung. Organisatorisches. VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger Organisatorisches VL-11: LOOP und WHILE Programme I (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger Nächste Vorlesung: Mittwoch, November 29, 14:15 15:45 Uhr, Roter Hörsaal Webseite: http://algo.rwth-aachen.de/lehre/ws1718/buk.php

Mehr

Werkzeuge zur Programmentwicklung

Werkzeuge zur Programmentwicklung Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul

Mehr

Logik I. Symbole, Terme, Formeln

Logik I. Symbole, Terme, Formeln Logik I Symbole, Terme, Formeln Wie jede geschriebene Sprache basiert die Prädikatenlogik erster Stufe auf einem Alphabet, welches aus den folgenden Symbolen besteht: (a) Variabeln wie zum Beispiel v 0,v

Mehr

Einführung in die funktionale Programmierung

Einführung in die funktionale Programmierung Einführung in die funktionale Programmierung Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 28. Oktober 2008 Einführung in Haskell: Syntax, Reduktionen, Kernsprachen Haskell,

Mehr

Zusammenfassung. Definition. 1 (x i ) 1 i n Sequenz von Registern x i, die natürliche Zahlen beinhalten. 2 P ein Programm. Befehle: 1 x i := x i + 1

Zusammenfassung. Definition. 1 (x i ) 1 i n Sequenz von Registern x i, die natürliche Zahlen beinhalten. 2 P ein Programm. Befehle: 1 x i := x i + 1 Zusammenfassung Zusammenfassung der letzten LVA Einführung in die Theoretische Informatik Christina Kohl Alexander Maringele Georg Moser Michael Schaper Manuel Schneckenreither Eine Registermaschine (RM)

Mehr

Programmiersprachen Pascal, Modula-2, Oberon. Charlotte Prieß

Programmiersprachen Pascal, Modula-2, Oberon. Charlotte Prieß Programmiersprachen Pascal, Modula-2, Oberon Charlotte Prieß Überblick Leben Historische Einordung Pascal Modula-2 Oberon Vorteile von Pascal gegenüber C Warum sich C durchgesetzt ist? Leben 1934 geboren

Mehr

Lambda-Kalkül. Dr. Eva Richter. 27.April 2012

Lambda-Kalkül. Dr. Eva Richter. 27.April 2012 Lambda-Kalkül Dr. Eva Richter 27.April 2012 1 / 32 Historisches um 1200 Einführung des Zahlensystems in Europa u.a. durch Fibonacci; ist charakterisiert durch ein kleine Menge von Ziffern, deren Wert von

Mehr

Programmierparadigmen

Programmierparadigmen Programmierparadigmen Paradigma = Denkweise oder Art der Weltanschauung klassische Einteilung: Programmiersprache imperativ deklarativ prozedural objektorientiert funktional logisch Zusammenhänge tatsächlich

Mehr

Grundlagen der Logik

Grundlagen der Logik Grundlagen der Logik Denken Menschen logisch? Selektionsaufgabe nach Watson (1966): Gegeben sind vier Karten von denen jede auf der einen Seite mit einem Buchstaben, auf der anderen Seite mit einer Zahl

Mehr