konzepte von programmiersprachen 1. einf¼hrung ziele der vorlesung: entwurfsalternativen von...

Download Konzepte von Programmiersprachen 1. Einf¼hrung Ziele der Vorlesung: Entwurfsalternativen von Programmiersprachen erkunden deklarative Programmierung am

Post on 05-Apr-2015

105 views

Category:

Documents

1 download

Embed Size (px)

TRANSCRIPT

  • Folie 1
  • Konzepte von Programmiersprachen 1. Einfhrung Ziele der Vorlesung: Entwurfsalternativen von Programmiersprachen erkunden deklarative Programmierung am Beispiel von Haskell erlernen Programmiertechniken und ihre Verbindung zu Sprachkonzepten kennenlernen und verstehen
  • Folie 2
  • Konzepte Werte, Speicher, Bindungen Abstraktion und Kapselung Typsysteme Ablaufsteuerung und Nebenlufigkeit... Ziele Erlernen neuer Sprachen Auswahl geeigneter Sprachen Entwicklung verlsslicher wohlstrukturierter Programme Unterscheidung verschiedener Paradigmen Hhere Programmiersprachen Ziele beim Entwurf: Ausdrucksmchtigkeit, Schlichtheit, Eleganz Weitere Anforderungen: -Universalitt -Implementierbarkeit -Verifizierbarkeit -Effizienz ->... bei Ausfhrung &... bei Programmierung
  • Folie 3
  • Einige Zitate Karl der Groe (742-814): To know another language is to have a second soul. Karl der Groe (742-814): To know another language is to have a second soul. Ronald Searle (1920- ): You can never understand one language until you understand at least two. Ronald Searle (1920- ): You can never understand one language until you understand at least two. Ralf Hinze, Uni Bonn: Seit 1950 sind Hunderte von Programmiersprachen entwickelt worden.... Programmiersprachen sind das Medium der Informatik. Ein tiefes Verstndnis der zugrundeliegenden Konzepte ist fr alles, was mit Informatik zu tun hat, unabdingbar. Ralf Hinze, Uni Bonn: Seit 1950 sind Hunderte von Programmiersprachen entwickelt worden.... Programmiersprachen sind das Medium der Informatik. Ein tiefes Verstndnis der zugrundeliegenden Konzepte ist fr alles, was mit Informatik zu tun hat, unabdingbar.
  • Folie 4
  • Historie
  • Folie 5
  • Fortran (Formula Translator) Entwicklung 1954-56 bei IBM unter John Backus Entwicklung 1954-56 bei IBM unter John Backus Standard fr numerische Berechnungen (scientific computing) Standard fr numerische Berechnungen (scientific computing) Hauptinnovationen: Hauptinnovationen: math. Notation fr arithmetische Ausdrcke symbolische Namen fr Variablen, Unterprogramme, Felder, Dekl. Nachfolger heute noch weitverbreitet: Fortran 90, HPF (High Performance Fortran), Fortran 2003 Nachfolger heute noch weitverbreitet: Fortran 90, HPF (High Performance Fortran), Fortran 2003 C Hello World in Fortran WRITE (6,7) 7FORMAT (13HHello, world!) STOP END
  • Folie 6
  • COBOL (Common Business Oriented Language) Entwicklung 1960 von Komitee unter Grace Murry Hopper Entwicklung 1960 von Komitee unter Grace Murry Hopper Konzeption fr Geschftsanwendungen Konzeption fr Geschftsanwendungen Hauptinnovation: Anlehnung an die natrliche Sprache Hauptinnovation: Anlehnung an die natrliche Sprache * Hello World in COBOL. IDENTIFICATION DIVISION. Program-Id. Hello-World. ENVIRONMENT DIVISION. DATA DIVISION. PROCEDURE DIVISION. PARA1. DISPLAY Hello, world!. STOP RUN. E.W. Dijkstra: The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence.
  • Folie 7
  • LISP (List Processing) Entwicklung Ende der 50er Jahre am MIT unter John McCarthy Entwicklung Ende der 50er Jahre am MIT unter John McCarthy Anwendungsgebiete: Knstliche Intelligenz, Symbolische Berechnungen Anwendungsgebiete: Knstliche Intelligenz, Symbolische Berechnungen Hauptinnovationen: rekursive Funktionen, Funktionen hherer Ordnungen, Programme als Daten, S-Ausdrcke, Speicherverwaltung Hauptinnovationen: rekursive Funktionen, Funktionen hherer Ordnungen, Programme als Daten, S-Ausdrcke, Speicherverwaltung (PRINT (LIST HELLO WORLD)) (write-string Hello, world!) Alan Perlis: A Lisp programmer konws the value of everything, but the cost of nothing. E.W. Dijkstra: Lisp has jokingly been called `the most intelligent way to misuse a computer. I think that description is a great compliment...
  • Folie 8
  • Algol (Algorithmic Language) Entwicklung von 1958-1963 von einem Komitee, dem u.a. John Backus, John McCarthy und Alan Perlin angehrten Entwicklung von 1958-1963 von einem Komitee, dem u.a. John Backus, John McCarthy und Alan Perlin angehrten Ausrichtung: general purpose Sprache, vor allem fr wissenschaftliche Anwendungen Ausrichtung: general purpose Sprache, vor allem fr wissenschaftliche Anwendungen Hauptinnovationen: Hauptinnovationen: einfache Syntax fr Anweisungen (;) Blockstruktur (begin end) rekursive Funktionen (Stackprinzip) einfaches Typsystem Nebenprodukt: Backus-Naur-Form (BNF) program HELLOWORLD; begin print Hello, world! end
  • Folie 9
  • imperative Sprachen Assembler / Maschinensprache objekt-orientierte Sprachen Deklarative Sprachen Logik / Funktional math. Theorie vertikale Migration Problem Abstraktion kurze, aussagekrftige Programme hohe Programmier- effizienz Klassifikation von Programmiersprachen
  • Folie 10
  • Programmiersprache Syntax formale Beschreibung der Kompo- nenten eines Programms mittels kontextfreier Grammatiken bzw. BNFPragmatik Handhabung der Sprache/ Sprachkon- zepte Implementie- rung Werkzeuge Semantik Bedeutung der Sprache/Progr. oft informell Formale Methoden vermeiden Unvollstndig- keit und Mehr- deutigkeiten
  • Folie 11
  • Syntaxbeschreibung % Anweisungen (Statements) S -> id := E % Wertzuweisung S -> id := E % Wertzuweisung | begin S ; S end % Hintereinanderausfhrung | if B then S % bedingte Anweisung % Ausdrcke (Expressions) E -> E + E % Summe E -> E + E % Summe | id % Bezeichner | num% Zahl % Boolesche Ausdrcke (Boolean expressions) B -> E E < E % Vergleichsausdruck kontextfreie Grammatik =
  • Folie 12
  • Syntaxbaum S -> id := E | begin S ; S end | if B then S E -> E + E | id | num B -> E E < E S begin S ; S end id := E if B then S E < E E + E id := E id num num num num
  • Folie 13
  • Syntaxbaum - Front S -> id := E | begin S ; S end | if B then S E -> E + E | id | num B -> E E < E S begin S ; S end id := E if B then S E < E E + E id := E id num num num num begin id := id + num ; if num < num then id := num end
  • Folie 14
  • Abstrakte Syntax S -> id := E => assign: E > S | begin S ; S end => seq : S x S > S | if B then S => cond : B x S > S E -> E + E => plus : E x E > E | id => id : > E |num=> num : > E B -> E less : E x E > B Regeln => Operationssymbole
  • Folie 15
  • Konkreter Syntaxbaum S begin S ; S end id := E if B then S E < E E + E id := E id num num num num Abstrakter Syntaxbaum less cond seq num id num plus id num assign
  • Folie 16
  • Beispiel: Konzept Zhlschleife FORTRAN FORTRAN do 1 i=1,10 do 1 i=1,10 1a(i) = 0 Pascal Pascal for i:=1 to 10 do a(i) := 0; a(i) := 0; C for (i=1; i equational reasoning
  • Folie 21
  • Beispiel: Seiteneffekte program example; var flag : boolean; function f (n : integer) : integer; begin if flag then f:= n else f:= n+1; flag := not flag; end; begin flag := true; if f(2) = f(2) then writeln(ok) else writeln(nicht ok); end.
  • Folie 22
  • Imperatives vs funktionales Programm var a : array [1..n] of integer; procedure quicksort (l,r: integer); var x,i,j,tmp : integer; begin if r>l then if r>l thenbegin x:=a[l]; i:=l; j:=r+1; x:=a[l]; i:=l; j:=r+1; repeat repeat repeat i:=i+1 until a[i]>=x; repeat i:=i+1 until a[i]>=x; repeat j:=j-1 until a[j]=x) xs) Pascal Haskell

Recommended

View more >