Imperatief programmeren

advertisement
Hoofdstuk 1
Programmeren
Imperatief programmeren
Von Neumann’s computer-model:
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
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 2)
SQL
C++
Java
C#
Imperatief
Programmeren
Lisp
Prolog
Functioneel
Programmeren
(periode 3)
InternetProgrammeren
(periode 3)
Haskell
Perl
PHP
Python
Geheugencapaciteit
 65er
 70er
 80er
 85er
 90er
 95er
 00er
 05er
jaren:
jaren:
jaren:
jaren:
jaren:
jaren:
jaren:
jaren:
8 kB RAM
ponskaarten
16 kB RAM tape
64 kB RAM floppy
640 kB RAM
4 MB RAM harddisk
16 MB RAM CD
128 MB RAM DVD
1GB RAM
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
package
Programmeer-paradigma’s
Imperatief
Fortran
Procedureel
Pascal
Assembler
Declaratief
Basic
Functioneel
Lisp
Algol
Excel
Haskell
C
Objectgeoriënteerd
Simula
C++
Java
Logisch
Prolog
Java
waarom?
Imperatief én procedureel én
object-georiënteerd
Prettig te leren
Uitgebreide methode-bibliotheken
ook voor window-programma’s
Lauw:: programmeren voor het internet
 Cool
Vertalen 1/4: 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/4: 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/4: Interpreter
Een processor-specifieke interpreter
leest de broncode en voert die uit
.php
sourcecode
Interpreter
voor processor 1
Interpreter
voor processor 2
Vertalen 4/4: 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
Programmeer-cyclus
Modelleer
Specificeer
Implementeer
Edit
Compile
Run
Samenvatting
Imperatief programmeren:
programma bestaat uit opdrachten,
die het geheugen veranderen
Object-georiënteerd programmeren:
variabelen die bij elkaar horen
zijn gegroepeerd in objecten
Samenvatting
 Opdracht :
voorschrift om geheugen te veranderen
 Methode :
groepje opdrachten met een naam
 Klasse :
groepje methoden met een naam
Samenvatting
Vertalen van hogere taal (broncode)
naar machinetaal (objectcode)
Assembler
Interpreter
Compiler
Compiler - bytecode - interpreter
Download