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 Report

Transcript 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