Slide 1
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 2
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 3
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 4
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 5
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 6
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 7
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 8
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 9
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 10
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 11
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 12
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 13
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 14
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 15
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 16
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 17
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 18
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 19
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 20
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001
Slide 21
Programmiersprachen
PROLOG
Pascal
C ++
Ada
CAML
LISP
Java
IFB
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
Februar 2001
Sprache
2
Eine Sprache besteht aus der Gesamtheit aller
möglichen Aussagen und deren Bedeutungen
Syntax
Semantik Regeln über die Bedeutung der Sätze
Regeln zum formalen Aufbau der Sätze
„Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch
© G. Noll 2001
x:=y
syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen
Datentyp sind
Programmiersprachen
3
Computerunterstützte Problemlösungen basieren auf
Algorithmen
Algorithmen stellen den Zusammenhang zwischen
Ein- und Ausgabedaten dar und sind
© G. Noll 2001
eindeutig und ausführbar sowie
endlich bezüglich Ausführungzeit und Beschreibung
Das Problem der Übertragung von Algorithmen auf
Maschinen führte zur Entwicklung von
Programmiersprachen
Frühe Programmiersprachen
4
© G. Noll 2001
Schickard (1623), Leibniz (1679) und Babbage
(1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
Turing (1936) beschrieb eine theoretische Maschine
mit zugehöriger Steuerungssprache
Zuse (1938) entwickelte ein sog. Plankalkül mit
wesentlichen Elementen moderner
Programmiersprachen
Maschinensprachen
5
© G. Noll 2001
Programmiersprachen 1. Generation (1GL)
alle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einen
Operationsteil und einen
Adressteil
bessere Lesbarkeit durch Hexadezimalsystem
Assemblersprachen
6
© G. Noll 2001
Programmiersprachen 2. Generation (2GL)
für Operationskodes werden kurze Abkürzungen, die
Mnemoniks eingeführt
LDA
lade den Akkumulator
ADD
Addition
ein Assembler als Übersetzer wird notwendig
weitere Flexibilität durch symbolische Adressen, die
eine Verschiebung von Programmteilen im Speicher
erleichtern
Sprachen der 3. Generation
7
ein Mnemonik beschreibt mehr als einen
Maschinenbefehl
Verwendung besser lesbarer Schlüsselwörter
while not eof(f) do read(f,datensatz) end;
typische Sprachen
© G. Noll 2001
FORmular TRANslating system 1954
COmmon Business Oriented Language 1959
Beginners All purpose Symbolic Instruction Code 1962
Softwarekrise
8
© G. Noll 2001
Mitte der 60er Jahre erkennt man die Notwendigkeit
bei Software auf Korrektheit, Zuverlässigkeit,
Benutzerfreundlichkeit, Wartungsfreundlichkeit,
Effizienz und Portabilität zu achten
Konsequenz: Entwicklung von blockorientierten
Sprachen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für
sich alleine verifizierbar sind
ALGOrithmic Language 1960 (Hoare, Wirth)
Merkmale von ALGOL
9
Blockstruktur
strenge Deklarationspflicht
Gültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabe
rekursive Prozeduren
formatfreie Syntax
Muttersprache der ALGOL-Familie
© G. Noll 2001
Pascal
ALGOL68
Modula
Ada
Oberon
C
Modulkonzept
10
Sammlung von Datenstrukturen und
Zugriffsoperationen in Bausteinen mit
Datenabstraktion und Information-Hiding
getrennten Definitions- und Implementationsteilen
strenger Schnittstellenüberwachung bereits zur
Übersetzungszeit
© G. Noll 2001
der Möglichkeit parallele Prozesse zu programmieren
Das Modulkonzept unterstützt die strukturierte
Programmierung im Software-Engineering
Systemprogrammierung
11
© G. Noll 2001
Für die Programmierung von Betriebsystemen sind
Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (virtuelle
Maschine)
Im Zusammenhang mit der Entwicklung von UNIX
entstand die Sprache C , in der eine
assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen
C
12
geringer Sprachumfang
beliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturen
Unterstützung von Nebeneffekten für eine kompakte
Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
© G. Noll 2001
while(*ziel++ = *quelle++) ;
Zahlen aus quelle ins ziel schieben bis 0 auftritt
Sprachen der 4. Generation
13
Schlüsselworte beschreiben komplexe Vorgänge
oft Bestandteil einer Software-ProduktionsUmgebung oder eines CASE-Tools
vielfach herstellerabhängig
typische Sprachen
© G. Noll 2001
readeach lese alle vorhandenen Datensätze
SQL und R/3 (SAP)
Sprachen der KI
14
LISt Prozessing language
Logo
© G. Noll 2001
bereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer funktionalen Sprache
besonders geeignet zur Symbolverarbeitung
das CAS-Systeme Derive ist in einer auf LISP
basierenden Sprache (muLISP) geschrieben
um 1970 von Pappert aus LISP entwickelt
enthält Kontrollsstrukturen
Turtle-Graphik
PROgramming in LOGic
Edinburgh um 1970
Sprachparadigmen
15
© G. Noll 2001
Den Programmiersprachen liegen bestimmte
Konzepte oder Denkschemata zu Grunde, nach
denen man sie in Sprachparadigmen einordnet:
imperative Sprachen
funktionale Sprachen
prädikative Sprachen
objektorientierte Sprachen
Imperative Sprachen
16
Programme bestehen aus Befehlssequenzen
(imperare = befehlen)
Der Programmentwurf orientiert sich an der
Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen
auf Speicherzellen
typische Sprachen
© G. Noll 2001
FORTRAN – ALGOL – BASIC – Pascal – C – Ada
Funktionale Sprachen
17
Problemrelevante Abhängigkeiten zwischen einer
gegebenen Ausgangssituation und einer gewünschten Endsituation werden mit Hilfe von Funktionen
erfasst
Ein funktionales Programm besteht aus Funktionsdefinitionen und relevanten Funktionsaufrufen
typische Sprachen
© G. Noll 2001
LISP – Logo – APL – CAML
AG-Material: Funktionale Programmierung
informatikag.bildung-rp.de
Prädikative Sprachen
18
Programmierung wird als Beweisen in einem
System von Tatsachen und Schlussfolgerungen
angesehen
Es wir spezifiziert, was die Maschine tun soll, aber
nicht, wie sie dies tun soll: deklaratives statt
prozedurales Programmieren
typische Sprachen
© G. Noll 2001
PROLOG – Trilogy – CLP
AG-Material: Wissenverarbeitung mit PROLOG
informatikag.bildung-rp.de
Objektorientierte Sprachen
19
Daten, Anweisungen und Regeln werden als Objekte
angesehen und als solche geeignet zusammengefasst.
Objekte
Klassenhierarchien erlauben
eine bequeme Behandlung von Sonderfällen
eine weitgehende Wiederverwendbarkeit von Programmkode
typische Sprachen
© G. Noll 2001
tauschen Informationen über Nachrichten aus
können auf Nachrichten mit verschiedenen Methoden reagieren
können dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer Objektklasse
SIMULA – Smalltalk – C++ – Delphi – Java
Literatur
20
Ludewig, J.
Sprachen für die Programmierung
BI Mannheim, 1985
Claus,V. – Schwill, A.
Schülerduden „Die Informatik“
BI Mannheim, 1986
Schalowski, R.
Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
Unterrichtsmaterial
21
Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995
Becker, K.
Funktionale Programmierung
Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999
© G. Noll 2001
Noll, G.
Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001