Basisinformationstechnologie HK-Medien Teil 1, 9.Sitzung WS 02/03 BIT – Schaßan – WS 02/03 Geschichte der Programmiersprachen Seit der Entwicklung des ersten Computers wurden ca.
Download ReportTranscript Basisinformationstechnologie HK-Medien Teil 1, 9.Sitzung WS 02/03 BIT – Schaßan – WS 02/03 Geschichte der Programmiersprachen Seit der Entwicklung des ersten Computers wurden ca.
Slide 1
Basisinformationstechnologie
HK-Medien
Teil 1, 9.Sitzung
WS 02/03
BIT – Schaßan – WS 02/03
Slide 2
Geschichte der
Programmiersprachen
Seit der Entwicklung des
ersten Computers wurden
ca. Eintausend
Programmiersprachen
(PSS) entwickelt
Turm von Babylon der
Programmiersprachen
Sammet, J.: Programming
Languages: History and
Fundamentals. Prentice
Hall, 1969.
BIT – Schaßan – WS 02/03
Slide 3
PSS
Wie natürliche Sprachen haben PSS eine
Grammatik mit
Syntax
Semantik
PSS verlangen allerdings genaueres
Einhalten der Regeln, da sonst ein
Ausdruck (und damit evtl. das ganze
Programm) nicht verstanden wird.
BIT – Schaßan – WS 02/03
Slide 4
Höhere PSS
Höhere PSS bieten abstraktere Sicht auf Daten
und Operationen
Daten nicht mehr als Register- oder
Speicherzelleninhalte, sondern als
mathematische Objekte
statt Speicherzelle Variable
Operationen werden durch Befehle ausgeführt,
die das (abstrakte) Ergebnis durch gezielte
Verknüpfungen und Speicherveränderungen
erzielt befehlsorientierte, imperative PSS
BIT – Schaßan – WS 02/03
Slide 5
Typen von PSS
imperative (befehls-, problemorientierte, prozedurale)
objektorientierte
vs.
deklarative (logische)
meist keine strenge Trennung der Konzepte
funktionale (applikative)
vs.
operationale Semantik
BIT – Schaßan – WS 02/03
Slide 6
Imperative PSS
Zur Lösung eines Problems müssen die
verfügbaren Operationen des Rechners
durch geschickte Kombinationen verbunden
werden
In höheren PSS abstraktere Formulierungen
und Loslösung von Eigenarten der Hardware
z.B. BASIC, Pascal, C, C++, Java
BIT – Schaßan – WS 02/03
Slide 7
Deklarative PSS
Aus einer nach bestimmten Regeln gebildeten mathematischen Formulierung des
Problems wird automatisch ein Programm
erzeugt.
Funktionsdefinition, -anwendung, -komposition
auf mathematischen Kalkülen basierend
Prädikatenlogik (logische Sprachen) PROLOG
Lambda-Kalkül (funktionale Sprachen) LISP
BIT – Schaßan – WS 02/03
Slide 8
Prädikatenlogik
Aussagenlogik:
Darstellung von Aussagen (Theoremen)
Vollständigkeit, Widerspruchsfreiheit,
Ableitbarkeit
Prädikatenlogik:
zweiwertige Logik (t/f)
Prädikat stellt Eigenschaften der Argumente
oder deren Beziehungen untereinander dar
BIT – Schaßan – WS 02/03
Slide 9
Prädikat
Ein Prädikat im logischen Sinn ist eine
Aneinanderreihung von Wörtern einer natürlichen
Sprache, die mindestens null Leerstellen enthält
und die zu einem Aussagesatz der natürlichen
Sprache wird, wenn in jede Leerstelle ein
Eigenname eingesetzt wird.
Die Zahl der Leerstellen, die ein Prädikat enthält,
ist die Stelligkeit des Prädikats.
Sokrates ist ein Mensch keine Leerstelle, nullstellig
BIT – Schaßan – WS 02/03
Slide 10
Lambda-Kalkül
Besteht aus Kalkülsprache (Alphabet, wohlgeformten Ausdrücken) und Deduktionsgerüst
(Axiome, Ableitungsregeln)
Funktionsabstraktion
λ x . A Funktion x mit Funktionskörper A
Funktionsapplikation
FA
Funktion F auf Ausdruck A angewandt
keine Zahlen, Funktionsnamen,
Wahrheitswerte, etc.
BIT – Schaßan – WS 02/03
Slide 11
Lambda-Kalkül (2)
abstrakte Syntax:
<λ-Ausdruck> =
| <λ-Ausdruck> <λ-Ausdruck>
| <λ-Ausdruck> . <λ-Asudruck>
BIT – Schaßan – WS 02/03
Variablenname
Applikation
Abstraktion
Slide 12
Lambda-Kalkül (3)
Beispiele:
Identität:
λx.x
Zweimalige Anwendung einer Funktion auf ein
Argument:
(λ f . (λ x . f (f x))) u v
(λ x . u (u x)) v
u (u v)
BIT – Schaßan – WS 02/03
Slide 13
Konzepte deklarativer PSS
ein der Mathematik entlehntes Variablenkonzept
Variable als Name für einen Wert
keine Speicherveränderung
keine Zuweisungen, keine
Kontrollstrukturen (while, repeat etc.)
Rekursion
u.a.
BIT – Schaßan – WS 02/03
Slide 14
imperativ vs. deklarativ
deklarative meist interpretiert, imperative
kompiliert imperative effizienter
Umstieg auf deklarativ schwierig
KI vorwiegend mit Hilfe deklarativer
BIT – Schaßan – WS 02/03
Slide 15
Charles Babbage (1792-1871)
Charles Babbage (1792-1871) entwarf zwei
Rechenmaschinen, die Difference Machine
(1823) und die Analytical Engine (1834).
Die Maschinen wurden niemals fertig
gestellt.
Die einzige arithmetische Operation, die
ausgeführt werden sollte, war die Addition
mit 27-stelligen Dezimalzahlen.
BIT – Schaßan – WS 02/03
Slide 16
Konrad Zuse (1910-1995)
Konrad Zuse baute mit dem Rechner Z3
(1941) eine Programmgesteuerte
Rechenmaschine, basierend auf dem
binären Zahlensystem (GleitkommaArithmetik), die wirklich funktionierte.
Die erste Programmiersprache der Welt für
Rechner (Computer) wurde von 1942-1945
von Konrad Zuse /ZUSE45/ entwickelt.
Er nannte sie den Plankalkül.
BIT – Schaßan – WS 02/03
Slide 17
Plankalkül
basiert auf dem Aussagen- und Prädikatenkalkül
Rechner, wie die Z3 und Z4, bezeichnete er als
algebraische Rechenmaschinen
Mit Hilfe des Plankalkül sollten kombinatorische
Aufgaben beschrieben werden und dann in
Programme für algebraische Rechengeräte
umgesetzt werden
Der Plankalkül wurde nie implementiert, er diente
aber als Diskussionsgrundlage für Programmiersprachen, wie z.B. ALGOL58 / 60, EIFFEL.
BIT – Schaßan – WS 02/03
Slide 18
Plankalkül (2)
Oberflächlich gesehen nahm der PK wesentliche
Züge der späteren algorithmischen Sprachen, wie
ALGOL vorweg.
Entsprechungen für die gängigen Kontrollkonstrukte wie IF und REPEAT-UNTIL-Anweisungen.
alle in höheren Programmiersprachen übliche
skalare Datentypen wie boolean, integer, real ,
complex
Allerdings z.B. kein "Verstecken" der Datentypen
BIT – Schaßan – WS 02/03
Slide 19
Datentypen
Datentypen = Objektarten, mit denen in den
Anwendungen gerechnet wird (z.B. logische
Größen, Zahlen der verschiedensten Art,
abstrakte Bezeichner, usw.), einschließlich der
Operationen, die auf die einzelnen Objektarten
angewandt werden können
auf der Hardwareebene durch Bitketten
repräsentiert
BIT – Schaßan – WS 02/03
Slide 20
Datentypen (2)
Prinzip, dass der Programmierer nach Möglichkeit nur
die Typen der Sprache sieht, nicht jedoch die sie
repräsentierenden Bitketten (die nur der Maschine
bekannt sein müssen)
Das Verbergen der Datenrepräsentation gibt dem
Programmierer eine abstrakte, anwendungsbezogene
Sicht der Datentypen und macht so die
Programmierung einfacher und fehlerfreier
andererseits wird dem Programmierer die Möglichkeit
genommen, eigene Typen definieren zu können
BIT – Schaßan – WS 02/03
Slide 21
Datentypen (3)
Jeder Datentyp ist definiert durch die Menge
der zulässigen Werte (Wertebereich) und
die Menge der zulässigen Operationen.
Zwei Datentypen heißen strukturgleich,
wenn sie denselben Wertebereich besitzen.
BIT – Schaßan – WS 02/03
Slide 22
Datentypen (4)
Unterscheidung zwischen
Typdefinition
Beschreibung eines Datentyps durch Angabe
des Wertebereichs (und impliziter Festlegung
der Operationen)
Typdeklaration
Bekanntgabe eines neuen Datentyps durch
Angabe des neuen Typnamens und der
zugehörigen Typdefinition.
BIT – Schaßan – WS 02/03
Slide 23
Polymorphes Typsystem
Polymorph heißt ein Typsystem, wenn die
Definitions- und Wertebereiche nicht starr
durch atomare Typen oder Kombinationen
aus atomaren Typen festgelegt sind,
sondern durch die Verwendung von
Typvariablen flexibel gehalten werden.
Eine Funktion kann dann mit verschiedenen
konkreten Typen arbeiten.
BIT – Schaßan – WS 02/03
Slide 24
Datentypen: Beispiel Java
In Java gibt es folgende grundlegende BasisDatentypen:
byte 8 Bit Zahlenwert (-128..127)
short 16 Bit, int 32 Bit, long 64 Bit Zahlenwert
float 32 Bit IEEE 754 Fließkommazahl, double 64 Bit
char 16 Bit Unicode Zeichen
boolean echter 1 Bit Wert
Arrays
String Unicode String
StringBuffer
BIT – Schaßan – WS 02/03
Slide 25
FORTRAN
Formula Translator
John Backus
1954-1962
Zur Durchführung numerischer Berechnungen
BIT – Schaßan – WS 02/03
Slide 26
COBOL
Common Business Oriented Language
ab 1959 auf Anregung des US Department
of Defense entwickelt
Eine der englischen Sprache angenäherte
PS für kaufmännische Aufgaben
BIT – Schaßan – WS 02/03
Slide 27
ALGOL 58/60
Algorithmic Language
Naur, Bauer, Perlis, Hoare, Samuelsen
Entwicklung in Wechselbeziehung mit der
Fortentwicklung der funktionellen Fähigkeiten der
Rechenanlagen
symbolische Adresse (Wilkes 1953)
indirekte Adressierung (Schecher 1955)
unter dem Eindruck der Probleme der
maschinellen Übersetzung von algorithmischen
Sprachen in Maschinensprachen
BIT – Schaßan – WS 02/03
Slide 28
ALGOL-Nachfolger
Aus der Sprache ALGOL entstanden viele
andere imperative Sprachen, wie
PASCAL
SIMULA
ALGOLW, ALGOL68
PL/1
C
und besonders ADA
BIT – Schaßan – WS 02/03
Slide 29
BASIC
Beginners All Purpose Symbolic Instruction Code
1963/4 Kemeny, Kurtz
vereinfachte Fassung von Fortran
verfügt allerdings über kein adäquates
Prozedurkonzept für mittlere bis große Aufgaben
und keine problemorientierten Datenstrukturen
Anders: VisualBASIC, besonders zur Programmierung graphischer Benutzerschnittstellen
BIT – Schaßan – WS 02/03
Slide 30
PL/1
Programming Language 1
Mitte 60er Jahre
Versuch, universelle PS zu entwickeln
unübersichtlich, schwer zu implementieren,
aber maßgeschneidert für Anforderungen
vieler Programmierer
BIT – Schaßan – WS 02/03
Slide 31
Pascal
nach Blaise Pascal (1623-1662) benannt
N. Wirth 1968-73
als einfachere, systematische Alternative
zu ALGOL68 und PL/1
zum Einsatz im Informatikunterricht
erstmals systematisches Typkonzept
strukturierte PS (if-, while-Anweisungen)
BIT – Schaßan – WS 02/03
Slide 32
Pascal-Nachfolger
darauf aufbauend:
Modula-2 modulorientiert
OBERON(-2) objektorientiert
Mesa
Euklid
ELAN für dt. Schulunterricht
Delphi
BIT – Schaßan – WS 02/03
Slide 33
Ada
Ada Augusta, der Gräfin von Lovelace
von US- DoD in Auftrag gegeben, 1979 ein
europäischer Entwurf als Basis akzeptiert
enthält Konzepte wie
Modularisierung, separate Compilierung
Parallelverarbeitung
Ausnahmebehandlung
polymorphes Typsystem
BIT – Schaßan – WS 02/03
Slide 34
C / C++
Dennis Ritchie 1972 (Bell Laboratories)
immer noch eine Reihe maschinennaher
Sprachkonstrukte "höhere Maschinensprache"
UNIX ist in C geschrieben
(C ist durch UNIX entstanden)
C++ ursprünglich als objektorientierter
Zusatz implementiert Präprozessor
übersetzte C++ nach C, dann nach
Maschinensprache
BIT – Schaßan – WS 02/03
Slide 35
LISP
List Processor
McCarthy (1959)
Funktionale Sprache (Lambda-Kalkül)
als PS zur nichtnumerischen
(symbolischen) DV konzipiert KI
Listen als Möglichkeit, verschiedenartige
Objekte aufzubauen, zu zerlegen und zu
bearbeiten
(DEF FAK (N) (COND ((ZeroP N) 1) (T (Times N (FAK (SUB 1 N))))))
BIT – Schaßan – WS 02/03
Slide 36
ML
Meta Language
keine rein funktionale Sprache, einige
imperative Elemente
Wegweisendes polymorphes Typsystem
BIT – Schaßan – WS 02/03
Slide 37
PROLOG
PROgrammation en LOGique
Kowalski, 1971-74
Logische Sprache (Prädikantenlogik)
interaktive Verständigung zwischen dem
Anwender und dem PROLOG-System, in dem
der Anwender z.B. folgendes vornehmen kann:
1.
2.
3.
Fakten für Objekte und Beziehungen deklarieren
Regeln für Objekte und Beziehungen definieren sowie
über Objekte und Beziehungen Anfragen stellen.
BIT – Schaßan – WS 02/03
Slide 38
PROLOG-Beispiele
Valuable (Gold). /* Gold ist wertvoll.*/
Valuable (Money). /* Geld ist wertvoll.*/
Father (John, Mary). /* John ist der Vater von Mary.*/
Gives (John, Book, Mark). /* John gibt Mark das Buch.*/
King (John, France). /* John ist König von Frankreich.*/
I am. /* Ich bin.*/
BIT – Schaßan – WS 02/03
Slide 39
PROLOG-Beispiele (2)
Valuable (Gold)? /* Ist Gold wertvoll*/
Yes
Father (x,Mary)?
x=John
Valuable (x)?
x=Gold
x=Money
BIT – Schaßan – WS 02/03
Slide 40
Smalltalk
Alan Kay, Anfang 70er Jahre entwickelt,
Anfang 80er publiziert
erste konsequent objektorientierte PS
mit graphischer Benutzeroberfläche (für
Kinder geplant)
aber: Glaube an Effizienzverlust durch
virtuelle Maschine zur Ausführung
verhindert großen Erfolg
BIT – Schaßan – WS 02/03
Slide 41
Java
1991, Sun
grundsätzlich auf C aufbauend, jedoch rein
objektorientiert, keine Prozedurenelemente
Vorteile:
Plattformunabhängigkeit aufgrund VM
Programme laufen "sicher" in einer Umgebung,
ohne auf die Ressourcen des Computers
zugreifen zu können
Routinen für graphische Oberflächen
BIT – Schaßan – WS 02/03
Slide 42
Übersicht PSS
BIT – Schaßan – WS 02/03
Slide 43
Sonstige Sprachen
Scriptsprachen
Perl (Practical Extraction and Report Language )
PHP
Javascript
Datenbanksprachen
SQL (Standard Query Language)
Makrosprachen
VBA (Visual Basic for Applications)
Sprachen für bestimmte Anwendungsfelder
Publizieren (TeX, PostScript)
BIT – Schaßan – WS 02/03
Slide 44
Weitere Konzepte
wesentliche Beiträge zu einem einheitlichen und
vollständigen begrifflichen System der Programmierung (zur Schaffung einer semantischen Basis)
J.Green 1959 (Namenserzeugung)
K.Samuelson 1959 (Blockstruktur)
N.Wirth 1965 (Referenzkonzept und die Sprachen
ALGOLW, PASCAL, usw.)
C.Hoare 1966 (Verbund)
BIT – Schaßan – WS 02/03
Slide 45
Software Engeneering
Softwarekrise Mitte der 60er durch neue
Rechnergenerationen geschaffenen
Möglichkeiten übertrafen bei weitem die bis
dahin entwickelten Programmiertechniken
Abkehr von der Kunst des Programmierens
und Hinwendung zu einer ingenieurmäßigen
Software-Entwicklung
Softwareherstellung als zusammenhängender Prozess
BIT – Schaßan – WS 02/03
Slide 46
Modularisierung
Grundlegende Ziele:
Korrektheit, Robustheit, Erweiterbarkeit,
Widerverwendbarkeit, Kompatibilität
Kriterien: modulare…
Zerlegung (Reduktion der Komplexität)
Zusammensetzung (Erstellung von Softwareelementen
aus anderen, bestehenden Softwareelementen)
Verstehbarkeit
Kontinuität (kleine Änderungen der Spezifikation sollte nur
kleine Änderungen am Gesamtsystem nach sich ziehen)
Schutz (Ausnahmefehler sind in Modulen zu behandeln)
BIT – Schaßan – WS 02/03
Slide 47
Literatur
Geschichte der PSS:
http://tunes.org/Review/Languages.html
http://www.cs.iastate.edu/~leavens/teachingprog-lang/home.html
http://ivs.cs.uni-magdeburg.de/~dumke/PSK/
Kurzerläuterungen zu PSS und Links:
http://users.erols.com/ziring/dopl.html
BIT – Schaßan – WS 02/03
Slide 48
Für den Weihnachtsbaum
Rolf Hochhuth: Alan Turing. Erzählung.
Rowohlt 1987.
A.K. Dewdney: Eine Reise ins Innere der
Mathematik. Birkhäuser 2000.
BIT – Schaßan – WS 02/03
Basisinformationstechnologie
HK-Medien
Teil 1, 9.Sitzung
WS 02/03
BIT – Schaßan – WS 02/03
Slide 2
Geschichte der
Programmiersprachen
Seit der Entwicklung des
ersten Computers wurden
ca. Eintausend
Programmiersprachen
(PSS) entwickelt
Turm von Babylon der
Programmiersprachen
Sammet, J.: Programming
Languages: History and
Fundamentals. Prentice
Hall, 1969.
BIT – Schaßan – WS 02/03
Slide 3
PSS
Wie natürliche Sprachen haben PSS eine
Grammatik mit
Syntax
Semantik
PSS verlangen allerdings genaueres
Einhalten der Regeln, da sonst ein
Ausdruck (und damit evtl. das ganze
Programm) nicht verstanden wird.
BIT – Schaßan – WS 02/03
Slide 4
Höhere PSS
Höhere PSS bieten abstraktere Sicht auf Daten
und Operationen
Daten nicht mehr als Register- oder
Speicherzelleninhalte, sondern als
mathematische Objekte
statt Speicherzelle Variable
Operationen werden durch Befehle ausgeführt,
die das (abstrakte) Ergebnis durch gezielte
Verknüpfungen und Speicherveränderungen
erzielt befehlsorientierte, imperative PSS
BIT – Schaßan – WS 02/03
Slide 5
Typen von PSS
imperative (befehls-, problemorientierte, prozedurale)
objektorientierte
vs.
deklarative (logische)
meist keine strenge Trennung der Konzepte
funktionale (applikative)
vs.
operationale Semantik
BIT – Schaßan – WS 02/03
Slide 6
Imperative PSS
Zur Lösung eines Problems müssen die
verfügbaren Operationen des Rechners
durch geschickte Kombinationen verbunden
werden
In höheren PSS abstraktere Formulierungen
und Loslösung von Eigenarten der Hardware
z.B. BASIC, Pascal, C, C++, Java
BIT – Schaßan – WS 02/03
Slide 7
Deklarative PSS
Aus einer nach bestimmten Regeln gebildeten mathematischen Formulierung des
Problems wird automatisch ein Programm
erzeugt.
Funktionsdefinition, -anwendung, -komposition
auf mathematischen Kalkülen basierend
Prädikatenlogik (logische Sprachen) PROLOG
Lambda-Kalkül (funktionale Sprachen) LISP
BIT – Schaßan – WS 02/03
Slide 8
Prädikatenlogik
Aussagenlogik:
Darstellung von Aussagen (Theoremen)
Vollständigkeit, Widerspruchsfreiheit,
Ableitbarkeit
Prädikatenlogik:
zweiwertige Logik (t/f)
Prädikat stellt Eigenschaften der Argumente
oder deren Beziehungen untereinander dar
BIT – Schaßan – WS 02/03
Slide 9
Prädikat
Ein Prädikat im logischen Sinn ist eine
Aneinanderreihung von Wörtern einer natürlichen
Sprache, die mindestens null Leerstellen enthält
und die zu einem Aussagesatz der natürlichen
Sprache wird, wenn in jede Leerstelle ein
Eigenname eingesetzt wird.
Die Zahl der Leerstellen, die ein Prädikat enthält,
ist die Stelligkeit des Prädikats.
Sokrates ist ein Mensch keine Leerstelle, nullstellig
BIT – Schaßan – WS 02/03
Slide 10
Lambda-Kalkül
Besteht aus Kalkülsprache (Alphabet, wohlgeformten Ausdrücken) und Deduktionsgerüst
(Axiome, Ableitungsregeln)
Funktionsabstraktion
λ x . A Funktion x mit Funktionskörper A
Funktionsapplikation
FA
Funktion F auf Ausdruck A angewandt
keine Zahlen, Funktionsnamen,
Wahrheitswerte, etc.
BIT – Schaßan – WS 02/03
Slide 11
Lambda-Kalkül (2)
abstrakte Syntax:
<λ-Ausdruck> =
| <λ-Ausdruck> <λ-Ausdruck>
| <λ-Ausdruck> . <λ-Asudruck>
BIT – Schaßan – WS 02/03
Variablenname
Applikation
Abstraktion
Slide 12
Lambda-Kalkül (3)
Beispiele:
Identität:
λx.x
Zweimalige Anwendung einer Funktion auf ein
Argument:
(λ f . (λ x . f (f x))) u v
(λ x . u (u x)) v
u (u v)
BIT – Schaßan – WS 02/03
Slide 13
Konzepte deklarativer PSS
ein der Mathematik entlehntes Variablenkonzept
Variable als Name für einen Wert
keine Speicherveränderung
keine Zuweisungen, keine
Kontrollstrukturen (while, repeat etc.)
Rekursion
u.a.
BIT – Schaßan – WS 02/03
Slide 14
imperativ vs. deklarativ
deklarative meist interpretiert, imperative
kompiliert imperative effizienter
Umstieg auf deklarativ schwierig
KI vorwiegend mit Hilfe deklarativer
BIT – Schaßan – WS 02/03
Slide 15
Charles Babbage (1792-1871)
Charles Babbage (1792-1871) entwarf zwei
Rechenmaschinen, die Difference Machine
(1823) und die Analytical Engine (1834).
Die Maschinen wurden niemals fertig
gestellt.
Die einzige arithmetische Operation, die
ausgeführt werden sollte, war die Addition
mit 27-stelligen Dezimalzahlen.
BIT – Schaßan – WS 02/03
Slide 16
Konrad Zuse (1910-1995)
Konrad Zuse baute mit dem Rechner Z3
(1941) eine Programmgesteuerte
Rechenmaschine, basierend auf dem
binären Zahlensystem (GleitkommaArithmetik), die wirklich funktionierte.
Die erste Programmiersprache der Welt für
Rechner (Computer) wurde von 1942-1945
von Konrad Zuse /ZUSE45/ entwickelt.
Er nannte sie den Plankalkül.
BIT – Schaßan – WS 02/03
Slide 17
Plankalkül
basiert auf dem Aussagen- und Prädikatenkalkül
Rechner, wie die Z3 und Z4, bezeichnete er als
algebraische Rechenmaschinen
Mit Hilfe des Plankalkül sollten kombinatorische
Aufgaben beschrieben werden und dann in
Programme für algebraische Rechengeräte
umgesetzt werden
Der Plankalkül wurde nie implementiert, er diente
aber als Diskussionsgrundlage für Programmiersprachen, wie z.B. ALGOL58 / 60, EIFFEL.
BIT – Schaßan – WS 02/03
Slide 18
Plankalkül (2)
Oberflächlich gesehen nahm der PK wesentliche
Züge der späteren algorithmischen Sprachen, wie
ALGOL vorweg.
Entsprechungen für die gängigen Kontrollkonstrukte wie IF und REPEAT-UNTIL-Anweisungen.
alle in höheren Programmiersprachen übliche
skalare Datentypen wie boolean, integer, real ,
complex
Allerdings z.B. kein "Verstecken" der Datentypen
BIT – Schaßan – WS 02/03
Slide 19
Datentypen
Datentypen = Objektarten, mit denen in den
Anwendungen gerechnet wird (z.B. logische
Größen, Zahlen der verschiedensten Art,
abstrakte Bezeichner, usw.), einschließlich der
Operationen, die auf die einzelnen Objektarten
angewandt werden können
auf der Hardwareebene durch Bitketten
repräsentiert
BIT – Schaßan – WS 02/03
Slide 20
Datentypen (2)
Prinzip, dass der Programmierer nach Möglichkeit nur
die Typen der Sprache sieht, nicht jedoch die sie
repräsentierenden Bitketten (die nur der Maschine
bekannt sein müssen)
Das Verbergen der Datenrepräsentation gibt dem
Programmierer eine abstrakte, anwendungsbezogene
Sicht der Datentypen und macht so die
Programmierung einfacher und fehlerfreier
andererseits wird dem Programmierer die Möglichkeit
genommen, eigene Typen definieren zu können
BIT – Schaßan – WS 02/03
Slide 21
Datentypen (3)
Jeder Datentyp ist definiert durch die Menge
der zulässigen Werte (Wertebereich) und
die Menge der zulässigen Operationen.
Zwei Datentypen heißen strukturgleich,
wenn sie denselben Wertebereich besitzen.
BIT – Schaßan – WS 02/03
Slide 22
Datentypen (4)
Unterscheidung zwischen
Typdefinition
Beschreibung eines Datentyps durch Angabe
des Wertebereichs (und impliziter Festlegung
der Operationen)
Typdeklaration
Bekanntgabe eines neuen Datentyps durch
Angabe des neuen Typnamens und der
zugehörigen Typdefinition.
BIT – Schaßan – WS 02/03
Slide 23
Polymorphes Typsystem
Polymorph heißt ein Typsystem, wenn die
Definitions- und Wertebereiche nicht starr
durch atomare Typen oder Kombinationen
aus atomaren Typen festgelegt sind,
sondern durch die Verwendung von
Typvariablen flexibel gehalten werden.
Eine Funktion kann dann mit verschiedenen
konkreten Typen arbeiten.
BIT – Schaßan – WS 02/03
Slide 24
Datentypen: Beispiel Java
In Java gibt es folgende grundlegende BasisDatentypen:
byte 8 Bit Zahlenwert (-128..127)
short 16 Bit, int 32 Bit, long 64 Bit Zahlenwert
float 32 Bit IEEE 754 Fließkommazahl, double 64 Bit
char 16 Bit Unicode Zeichen
boolean echter 1 Bit Wert
Arrays
String Unicode String
StringBuffer
BIT – Schaßan – WS 02/03
Slide 25
FORTRAN
Formula Translator
John Backus
1954-1962
Zur Durchführung numerischer Berechnungen
BIT – Schaßan – WS 02/03
Slide 26
COBOL
Common Business Oriented Language
ab 1959 auf Anregung des US Department
of Defense entwickelt
Eine der englischen Sprache angenäherte
PS für kaufmännische Aufgaben
BIT – Schaßan – WS 02/03
Slide 27
ALGOL 58/60
Algorithmic Language
Naur, Bauer, Perlis, Hoare, Samuelsen
Entwicklung in Wechselbeziehung mit der
Fortentwicklung der funktionellen Fähigkeiten der
Rechenanlagen
symbolische Adresse (Wilkes 1953)
indirekte Adressierung (Schecher 1955)
unter dem Eindruck der Probleme der
maschinellen Übersetzung von algorithmischen
Sprachen in Maschinensprachen
BIT – Schaßan – WS 02/03
Slide 28
ALGOL-Nachfolger
Aus der Sprache ALGOL entstanden viele
andere imperative Sprachen, wie
PASCAL
SIMULA
ALGOLW, ALGOL68
PL/1
C
und besonders ADA
BIT – Schaßan – WS 02/03
Slide 29
BASIC
Beginners All Purpose Symbolic Instruction Code
1963/4 Kemeny, Kurtz
vereinfachte Fassung von Fortran
verfügt allerdings über kein adäquates
Prozedurkonzept für mittlere bis große Aufgaben
und keine problemorientierten Datenstrukturen
Anders: VisualBASIC, besonders zur Programmierung graphischer Benutzerschnittstellen
BIT – Schaßan – WS 02/03
Slide 30
PL/1
Programming Language 1
Mitte 60er Jahre
Versuch, universelle PS zu entwickeln
unübersichtlich, schwer zu implementieren,
aber maßgeschneidert für Anforderungen
vieler Programmierer
BIT – Schaßan – WS 02/03
Slide 31
Pascal
nach Blaise Pascal (1623-1662) benannt
N. Wirth 1968-73
als einfachere, systematische Alternative
zu ALGOL68 und PL/1
zum Einsatz im Informatikunterricht
erstmals systematisches Typkonzept
strukturierte PS (if-, while-Anweisungen)
BIT – Schaßan – WS 02/03
Slide 32
Pascal-Nachfolger
darauf aufbauend:
Modula-2 modulorientiert
OBERON(-2) objektorientiert
Mesa
Euklid
ELAN für dt. Schulunterricht
Delphi
BIT – Schaßan – WS 02/03
Slide 33
Ada
Ada Augusta, der Gräfin von Lovelace
von US- DoD in Auftrag gegeben, 1979 ein
europäischer Entwurf als Basis akzeptiert
enthält Konzepte wie
Modularisierung, separate Compilierung
Parallelverarbeitung
Ausnahmebehandlung
polymorphes Typsystem
BIT – Schaßan – WS 02/03
Slide 34
C / C++
Dennis Ritchie 1972 (Bell Laboratories)
immer noch eine Reihe maschinennaher
Sprachkonstrukte "höhere Maschinensprache"
UNIX ist in C geschrieben
(C ist durch UNIX entstanden)
C++ ursprünglich als objektorientierter
Zusatz implementiert Präprozessor
übersetzte C++ nach C, dann nach
Maschinensprache
BIT – Schaßan – WS 02/03
Slide 35
LISP
List Processor
McCarthy (1959)
Funktionale Sprache (Lambda-Kalkül)
als PS zur nichtnumerischen
(symbolischen) DV konzipiert KI
Listen als Möglichkeit, verschiedenartige
Objekte aufzubauen, zu zerlegen und zu
bearbeiten
(DEF FAK (N) (COND ((ZeroP N) 1) (T (Times N (FAK (SUB 1 N))))))
BIT – Schaßan – WS 02/03
Slide 36
ML
Meta Language
keine rein funktionale Sprache, einige
imperative Elemente
Wegweisendes polymorphes Typsystem
BIT – Schaßan – WS 02/03
Slide 37
PROLOG
PROgrammation en LOGique
Kowalski, 1971-74
Logische Sprache (Prädikantenlogik)
interaktive Verständigung zwischen dem
Anwender und dem PROLOG-System, in dem
der Anwender z.B. folgendes vornehmen kann:
1.
2.
3.
Fakten für Objekte und Beziehungen deklarieren
Regeln für Objekte und Beziehungen definieren sowie
über Objekte und Beziehungen Anfragen stellen.
BIT – Schaßan – WS 02/03
Slide 38
PROLOG-Beispiele
Valuable (Gold). /* Gold ist wertvoll.*/
Valuable (Money). /* Geld ist wertvoll.*/
Father (John, Mary). /* John ist der Vater von Mary.*/
Gives (John, Book, Mark). /* John gibt Mark das Buch.*/
King (John, France). /* John ist König von Frankreich.*/
I am. /* Ich bin.*/
BIT – Schaßan – WS 02/03
Slide 39
PROLOG-Beispiele (2)
Valuable (Gold)? /* Ist Gold wertvoll*/
Yes
Father (x,Mary)?
x=John
Valuable (x)?
x=Gold
x=Money
BIT – Schaßan – WS 02/03
Slide 40
Smalltalk
Alan Kay, Anfang 70er Jahre entwickelt,
Anfang 80er publiziert
erste konsequent objektorientierte PS
mit graphischer Benutzeroberfläche (für
Kinder geplant)
aber: Glaube an Effizienzverlust durch
virtuelle Maschine zur Ausführung
verhindert großen Erfolg
BIT – Schaßan – WS 02/03
Slide 41
Java
1991, Sun
grundsätzlich auf C aufbauend, jedoch rein
objektorientiert, keine Prozedurenelemente
Vorteile:
Plattformunabhängigkeit aufgrund VM
Programme laufen "sicher" in einer Umgebung,
ohne auf die Ressourcen des Computers
zugreifen zu können
Routinen für graphische Oberflächen
BIT – Schaßan – WS 02/03
Slide 42
Übersicht PSS
BIT – Schaßan – WS 02/03
Slide 43
Sonstige Sprachen
Scriptsprachen
Perl (Practical Extraction and Report Language )
PHP
Javascript
Datenbanksprachen
SQL (Standard Query Language)
Makrosprachen
VBA (Visual Basic for Applications)
Sprachen für bestimmte Anwendungsfelder
Publizieren (TeX, PostScript)
BIT – Schaßan – WS 02/03
Slide 44
Weitere Konzepte
wesentliche Beiträge zu einem einheitlichen und
vollständigen begrifflichen System der Programmierung (zur Schaffung einer semantischen Basis)
J.Green 1959 (Namenserzeugung)
K.Samuelson 1959 (Blockstruktur)
N.Wirth 1965 (Referenzkonzept und die Sprachen
ALGOLW, PASCAL, usw.)
C.Hoare 1966 (Verbund)
BIT – Schaßan – WS 02/03
Slide 45
Software Engeneering
Softwarekrise Mitte der 60er durch neue
Rechnergenerationen geschaffenen
Möglichkeiten übertrafen bei weitem die bis
dahin entwickelten Programmiertechniken
Abkehr von der Kunst des Programmierens
und Hinwendung zu einer ingenieurmäßigen
Software-Entwicklung
Softwareherstellung als zusammenhängender Prozess
BIT – Schaßan – WS 02/03
Slide 46
Modularisierung
Grundlegende Ziele:
Korrektheit, Robustheit, Erweiterbarkeit,
Widerverwendbarkeit, Kompatibilität
Kriterien: modulare…
Zerlegung (Reduktion der Komplexität)
Zusammensetzung (Erstellung von Softwareelementen
aus anderen, bestehenden Softwareelementen)
Verstehbarkeit
Kontinuität (kleine Änderungen der Spezifikation sollte nur
kleine Änderungen am Gesamtsystem nach sich ziehen)
Schutz (Ausnahmefehler sind in Modulen zu behandeln)
BIT – Schaßan – WS 02/03
Slide 47
Literatur
Geschichte der PSS:
http://tunes.org/Review/Languages.html
http://www.cs.iastate.edu/~leavens/teachingprog-lang/home.html
http://ivs.cs.uni-magdeburg.de/~dumke/PSK/
Kurzerläuterungen zu PSS und Links:
http://users.erols.com/ziring/dopl.html
BIT – Schaßan – WS 02/03
Slide 48
Für den Weihnachtsbaum
Rolf Hochhuth: Alan Turing. Erzählung.
Rowohlt 1987.
A.K. Dewdney: Eine Reise ins Innere der
Mathematik. Birkhäuser 2000.
BIT – Schaßan – WS 02/03