Presentation is loading. Please wait.

Presentation is loading. Please wait.

Einführung in die Informatik 2. Programming Languages, Paradigms and Technology Institut für Informatik und angewandte Mathematik.

Similar presentations


Presentation on theme: "Einführung in die Informatik 2. Programming Languages, Paradigms and Technology Institut für Informatik und angewandte Mathematik."— Presentation transcript:

1 Einführung in die Informatik 2. Programming Languages, Paradigms and Technology Institut für Informatik und angewandte Mathematik

2 © Oscar Nierstrasz 2 Roadmap  What is a programming language?  Programming = modeling  Evolution  Trends and Challenges Programming Languages, Paradigms and Technology

3 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 3 Übersicht Informatik Theorie (Automaten und formale Sprachen, Berechenbarkeit, Komplexität, Logik, Algorithmen) Praxis (Programmiersprachen, Betriebssysteme, Netzwerke &Verteilte Systeme, Software Engineering, Datenbanken, Rechnerarchitektur) Schnittstellen zur Aussenwelt (Mensch-Maschine Schnittstelle, Computer- vision, Computergrafik, Sensornetze, Künstliche Intelligenz, Computerlinguistik) Wirtschaftsinformatik Anwendungs- software Wissenschaftliche Anwendungen (Modellierung und Simulation, Biologie, Physik, Chemie, Sozialwissenschaften, etc.) Informatikstudium Andere Studiengänge Mathematik Programmiersprachen formale Sprachen Computerlinguistik Modellierung Software Engineering

4 © Oscar Nierstrasz 4 Roadmap  What is a programming language?  Programming = modeling  Evolution  Trends and Challenges Programming Languages, Paradigms and Technology

5 What is a language? © Oscar Nierstrasz Programming Languages, Paradigms and Technology 5 Language = a set of sequences of symbols that we interpret to attribute meaning Jack and Jill went up the hill …

6 What is a formal language? © Oscar Nierstrasz Programming Languages, Paradigms and Technology 6 A Turing machine reads (and writes) a tape of 0s and 1s The language it accepts is the set of strings that leave it in an accepting state

7 How can we describe formal languages? © Oscar Nierstrasz Programming Languages, Paradigms and Technology 7 expression  number expression  expression + expression expression  expression  expression number  digit number  digit number expression  number expression  expression + expression expression  expression  expression number  digit number  digit number Use a set of rules (   ) to describe the structure of the language 3 + 4  5 cf. Chomsky

8 What is a Programming Language? (take 1) © Oscar Nierstrasz Programming Languages, Paradigms and Technology 8.-…-…-….-…- --.---..-l.-..-.-..- …-…-….-…---.---..-l.-..-.-. 123687597524654268568754 286544826548765786551236 875975246542685687542865 448265487657865512368759 752465426856875428654482 65487657865… A language to instruct a computer to compute “stuff” … But how does the computer interpret language?

9 What is a Programming Language? (take 2) © Oscar Nierstrasz Programming Languages, Paradigms and Technology 9.-…-…-….-…- --.---..-l.-..-.-..- …-…-….-…---.---..-l.-..-.-. What the compiler will handle … 01001001011 001100100011 10101011010 00011010101 010010111100 111110001010 1000101011… But what about syntax and semantics? parse analyze transform optimize generate

10 What is a Programming Language? (take 3) © Oscar Nierstrasz Programming Languages, Paradigms and Technology 10.-…-…-….-…- --.---..-l.-..-.-..- …-…-….-…---.---..-l.-..-.-. Syntax and semantics in a mathematical domain … But what about the programmer?

11 What is a Programming Language? (take 4) © Oscar Nierstrasz Programming Languages, Paradigms and Technology 11 A language for communicating software designs

12 © Oscar Nierstrasz 12 Roadmap  What is a programming language?  Programming = modeling  Evolution  Trends and Challenges Programming Languages, Paradigms and Technology

13 Over 8000 recorded programming languages © Oscar Nierstrasz Programming Languages, Paradigms and Technology 13 http://hopl.murdoch.edu.au/ Why so many?!

14 What do programming languages have in common? © Oscar Nierstrasz Programming Languages, Paradigms and Technology 14 # Compute factorials def fact(n) if n == 0 1 else n * fact(n-1) end puts fact(ARGV[0].to_i) # Compute factorials def fact(n) if n == 0 1 else n * fact(n-1) end puts fact(ARGV[0].to_i) comments keywords functions variables control constructs numbers, strings expressions statements A fragment of Ruby code

15 Expressive power © Oscar Nierstrasz Programming Languages, Paradigms and Technology 15 Formally, all programming languages are equivalent … So what? …

16 Programming is modeling © Oscar Nierstrasz Programming Languages, Paradigms and Technology 16

17 How do these languages differ? © Oscar Nierstrasz Programming Languages, Paradigms and Technology 17 Functional Object-oriented Logic Imperative

18 © Oscar Nierstrasz 18 Roadmap  What is a programming language?  Programming = modeling  Evolution  Trends and Challenges Programming Languages, Paradigms and Technology

19 Jacquard loom — 1801 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 19 Punch cards are invented

20 Babbage’s Analytical Engine — 1822 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 20 The first mechanical computer

21 Church’s Lambda Calculus — 1932 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 21 (λ x. (λ y. x)) a b The first (minimal) language for studying computation  (λ y. a) b  a if true then a else b

22 Turing machine — 1936 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 22 The first abstract model of a computer

23 1 st generation: Machine code — 1944 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 23 Machine code is only meant to be read by … machines

24 Subroutines — 1949 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 24 The subroutine is one of the key concepts of programming call return

25 2 nd generation: assembler — early 1950s © Oscar Nierstrasz Programming Languages, Paradigms and Technology 25 Assembly code introduces symbolic names (for humans!)

26 3 rd generation: FORTRAN — 1955 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 26 High-level languages are born C AREA OF A TRIANGLE - HERON'S FORMULA C INPUT - CARD READER UNIT 5, INTEGER INPUT C OUTPUT - LINE PRINTER UNIT 6, REAL OUTPUT C INPUT ERROR DISPAY ERROR OUTPUT CODE 1 IN JOB CONTROL LISTING INTEGER A,B,C READ(5,501) A,B,C 501 FORMAT(3I5) IF(A.EQ.0.OR. B.EQ.0.OR. C.EQ.0) STOP 1 S = (A + B + C) / 2.0 AREA = SQRT( S * (S - A) * (S - B) * (S - C)) WRITE(6,601) A,B,C,AREA 601 FORMAT(4H A=,I5,5H B=,I5,5H C=,I5,8H AREA=,F10.2,12HSQUARE UNITS) STOP END C AREA OF A TRIANGLE - HERON'S FORMULA C INPUT - CARD READER UNIT 5, INTEGER INPUT C OUTPUT - LINE PRINTER UNIT 6, REAL OUTPUT C INPUT ERROR DISPAY ERROR OUTPUT CODE 1 IN JOB CONTROL LISTING INTEGER A,B,C READ(5,501) A,B,C 501 FORMAT(3I5) IF(A.EQ.0.OR. B.EQ.0.OR. C.EQ.0) STOP 1 S = (A + B + C) / 2.0 AREA = SQRT( S * (S - A) * (S - B) * (S - C)) WRITE(6,601) A,B,C,AREA 601 FORMAT(4H A=,I5,5H B=,I5,5H C=,I5,8H AREA=,F10.2,12HSQUARE UNITS) STOP END IF(A.EQ.0.OR. B.EQ.0.OR. C.EQ.0) STOP 1 S = (A + B + C) / 2.0 AREA = SQRT( S * (S - A) * (S - B) * (S - C))

27 ALGOL — 1958 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 27 begin... end begin... end Block structure ::= |... ::= |... BNF Recursion

28 Lisp — 1958 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 28 (defun factorial (n) (if (= n 1) 1 (* n (factorial (- n 1))))) (defun factorial (n) (if (= n 1) 1 (* n (factorial (- n 1))))) Programs as data Garbage collection

29 COBOL — 1959 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 29 modules ADD YEARS TO AGE. MULTIPLY PRICE BY QUANTITY GIVING COST. SUBTRACT DISCOUNT FROM COST GIVING FINAL-COST. ADD YEARS TO AGE. MULTIPLY PRICE BY QUANTITY GIVING COST. SUBTRACT DISCOUNT FROM COST GIVING FINAL-COST.

30 10 INPUT "What is your name: ", U$ 20 PRINT "Hello "; U$ 30 INPUT "How many stars do you want: ", N 40 S$ = "" 50 FOR I = 1 TO N 60 S$ = S$ + "*" 70 NEXT I 80 PRINT S$ 90 INPUT "Do you want more stars? ", A$ 100 IF LEN(A$) = 0 THEN GOTO 90 110 A$ = LEFT$(A$, 1) 120 IF A$ = "Y" OR A$ = "y" THEN GOTO 30 130 PRINT "Goodbye "; U$ 140 END 10 INPUT "What is your name: ", U$ 20 PRINT "Hello "; U$ 30 INPUT "How many stars do you want: ", N 40 S$ = "" 50 FOR I = 1 TO N 60 S$ = S$ + "*" 70 NEXT I 80 PRINT S$ 90 INPUT "Do you want more stars? ", A$ 100 IF LEN(A$) = 0 THEN GOTO 90 110 A$ = LEFT$(A$, 1) 120 IF A$ = "Y" OR A$ = "y" THEN GOTO 30 130 PRINT "Goodbye "; U$ 140 END BASIC — 1964 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 30 interactive programming for the masses interactive programming for the masses

31 JCL — 1964 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 31 //IS198CPY JOB (IS198T30500),'COPY JOB',CLASS=L,MSGCLASS=X //COPY01 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSUT1 DD DSN=OLDFILE,DISP=SHR //SYSUT2 DD DSN=NEWFILE, // DISP=(NEW,CATLG,DELETE), // SPACE=(CYL,(40,5),RLSE), // DCB=(LRECL=115,BLKSIZE=1150) //SYSIN DD DUMMY //IS198CPY JOB (IS198T30500),'COPY JOB',CLASS=L,MSGCLASS=X //COPY01 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSUT1 DD DSN=OLDFILE,DISP=SHR //SYSUT2 DD DSN=NEWFILE, // DISP=(NEW,CATLG,DELETE), // SPACE=(CYL,(40,5),RLSE), // DCB=(LRECL=115,BLKSIZE=1150) //SYSIN DD DUMMY invented scripting for IBM 360

32 Semaphores — 1965 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 32 P — acquire resource … critical section V — release resource P — acquire resource … critical section V — release resource radically simplified concurrency control

33 Planner — 1969 Prolog — 1972 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 33 man(socrates). mortal(X) :- man(X). man(socrates). mortal(X) :- man(X). Facts and rules ?- mortal(socrates). Yes ?- mortal(socrates). Yes Queries and inferences ?- mortal(elvis). No ?- mortal(elvis). No

34 Pascal — 1970 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 34 Supports structured programming Successful with PCs function gcd (a, b: integer) : result real; var x : integer; begin if b= 0 then gcd := a else begin x := a; while (x >= b) do begin x := x - b end; gcd := gcd(b,x) end function gcd (a, b: integer) : result real; var x : integer; begin if b= 0 then gcd := a else begin x := a; while (x >= b) do begin x := x - b end; gcd := gcd(b,x) end begin end begin

35 C — 1972 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 35 Good for portable systems programming Bridging low- and high-level programming #include //echo the command line arguments int main (int argc, char* argv[]) { int i; for (i=1; i<argc; i++) { printf("%s ", argv[i]); } printf("\n"); return 0; } #include //echo the command line arguments int main (int argc, char* argv[]) { int i; for (i=1; i<argc; i++) { printf("%s ", argv[i]); } printf("\n"); return 0; } char* i++

36 Smalltalk — 1972 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 36 Integer»factorial self = 0 ifTrue: [^ 1]. self > 0 ifTrue: [^ self * (self - 1) factorial]. self error: 'Not valid for negative integers' Integer»factorial self = 0 ifTrue: [^ 1]. self > 0 ifTrue: [^ self * (self - 1) factorial]. self error: 'Not valid for negative integers' 5 factorial  120 Everything is an object Everything happens by sending messages “Dynabook” vision self = 0 ifTrue: [^ 1] self > 0 ifTrue: [^ self * (self - 1) factorial].

37 ML polymorphic type inference — 1973 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 37 length [ ] = 0 length (x:xs) = 1 + length xs length :: [a] -> Int length "hello"  5 length [10..20]  11 length [ ] = 0 length (x:xs) = 1 + length xs length :: [a] -> Int length "hello"  5 length [10..20]  11 generic functions may be applied to many types of arguments

38 Monitors — 1974 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 38 structured concurrency control public class Account { protected int assets = 0;... public synchronized void withdraw(int amount) { while (amount > assets) { try { wait(); } catch(InterruptedException e) { } } assets -= amount; }... } public class Account { protected int assets = 0;... public synchronized void withdraw(int amount) { while (amount > assets) { try { wait(); } catch(InterruptedException e) { } } assets -= amount; }... }

39 Bourne shell — 1977 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 39 cat Notes.txt | tr -c '[:alpha:]' '\012' | sed '/^$/d’ | sort | uniq –c | sort –rn | head -5 cat Notes.txt | tr -c '[:alpha:]' '\012' | sed '/^$/d’ | sort | uniq –c | sort –rn | head -5 Scripting pipelines of commands 14 programming 14 languages 9 of 7 for 5 the 14 programming 14 languages 9 of 7 for 5 the

40 SQL— 1978 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 40 SELECT * FROM Book WHERE price > 100.00 ORDER BY title; SELECT * FROM Book WHERE price > 100.00 ORDER BY title; Domain-specific language for relational databases

41 Miranda — 1985 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 41 fibs = 1 : 1 : fibsAfter 1 1 fibsAfter a b = (a+b) : fibsAfter b (a+b) fibs = 1 : 1 : fibsAfter 1 1 fibsAfter a b = (a+b) : fibsAfter b (a+b) Lazy evaluation take 10 fibs  [1,1,2,3,5,8,13,21,34,55] take 10 fibs  [1,1,2,3,5,8,13,21,34,55] “Pure” functional programming

42 Perl — 1987 CGI — 1993 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 42 Text manipulation, then web scripting #!/usr/bin/perl -w print "Content-type: text/html\n\n"; print <<'eof' Directory contents Directory contents eof ; @files = ; foreach $file (@files) { print ' '. $file. " \n"; } print " \n"; __END__ #!/usr/bin/perl -w print "Content-type: text/html\n\n"; print <<'eof' Directory contents Directory contents eof ; @files = ; foreach $file (@files) { print ' '. $file. " \n"; } print " \n"; __END__ @files = ; foreach $file (@files) { print ' '. $file. " \n"; }

43 JavaScript — 1995 AJAX — 2005 © Oscar Nierstrasz Programming Languages, Paradigms and Technology 43 Client-side browser scripting

44 © Oscar Nierstrasz 44 Roadmap  What is a programming language?  Programming = modeling  Evolution  Trends and Challenges Programming Languages, Paradigms and Technology

45 Components, Frameworks, Patterns — 1990s © Oscar Nierstrasz Programming Languages, Paradigms and Technology 45 So far, limited impact on programming languages …

46 Model-Driven Development — 1980s, 1990s © Oscar Nierstrasz Programming Languages, Paradigms and Technology 46 software developer Platform Independent Model automatic translation

47 Trends and Challenges © Oscar Nierstrasz Programming Languages, Paradigms and Technology 47 Bridging gap between users and technology yahoo pipes naked objects subtext graph transformation

48 Conclusions © Oscar Nierstrasz Programming Languages, Paradigms and Technology 48 Programming languages are for humans not just computers Programming is modeling Programming languages have always evolved to bring programming closer to the users’ problems We are still very early in the history of programming


Download ppt "Einführung in die Informatik 2. Programming Languages, Paradigms and Technology Institut für Informatik und angewandte Mathematik."

Similar presentations


Ads by Google