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