Programmiersprachen
I F B
PascalPROLOG
C ++ CAML
Ada Java
LISP
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. Noll
Rhein-Gymnasium Sinzig
2
Sprache
Eine Sprache besteht aus der Gesamtheit aller möglichen Eine Sprache besteht aus der Gesamtheit aller möglichen Aussagen und deren Bedeutungen
Aussagen und deren Bedeutungen
SyntaxSyntax Regeln zum formalen Aufbau der SätzeRegeln zum formalen Aufbau der Sätze
SemantikSemantik Regeln über die Bedeutung der SätzeRegeln über die Bedeutung der Sätze
„„Dieser Satz hat vier Wörter.“Dieser Satz hat vier Wörter.“
syntaktisch korrekt - semantisch falsch syntaktisch korrekt - semantisch falsch x:=yx:=y
syntaktisch korrekte Zuweisung, aber syntaktisch korrekte Zuweisung, aber
semantisch nur korrekt, wenn x und y vom gleichen Datentyp semantisch nur korrekt, wenn x und y vom gleichen Datentyp sindsind
3
Programmiersprachen
Computerunterstützte Problemlösungen basieren auf Computerunterstützte Problemlösungen basieren auf Algorithmen
Algorithmen
Algorithmen stellen den Zusammenhang zwischen Algorithmen stellen den Zusammenhang zwischen Ein- und Ausgabedaten dar und sind
Ein- und Ausgabedaten dar und sind
eindeutigeindeutig undund ausführbarausführbar sowiesowie
endlichendlich bezüglich bezüglich AusführungzeitAusführungzeit und und BeschreibungBeschreibung
Das Problem der Übertragung von Algorithmen auf Das Problem der Übertragung von Algorithmen auf Maschinen führte zur Entwicklung von
Maschinen führte zur Entwicklung von Programmiersprachen
Programmiersprachen
4
Frühe Programmiersprachen
SchickardSchickard (1623), (1623), LeibnizLeibniz (1679) und (1679) und BabbageBabbage
(1837) befassten sich bereits mit den Möglichkeiten (1837) befassten sich bereits mit den Möglichkeiten
einer „Programmierung“
einer „Programmierung“
TuringTuring (1936) beschrieb eine theoretische Maschine (1936) beschrieb eine theoretische Maschine mit zugehöriger Steuerungssprache
mit zugehöriger Steuerungssprache
ZuseZuse (1938) entwickelte ein sog. (1938) entwickelte ein sog. PlankalkülPlankalkül mit mit wesentlichen Elementen moderner
wesentlichen Elementen moderner Programmiersprachen
Programmiersprachen
5
Maschinensprachen
Programmiersprachen 1. Generation (Programmiersprachen 1. Generation (1GL1GL))
alle Befehle direkt in der Sprache der CPUalle Befehle direkt in der Sprache der CPU
das Programm ist eine Folge aus 0 und 1 das Programm ist eine Folge aus 0 und 1
bei fester Wortlänge enthält ein Befehl einenbei fester Wortlänge enthält ein Befehl einen
Operationsteil Operationsteil und einenund einen
AdressteilAdressteil
bessere Lesbarkeit durch bessere Lesbarkeit durch HexadezimalsystemHexadezimalsystem
6
Assemblersprachen
Programmiersprachen 2. Generation (Programmiersprachen 2. Generation (2GL2GL))
für Operationskodes werden kurze Abkürzungen, die für Operationskodes werden kurze Abkürzungen, die Mnemoniks
Mnemoniks eingeführt eingeführt
LDALDA lade den Akkumulatorlade den Akkumulator ADDADD AdditionAddition
ein ein AssemblerAssembler als Übersetzer wird notwendigals Übersetzer wird notwendig
weitere Flexibilität durch weitere Flexibilität durch symbolischesymbolische AdressenAdressen, die , die eine Verschiebung von Programmteilen im Speicher eine Verschiebung von Programmteilen im Speicher
erleichtern erleichtern
7
Sprachen der 3. Generation
ein Mnemonik beschreibt mehr als einen ein Mnemonik beschreibt mehr als einen Maschinenbefehl
Maschinenbefehl
Verwendung besser lesbarer SchlüsselwörterVerwendung besser lesbarer Schlüsselwörter while not eof(f) do read(f,datensatz) end;
while not eof(f) do read(f,datensatz) end;
typische Sprachentypische Sprachen
FORFORmular mular TRANTRANslating system 1954slating system 1954
COCOmmonmmon BBusinessusiness OOrientedriented LLanguage 1959anguage 1959
BBeginners eginners AAll purposell purpose SSymbolicymbolic IInstructionnstruction CCode 1962ode 1962
8
Softwarekrise
Mitte der 60er Jahre erkennt man die Notwendigkeit Mitte der 60er Jahre erkennt man die Notwendigkeit bei Software auf
bei Software auf KorrektheitKorrektheit, , ZuverlässigkeitZuverlässigkeit, , Benutzerfreundlichkeit
Benutzerfreundlichkeit, , WartungsfreundlichkeitWartungsfreundlichkeit, , Effizienz
Effizienz und und PortabilitätPortabilität zu achten zu achten
Konsequenz: Entwicklung von Konsequenz: Entwicklung von blockorientiertenblockorientierten Sprachen
Sprachen, die diese Qualitätskriterien unterstützen, die diese Qualitätskriterien unterstützen
Blöcke sind kleinere Programmeinheiten, die für Blöcke sind kleinere Programmeinheiten, die für sich alleine verifizierbar sind
sich alleine verifizierbar sind
ALGOALGOrithmic rithmic LLanguage 1960 (Hoare, Wirth)anguage 1960 (Hoare, Wirth)
9
Merkmale von ALGOL
BlockstrukturBlockstruktur
strenge Deklarationspflichtstrenge Deklarationspflicht
Gültigkeitsbereiche von VariablenGültigkeitsbereiche von Variablen
zwei Arten der Parameterübergabezwei Arten der Parameterübergabe
rekursive Prozedurenrekursive Prozeduren
formatfreie Syntaxformatfreie Syntax
Muttersprache der Muttersprache der ALGOL-FamilieALGOL-Familie
PascalPascal ModulaModula OberonOberon
ALGOL68ALGOL68 AdaAda CC
10
Modulkonzept
Sammlung von Datenstrukturen und Sammlung von Datenstrukturen und Zugriffsoperationen in
Zugriffsoperationen in BausteinenBausteinen mit mit
DatenabstraktionDatenabstraktion und und Information-HidingInformation-Hiding
getrennten getrennten Definitions-Definitions- und und ImplementationsteilenImplementationsteilen
strenger strenger SchnittstellenüberwachungSchnittstellenüberwachung bereits zur bereits zur Übersetzungszeit
Übersetzungszeit
der Möglichkeit der Möglichkeit parallele Prozesseparallele Prozesse zu programmierenzu programmieren
Das Modulkonzept unterstützt die Das Modulkonzept unterstützt die strukturiertestrukturierte Programmierung
Programmierung im im Software-EngineeringSoftware-Engineering
11
Systemprogrammierung
Für die Programmierung von Betriebsystemen sind Für die Programmierung von Betriebsystemen sind Sprachen wie Pascal nicht besonders geeignet, da sie Sprachen wie Pascal nicht besonders geeignet, da sie
hardwarenahe Zugriffe abschirmen (
hardwarenahe Zugriffe abschirmen (virtuelle virtuelle Maschine
Maschine))
Im Zusammenhang mit der Entwicklung von Im Zusammenhang mit der Entwicklung von UNIXUNIX entstand die Sprache
entstand die Sprache CC , in der eine , in der eine
assemblerähnliche Programmierung möglich ist, assemblerähnliche Programmierung möglich ist,
ohne auf die Vorteile einer höheren ohne auf die Vorteile einer höheren
Programmiersprache verzichten zu müssen Programmiersprache verzichten zu müssen
12
C
geringer Sprachumfanggeringer Sprachumfang
beliebig ineinander konvertierbare Datentypenbeliebig ineinander konvertierbare Datentypen
übliche Kontrollstrukturenübliche Kontrollstrukturen
Unterstützung von Unterstützung von NebeneffektenNebeneffekten für eine kompakte für eine kompakte Formulierung und effiziente Kodierung. Deshalb oft Formulierung und effiziente Kodierung. Deshalb oft
unverständlich:
unverständlich:
while(*ziel++ = *quelle++) ;while(*ziel++ = *quelle++) ; Zahlen aus
Zahlen aus quellequelle ins ins zielziel schieben bis 0 auftritt schieben bis 0 auftritt
13
Sprachen der 4. Generation
Schlüsselworte beschreiben komplexe VorgängeSchlüsselworte beschreiben komplexe Vorgänge
readeachreadeach lese alle vorhandenen Datensätze lese alle vorhandenen Datensätze
oft Bestandteil einer Software-Produktions-oft Bestandteil einer Software-Produktions- Umgebung oder eines CASE-Tools
Umgebung oder eines CASE-Tools
vielfach herstellerabhängigvielfach herstellerabhängig
typische Sprachen typische Sprachen
SQLSQL undund R/3R/3 (SAP)(SAP)
14
Sprachen der KI
LISLISt t PProzessing language rozessing language
bereits 1959 entwickelt, noch heute im Gebrauchbereits 1959 entwickelt, noch heute im Gebrauch
Prototyp einer Prototyp einer funktionalen Sprachefunktionalen Sprache
besonders geeignet zurbesonders geeignet zur SymbolverarbeitungSymbolverarbeitung
das CAS-Systeme das CAS-Systeme DeriveDerive ist in einer auf LISP ist in einer auf LISP basierenden Sprache (muLISP) geschrieben basierenden Sprache (muLISP) geschrieben
LogoLogo
um 1970 von um 1970 von PappertPappert aus LISP entwickelt aus LISP entwickelt
enthält Kontrollsstrukturenenthält Kontrollsstrukturen
Turtle-GraphikTurtle-Graphik
PROPROgramminggramming inin LOGLOGicic
15
Sprachparadigmen
Den Programmiersprachen liegen bestimmte Den Programmiersprachen liegen bestimmte Konzepte oder Denkschemata zu Grunde, nach Konzepte oder Denkschemata zu Grunde, nach
denen man sie in
denen man sie in SprachparadigmenSprachparadigmen einordnet: einordnet:
imperativeimperative Sprachen Sprachen
funktionalefunktionale Sprachen Sprachen
prädikative prädikative SprachenSprachen
objektorientierteobjektorientierte Sprachen Sprachen
16
Imperative Sprachen
Programme bestehen aus BefehlssequenzenProgramme bestehen aus Befehlssequenzen ((imperareimperare = = befehlenbefehlen))
Der Programmentwurf orientiert sich an der Der Programmentwurf orientiert sich an der Arbeitsweise einer hypothetischen Maschine Arbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen Das Variablenkonzept orientiert sich an Operationen auf Speicherzellen
auf Speicherzellen
typische Sprachentypische Sprachen
FORTRAN FORTRAN –– ALGOLALGOL –– BASIC BASIC –– Pascal Pascal –– CC –– AdaAda
17
Funktionale Sprachen
Problemrelevante Abhängigkeiten zwischen einer Problemrelevante Abhängigkeiten zwischen einer gegebenen Ausgangssituation und einer gewünsch- gegebenen Ausgangssituation und einer gewünsch- ten Endsituation werden mit Hilfe von Funktionen ten Endsituation werden mit Hilfe von Funktionen
erfasst erfasst
Ein funktionales Programm besteht aus Funktions-Ein funktionales Programm besteht aus Funktions- definitionen und relevanten Funktionsaufrufen
definitionen und relevanten Funktionsaufrufen
typische Sprachentypische Sprachen
LISPLISP – – LogoLogo – – APLAPL – – CAMLCAML
AG-Material: AG-Material: Funktionale ProgrammierungFunktionale Programmierung informatikag
informatikag..bildungbildung--rprp.de.de
18
Prädikative Sprachen
Programmierung wird als Beweisen in einem Programmierung wird als Beweisen in einem System von Tatsachen und Schlussfolgerungen System von Tatsachen und Schlussfolgerungen
angesehen angesehen
Es wir spezifiziert, was die Maschine tun soll, aber Es wir spezifiziert, was die Maschine tun soll, aber nicht, wie sie dies tun soll:
nicht, wie sie dies tun soll: deklarativesdeklaratives statt statt prozedurales Programmieren
prozedurales Programmieren
typische Sprachentypische Sprachen
PROLOGPROLOG – – TrilogyTrilogy – – CLPCLP
AG-Material: AG-Material: Wissenverarbeitung mit PROLOGWissenverarbeitung mit PROLOG informatikag
informatikag..bildungbildung--rprp.de.de
19
Objektorientierte Sprachen
Daten, Anweisungen und Regeln werden als Daten, Anweisungen und Regeln werden als ObjekteObjekte angesehen und als solche geeignet zusammengefasst.
angesehen und als solche geeignet zusammengefasst.
Objekte Objekte
tauschen Informationen über tauschen Informationen über NachrichtenNachrichten aus aus
können auf Nachrichten mit verschiedenen können auf Nachrichten mit verschiedenen Methoden reagierenMethoden reagieren
können dem Sender mit einem anderen Objekt antwortenkönnen dem Sender mit einem anderen Objekt antworten
erben Fähigkeiten durch Zugehörigkeit zu einer erben Fähigkeiten durch Zugehörigkeit zu einer ObjektklasseObjektklasse
KlassenhierarchienKlassenhierarchien erlauben erlauben
eine bequeme Behandlung von Sonderfälleneine bequeme Behandlung von Sonderfällen
eine weitgehende eine weitgehende Wiederverwendbarkeit von ProgrammkodeWiederverwendbarkeit von Programmkode
typische Sprachentypische Sprachen
SIMULASIMULA – – SmalltalkSmalltalk – C – C++++ –– DelphiDelphi –– JavaJava
20
Literatur
Ludewig, J.Ludewig, J.
Sprachen für die Programmierung Sprachen für die Programmierung BI Mannheim, 1985
BI Mannheim, 1985
Claus,V.Claus,V. – – Schwill, A.Schwill, A.
Schülerduden „Die Informatik“
Schülerduden „Die Informatik“
BI Mannheim, 1986 BI Mannheim, 1986
Schalowski, R.Schalowski, R.
Programmiersprachen Programmiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641 Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
21
Unterrichtsmaterial
Drumm, H. – Stimm, H.Drumm, H. – Stimm, H.
Wissensverarbeitung mit PROLOG Wissensverarbeitung mit PROLOG
Handreichung zum Lehrplan Informatik Handreichung zum Lehrplan Informatik
LMZ Koblenz, 1995 LMZ Koblenz, 1995
Becker, K.Becker, K.
Funktionale Programmierung Funktionale Programmierung
Materialien zum Lehrplan Informatik Materialien zum Lehrplan Informatik
LMZ Koblenz, 1999 LMZ Koblenz, 1999
Noll, G.Noll, G.
Einführung in PROLOG Einführung in PROLOG
Referat zum Weiterbildungslehrgang Informatik Referat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001 IFB Speyer, 2001