Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Programmering – fra instruktion til modellering.  Jens Bennedsen 2001Multimedie programmering1B.2 Programmering Procedurel programmering Objektorienteret.

Lignende præsentationer


Præsentationer af emnet: "Programmering – fra instruktion til modellering.  Jens Bennedsen 2001Multimedie programmering1B.2 Programmering Procedurel programmering Objektorienteret."— Præsentationens transcript:

1 Programmering – fra instruktion til modellering

2  Jens Bennedsen 2001Multimedie programmering1B.2 Programmering Procedurel programmering Objektorienteret programmering Funktions- programmering Logik- programmering Neurale netværk Genetiske algoritmer DNA- computing Probabilistiske algoritmer

3  Jens Bennedsen 2001Multimedie programmering1B.3 Oversigt Starten –~ 1945, von Neumanns arkitektur 50’erne –Fortran, Lisp og Cobol Algol 60 –Simula 67, Pascal, C, Modula, Ada, Smalltalk, C++, Java,... The Paradigms of Programming, 1977 –von Neumanns flaskehals Nysproglig eller klassisksproglig? –Objektorienteret, funktionsorienteret, logik,... Modellering –formelle og uformelle modeller

4  Jens Bennedsen 2001Multimedie programmering1B.4 von Neumanns arkitektur Lager CPU Registre ALU Data Program Bus 0 1 2 3 N - 2 N - 1 Fra cirka 1945

5  Jens Bennedsen 2001Multimedie programmering1B.5 Instruktionssæt LDA (load) STR (store) ADD (add) SUB (sub) JMP (jump) JMZ (jump if zero) JSR (jump subrutine)... Instruktionerne manipulerer arkitekturens komponenter (PC, RR, lager, ). Lager CPU Registre ALU Bus

6  Jens Bennedsen 2001Multimedie programmering1B.6 Maskinkodeprogrammer RDA a ; indlæs a RDA b ; indlæs b LDA a ADD b STR c ; c:= a + b WRT c Symbolske programmer – symbolske instruktioner – symbolske adresser Addér to tal RDA a ; indlæs a RDA b ; indlæs b LDA a STR res ; res:= a LDA b JMZ end ; if b=0 STR b LDA res ADD a STR res ; res:= res+a LDA b SUB #1 ; b:= b-1 JMP while WRT res end: while: Multiplicér to tal

7  Jens Bennedsen 2001Multimedie programmering1B.7 Programmering i 50’erne Omstændeligt Udgangspunkt i den fysiske maskine Sammenblanding af program og data Let at begå fejl (det er det stadig) Ingen hjælp med at finde fejl

8  Jens Bennedsen 2001Multimedie programmering1B.8 Automatisk oversættelse Program skrevet i et højniveausprog Oversættelse Maskinsprogs- program

9  Jens Bennedsen 2001Multimedie programmering1B.9 De første højniveausprog Fortran –FORmula TRANslator –John Backus, IBM, 1954-57 Lisp –List processing (Artificial Intelligense) –McCarthy, 1958-60 Algol –ALGOrithmic Language –Komité (John Backus, Peter Naur,...) –”Overgik de fleste af dets efterfølgere”, – C.A.R. Hoare Cobol –COmmon Business-Oriented Language –Grace Hopper (1906-1992)

10  Jens Bennedsen 2001Multimedie programmering1B.10 Konstruktioner Typede variabler –i: integer; –r: real; Regneudtryk –a + 3*b Kontrolstruktur –selektion (if) –iteration (for, while) Dataabstraktion –arrays, records, filer Procesabstraktion –Subrutiner, procedurer, funktioner

11  Jens Bennedsen 2001Multimedie programmering1B.11 Fordele ved højniveausprog Mere slagkraftigt og dermed nemmere Abstraktionsmekanismer  udvidbart sprog Tidlig fejlfinding Automatiseret fejlfinding (ikke alle fejl!) Effektiv datarepræsentation i computerens lager Effektiv kode

12  Jens Bennedsen 2001Multimedie programmering1B.12 Milepæle i sprogudviklingen Fortran Algol Pascal Simula C C++ Smalltalk Java 1960 1957 1967 1971 1980 1985 1995 Lisp 1958 FP Miranda Haskell Standard ML Prolog BETA Imperative sprog Funktions- sprog Logik- sprog

13  Jens Bennedsen 2001Multimedie programmering1B.13 Imperative sprog Et program er en samling kommandoer der byder computeren at udføre bestemte operationer –x:= x + 1 –write(”Genstart Windows”) –computeAverageSalary(totalSalary, nrOfPeople) –rotate(shape)

14  Jens Bennedsen 2001Multimedie programmering1B.14 = von Neumann-sprog x:= x + 1 LDA x ADD #1 STR x LDA x ADD #1 x STR x von Neumann arkitekturen stikker snuden frem

15  Jens Bennedsen 2001Multimedie programmering1B.15 von Neumanns flaskehals Fysisk flaskehals – begrænser computerens ydeevne Mental flaskehals – begrænser programmørens ydeevne – programmørens tankesæt tvinges til at fokusere på hvordan fremfor hvad 512 MB RAM (GIER, 1965-80: 1 K RAM (40 bit) 4 K Extended RAM 12 K Tromle (disk) ) 1,4 GHz processor 32 bit

16  Jens Bennedsen 2001Multimedie programmering1B.16 Om Paradigmer Thomas S. Kuhn –The Structure of Scientific Revolutions (1962). –Videnskabelig forskning og tanke er defineret af et paradigme (Weltanschaung) inden for hvilket al aktivitet udfolder sig. –På et tidspunkt bliver rammerne så snævre at de kun kan sprænges af en intellektuel revolution... –...og et nyt paradigme opstår! John Backus, Turing Award (1977) –The Paradigms of Programming –von Neumanns flaskehals –Functional Programming (FP)

17  Jens Bennedsen 2001Multimedie programmering1B.17 Paradigmeskift Det er computerens opgave at udføre programmet. Programmeringssprog baseret på en abstrakt, teknologiuafhængig beregningsmodel. Det er programmets opgave at instruere computeren. Imperative programmeringssprog baseret på von Neumanns arkitektur WeltanschaungSprogtype

18  Jens Bennedsen 2001Multimedie programmering1B.18 Fremtrædende sprogklasser Funktionsprogrammering –et program betragtes som en matematisk funktion der transformerer input til output –den abstrakte, teknologiuafhængige beregningsmodel er matematisk funktionsteori (Lambda-kalkyle) Logikprogrammering –et program betragtes som en samling relationer der udtrykker fakta og regler –den abstrakte, teknologiuafhængige beregningsmodel er (en beregnelig delmængde af) matematisk logik (Horn logik) Objektorienteret programmering –et program betragtes som en fysisk model der simulerer opførslen af en reel eller imaginær del af verden –den abstrakte, teknologiuafhængige beregningsmodel er typeteori, begrebsdannelse og begrebsmodellering

19  Jens Bennedsen 2001Multimedie programmering1B.19 Funktionsprogrammering (1) procedure byt(var a: integer; var b: integer); var temp: integer; begin temp:= a; a:= b; b:= temp end; x: integer; y: integer; byt(x,y); swap (a,b) = (b,a) (x,y) = swap(x,y)

20  Jens Bennedsen 2001Multimedie programmering1B.20 Funktionsprogrammering (2) procedure partition(var t: table; l, h: integer; var p: integer); var i, j, e: integer; begin i:= l; j:= h; e:= t[l]; while i <= j do begin if t[i] <= e then i:= i+1 else if t[j] > e then j:= j-1 else begin swap(t[i], t[j]); i:= i+1; j:= j-1 end end; swap(l, j); p:= j; end; procedure sorter(var t: table; l, h: integer); begin if l<h then begin partition(t, l, h, p); sorter(t, l, p-1); sorter(p+1, h) end end;

21  Jens Bennedsen 2001Multimedie programmering1B.21 Funktionsprogrammering (3) sort [] = [] sort e:t = sort [ x  t | x  e ] + [e] + sort [ x  t | x>e ]

22  Jens Bennedsen 2001Multimedie programmering1B.22 Logikprogrammering (1) confucius is old confucius is wise somebody is happy if that somebody is old and wise old(confucius) wise(confucius) (  x |: happy(x)  old(x)  wise(x)) old(confucius) FACT wise(confucius) FACT happy(X) <- old(X), wise(X) RULE ?- happy(charlie) GOAL no ANSWER ?- happy(Y) GOAL Y = confucius ANSWER(S) ?- _ Program Interaktion (udførelse)

23  Jens Bennedsen 2001Multimedie programmering1B.23 Logikprogrammering (2) happy(X) <- old(x), wise(x) happy(X) <- young(X), inLove(X) happy(X) <- rich(X), famous(X) famous(X) <- moviestar(X) famous(X) <- popstar(X) moviestar(charlie) rich(charlie) ?- happy(charlie) yes ?- happy(frederik) no ; yes/no/don’t know ?- _ -----------

24  Jens Bennedsen 2001Multimedie programmering1B.24 Funktions- og logiksprog Specifikationer, ikke instruktioner –Hvad, ikke hvordan Ingen reference til en fysisk maskinmodel –Baseret på abstrakt, teknologiuafhængig beregningsmodel Formelt funderet i matematikken –Funktionsteori og logik

25  Jens Bennedsen 2001Multimedie programmering1B.25 Fra instruktion til modellering Computer Opgave Program der løser opgave på computer Programmering Oversættelse Computer Opgave Program der løser opgave på computer Programmering Oversættelse

26  Jens Bennedsen 2001Multimedie programmering1B.26 Referencer John Backus http://www.sis.pitt.edu/~mbsclass/is2000/hall_of_fame/backus.htm Thomas Kuhn http://www.anova.org/kuhn.html John von Neumann http://www.sis.pitt.edu/~mbsclass/is2000/hall_of_fame/vonneuma.htm


Download ppt "Programmering – fra instruktion til modellering.  Jens Bennedsen 2001Multimedie programmering1B.2 Programmering Procedurel programmering Objektorienteret."

Lignende præsentationer


Annoncer fra Google