DI-Programmiersprachen

Werbung
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


Herunterladen