1 / 48

Einführung in die Informatik

Einführung in die Informatik. 2. Programming Languages, Paradigms and Technology Institut für Informatik und angewandte Mathematik. Roadmap. What is a programming language? Programming = modeling Evolution Trends and Challenges. Übersicht. Andere Studiengänge. Informatikstudium.

hinto
Download Presentation

Einführung in die Informatik

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Programming Languages, Paradigms and Technology Roadmap • What is a programming language? • Programming = modeling • Evolution • Trends and Challenges

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

  4. Programming Languages, Paradigms and Technology Roadmap • What is a programming language? • Programming = modeling • Evolution • Trends and Challenges

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

  6. Programming Languages, Paradigms and Technology What is a formal language? 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. Programming Languages, Paradigms and Technology How can we describe formal languages? Use a set of rules (a  b) to describe the structure of the language expression  number expression expression + expression expression expression  expression number  digit number  digit number + 3 + 4  5 3  4 5 cf. Chomsky

  8. Programming Languages, Paradigms and Technology What is a Programming Language? (take 1) A language to instruct a computer to compute “stuff” … .-…-…-….-…---.---..-l.-..-.-. .-…-…-….-…---.---..-l.-..-.-. 12368759752465426856875428654482654876578655123687597524654268568754286544826548765786551236875975246542685687542865448265487657865… But how does the computer interpret language?

  9. Programming Languages, Paradigms and Technology What is a Programming Language? (take 2) What the compiler will handle … parse 0100100101100110010001110101011010000110101010100101111001111100010101000101011… .-…-…-….-…---.---..-l.-..-.-. .-…-…-….-…---.---..-l.-..-.-. analyze optimize transform generate But what about syntax and semantics?

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

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

  12. Programming Languages, Paradigms and Technology Roadmap • What is a programming language? • Programming = modeling • Evolution • Trends and Challenges

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

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

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

  16. Programming Languages, Paradigms and Technology Programming is modeling

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

  18. Programming Languages, Paradigms and Technology Roadmap • What is a programming language? • Programming = modeling • Evolution • Trends and Challenges

  19. Programming Languages, Paradigms and Technology Jacquard loom — 1801 Punch cards are invented

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

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

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

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

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

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

  26. Programming Languages, Paradigms and Technology 3rd generation: FORTRAN — 1955 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 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. Programming Languages, Paradigms and Technology ALGOL — 1958 Recursion begin ... end <statement> ::= <unconditional statement> | <conditional statement> | <for statement> ... BNF Block structure

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

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

  30. Programming Languages, Paradigms and Technology BASIC — 1964 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 interactive programming for the masses

  31. Programming Languages, Paradigms and Technology JCL — 1964 //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. Programming Languages, Paradigms and Technology Semaphores — 1965 P — acquire resource … critical section V — release resource radically simplified concurrency control

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

  34. Programming Languages, Paradigms and Technology Pascal — 1970 Supports structured programming function gcd (a, b: integer) : result real; varx : 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 end begin begin begin Successful with PCs end end end

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

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

  37. Programming Languages, Paradigms and Technology ML polymorphic type inference — 1973 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. Programming Languages, Paradigms and Technology Monitors — 1974 public class Account { protected int assets = 0; ... public synchronized void withdraw(int amount) { while (amount > assets) { try { wait(); } catch(InterruptedException e) { } } assets -= amount; } ... } structured concurrency control

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

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

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

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

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

  44. Programming Languages, Paradigms and Technology Roadmap • What is a programming language? • Programming = modeling • Evolution • Trends and Challenges

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

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

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

  48. Programming Languages, Paradigms and Technology Conclusions 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

More Related