Imperatief programmeren

advertisement
Hoofdstuk 1
Programmeren
Imperatief programmeren
Von Neumann’s computer-model (1950):
computer
=
+
geheugen
processor
om waarden
op te slaan
om opdrachten
uit te voeren
Opdrachten
Opdracht:
voorschrift om het geheugen te veranderen
opdrachten staan zelf ook in het geheugen
maar veranderen zichzelf niet
Programma:
lange reeks opdrachten,
die één voor één worden uitgevoerd
door de processor
Programmeertalen
Programmeertaal:
notatie voor
programma’s
sinds 1945:
4000 verschillende talen gepubliceerd
Geschiedenis van computers&programmeren:
1940-45
Z3 (Dld 1941)
ENIAC (USA 1943)
Colossus (Eng 1943)
Geschiedenis van computers&programmeren:
1945-50
 Programmeertaal:
Machinetaal
Mark-I (Eng 1948)
Illiac (USA 1948)
Geschiedenis van computers&programmeren:
1950-55
 Programmeertaal:
Assembler
Univac (1951)
Geschiedenis van computers&programmeren:
1955-60
 Programmeertaal:
Fortran
NCR304 (1957)
Zebra (NL, 1958)
Geschiedenis van computers&programmeren:
1960-65
 Programmeertaal:
Cobol
Algol
Lisp
IBM
PDP-1
Geschiedenis van computers&programmeren:
1965-70
 Programmeertaal:
Basic
LINC-8 (1966)
PDP-8 (1966)
Geschiedenis van computers&programmeren:
1970-75
 Programmeertaal:
Pascal
PDP-11 (1970)
Geschiedenis van computers&programmeren:
1975-80
 Programmeertaal:
Simula
Apple-][ (1977)
Geschiedenis van computers&programmeren:
1980-85
 Programmeertaal:
C
Vax-11 (1981)
IBM-PC (1981)
Commodore64 (1984)
Geschiedenis van computers&programmeren:
1985-90
Geschiedenis van computers&programmeren:
1990-95
 Programmeertaal:
C++
Geschiedenis van computers&programmeren:
1995-2000
 Programmeertaal:
Java
Geschiedenis van computers&programmeren:
2000-2005
Geschiedenis van computers&programmeren:
2000-2005
 Programmeertaal:
C#
PHP
Geschiedenis van computers&programmeren:
2005-2010
Geschiedenis van computers&programmeren:
2010-2015
Geschiedenis van
programmeertalen
1945
1950
1955
1960
1965
1970
1975
1980
1985
1990
1995
2000
Mach.taal
Assembler
Fortran
Algol
Basic
Pascal
Simula
C
Cobol
Databases
(periode 3)
SQL
C++
Java
C#
Imperatief
Programmeren
Lisp
Prolog
Functioneel
Programmeren
(jaar 2)
InternetProgrammeren
(jaar 2)
Haskell
Perl
PHP
Python
Geheugencapaciteit
 65er
 70er
 80er
 85er
 90er
 95er
 00er
 05er
 10er
jaren:
jaren:
jaren:
jaren:
jaren:
jaren:
jaren:
jaren:
jaren:
8 kB RAM
16 kB RAM
64 kB RAM
640 kB RAM
4 MB RAM
16 MB RAM
128 MB RAM
1GB RAM
8GB RAM
ponskaarten
tape
floppy-disk
harddisk
CD
DVD
BlueRay
Programmeer-problemen
vroeger:
hoe kan ik het geheugen zo
efficiënt mogelijk gebruiken?
nu:
hoe kan ik die overvloed van
geheugen nog overzien?
Indeling van het geheugen
plaats in het geheugen
met een naam
groepje variabelen
dat bij elkaar hoort
groepje objecten
dat bij elkaar hoort
variabele
object
object
Indeling van het programma
voorschrift om het
geheugen te veranderen
groepje opdrachten
dat bij elkaar hoort
groepje methoden
dat bij elkaar hoort
groepje klassen
dat bij elkaar hoort
opdracht
methode
klasse
namespace
Programmeer-paradigma’s
Imperatief
Assembler
Fortran
Procedureel
Pascal
Basic
Functioneel
Lisp
Algol
Excel
Haskell
C
Objectgeoriënteerd
C++
Declaratief
Java
Simula
C#
Logisch
Prolog
Vertalen 1/5: Assembler
Een assembler vertaalt machine-specifieke
broncode naar objectcode,
die vervolgens kan worden uitgevoerd
.asm
sourcecode
voor processor 1
Assembler
voor processor 1
.exe
machinecode
voor processor 1
.asm
sourcecode
voor processor 2
Assembler
voor processor 2
.a
machinecode
voor processor 2
Vertalen 2/5: Compiler
Een compiler vertaalt de broncode
naar machine-specifieke objectcode,
die vervolgens kan worden uitgevoerd
.cpp
sourcecode
Compiler
voor processor 1
.exe
machinecode
voor processor 1
Compiler
voor processor 2
.a
machinecode
voor processor 2
Vertalen 3/5: Interpreter
Een processor-specifieke interpreter
leest de broncode en voert die uit
.php
sourcecode
Interpreter
voor processor 1
Interpreter
voor processor 2
Vertalen 4/5: Compiler+Interpr.
Een universele compiler vertaalt de
broncode naar een bytecode, die
gemakkelijk kan worden geïnterpreteerd
.java
sourcecode
Compiler
.class
bytecode
Interpreter
voor processor 1
Interpreter
voor processor 2
Vertalen 5/5: Compiler+Compile
Een compiler vertaalt de broncode naar
een intermediate language , die
vervolgens wordt gecompileerd
.cs
sourcecode
Compiler
.il
Intermediate
language
Compiler
voor processor 1
.exe
machinecode
voor processor 1
Compiler
voor processor 2
.a
machinecode
voor processor 2
Vertalen 5/5: Compiler+Compile
Een compiler vertaalt de broncode naar
een intermediate language , die
vervolgens wordt gecompileerd
.cs
sourcecode
.vb
sourcecode
Compiler
Compiler
.il
Intermediate
language
Compiler
voor processor 1
.exe
machinecode
voor processor 1
Compiler
voor processor 2
.a
machinecode
voor processor 2
Programmeer-cyclus
Modelleer
Specificeer
Implementeer
Edit
Compile
Run
Download