Upload
leonore-amacker
View
105
Download
2
Embed Size (px)
Citation preview
Programmiersprachen
I F BPascal
PROLOG
CAMLC++
Ada
Java
LISP
Referat zur Veranstaltung „Informatik VI“ (18.635)
StD G. NollRhein-Gymnasium Sinzig
Februar 2001
© G. Noll 2001
2 Sprache
Eine Sprache besteht aus der Gesamtheit aller Eine Sprache besteht aus der Gesamtheit aller möglichen Aussagen und deren Bedeutungenmöglichen 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 falschsyntaktisch korrekt - semantisch falsch
x:=yx:=ysyntaktisch korrekte Zuweisung, abersyntaktisch korrekte Zuweisung, abersemantisch nur korrekt, wenn x und y vom gleichen semantisch nur korrekt, wenn x und y vom gleichen Datentyp sindDatentyp sind
© G. Noll 2001
3 Programmiersprachen
Computerunterstützte Problemlösungen basieren auf Computerunterstützte Problemlösungen basieren auf AlgorithmenAlgorithmen
Algorithmen stellen den Zusammenhang zwischen Algorithmen stellen den Zusammenhang zwischen Ein- und Ausgabedaten dar und sindEin- 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
ProgrammiersprachenProgrammiersprachen
© G. Noll 2001
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 Steuerungssprachemit zugehöriger Steuerungssprache
ZuseZuse (1938) entwickelte ein sog. (1938) entwickelte ein sog. PlankalkülPlankalkül mit mit wesentlichen Elementen moderner wesentlichen Elementen moderner ProgrammiersprachenProgrammiersprachen
© G. Noll 2001
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
© G. Noll 2001
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 MnemoniksMnemoniks 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 erleichternerleichtern
© G. Noll 2001
7 Sprachen der 3. Generation
ein Mnemonik beschreibt mehr als einen ein Mnemonik beschreibt mehr als einen MaschinenbefehlMaschinenbefehl
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
© G. Noll 2001
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, , BenutzerfreundlichkeitBenutzerfreundlichkeit, , WartungsfreundlichkeitWartungsfreundlichkeit, , EffizienzEffizienz und und PortabilitätPortabilität zu achten zu achten
Konsequenz: Entwicklung von Konsequenz: Entwicklung von blockorientiertenblockorientierten SprachenSprachen, 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 sindsich alleine verifizierbar sind
ALGOALGOrithmic rithmic LLanguage 1960 (Hoare, Wirth)anguage 1960 (Hoare, Wirth)
© G. Noll 2001
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
© G. Noll 2001
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 ProgrammierungProgrammierung im im Software-EngineeringSoftware-Engineering
© G. Noll 2001
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 MaschineMaschine))
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üssenProgrammiersprache verzichten zu müssen
© G. Noll 2001
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
© G. Noll 2001
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-ToolsUmgebung oder eines CASE-Tools
vielfach herstellerabhängigvielfach herstellerabhängig
typische Sprachen typische Sprachen SQLSQL undund R/3R/3 (SAP)(SAP)
© G. Noll 2001
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) geschriebenbasierenden 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 Edinburgh um 1970Edinburgh um 1970
© G. Noll 2001
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
© G. Noll 2001
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 MaschineArbeitsweise einer hypothetischen Maschine
Das Variablenkonzept orientiert sich an Operationen Das Variablenkonzept orientiert sich an Operationen auf Speicherzellenauf Speicherzellen
typische Sprachentypische Sprachen FORTRANFORTRAN –– ALGOLALGOL –– BASIC BASIC –– Pascal Pascal –– CC –– AdaAda
© G. Noll 2001
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 erfassterfasst
Ein funktionales Programm besteht aus Funktions-Ein funktionales Programm besteht aus Funktions-definitionen und relevanten Funktionsaufrufendefinitionen und relevanten Funktionsaufrufen
typische Sprachentypische Sprachen LISPLISP – – LogoLogo – – APLAPL – – CAMLCAML
AG-Material: AG-Material: Funktionale ProgrammierungFunktionale Programmierung informatikaginformatikag..bildungbildung--rprp.de.de
© G. Noll 2001
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 Programmierenprozedurales Programmieren
typische Sprachentypische Sprachen PROLOGPROLOG – – TrilogyTrilogy – – CLPCLP
AG-Material: AG-Material: Wissenverarbeitung mit PROLOGWissenverarbeitung mit PROLOG informatikaginformatikag..bildungbildung--rprp.de.de
© G. Noll 2001
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 MethodenMethoden reagieren 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 – – CC++++ –– DelphiDelphi –– JavaJava
© G. Noll 2001
20 Literatur
Ludewig, J.Ludewig, J.Sprachen für die ProgrammierungSprachen 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, 1986BI Mannheim, 1986
Schalowski, R.Schalowski, R.ProgrammiersprachenProgrammiersprachen
Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641Deutsche Telekom, Unterrichtblätter, 52/1999 S.634-641
© G. Noll 2001
21 Unterrichtsmaterial
Drumm, H. – Stimm, H.Drumm, H. – Stimm, H.Wissensverarbeitung mit PROLOGWissensverarbeitung mit PROLOG
Handreichung zum Lehrplan InformatikHandreichung zum Lehrplan Informatik
LMZ Koblenz, 1995LMZ Koblenz, 1995
Becker, K.Becker, K.Funktionale ProgrammierungFunktionale Programmierung
Materialien zum Lehrplan InformatikMaterialien zum Lehrplan Informatik
LMZ Koblenz, 1999LMZ Koblenz, 1999
Noll, G.Noll, G.Einführung in PROLOGEinführung in PROLOG
Referat zum Weiterbildungslehrgang InformatikReferat zum Weiterbildungslehrgang Informatik
IFB Speyer, 2001IFB Speyer, 2001