Module 4 – Hoofdstuk 1 Programmeertalen Programmeertalen • Een programmeertaal is een taal waarin de opdrachten worden geschreven die een computer moet uitvoeren • Reeksen van die opdrachten of instructies vormen samen een computerprogramma • Er zijn verschillende soorten/categorieën programmeertalen Soorten programmeertalen • Programmeertalen kun je indelen in zes hoofdcategorieën – – – – – – Machinecode Assembleertalen Hogere programmeertalen Vierde-generatietalen Vijfde-generatietalen Objectgeoriënteerde talen Machinecode • De kleinste geheugeneenheid is de bit (binary digit) • De bit is een binair getal dat twee waarden kan hebben: 0 of 1 • In het computergeheugen wordt alles binair vastgelegd, ook programma’s • Machinecode is een programma in binaire vorm Machinecode • Machinecode is de enige code die de processor kan uitvoeren • Programma’s die in een andere taal geschreven zijn moeten dus altijd worden vertaald in machinecode ENIAC-computer • Programmeren met machinecode Machinecode • De allereerste computers werden in machinecode geprogrammeerd • De kans op fouten was daarbij groot • Machinecode is moeilijk te begrijpen • Je kunt daardoor geen grote programma’s schrijven in machinecode • Machinecode is een taal van de eerste generatie, d.w.z. dicht bij de processor Assembleertaal • Assembleertaal is een lagere programmeertaal • Het is een soort machinetaal, maar met lettercodes i.p.v. nullen en enen • Een assembleerprogramma vertaalt die lettercodes in machinecode • Van Dale: – as·sem·ble·ren [assembleere(n)] -bleerde, h geassembleerd samenstellen uit onderdelen; monteren: auto’s ~ Assembleertaal • Assembleertaal is iets makkelijker te onthouden dan machinetaal • Een voorbeeld van code in machinetaal: 1011 0000 0110 0001 • Dezelfde code in assembleertaal: MOV AL, 97 • Assembleertalen zijn talen van de tweede generatie, d.w.z. één stap verder van de processor vandaan dan machinecode Voorbeeld Assembly-programma .model small .stack .data message db "Hello world, I'm learning Assembly !!!", "$" .code main proc mov ax,seg message mov ds,ax mov lea int ah,09 dx,message 21h mov ax,4c00h int 21h main endp end main Hogere programmeertalen • Geen kennis van de eigenschappen van de processor nodig • Derde-generatietalen zijn procedurele talen • De programmeur schrijft de computer een procedure voor • Eén procedureopdracht bevat meerdere machinetaalopdrachten in één Hogere programmeertalen • Derde-generatietalen zijn machineonafhankelijk • Een compiler zet de sourcecode om in machinetaal (objectcode) • Die machinetaal is wél machineafhankelijk Voorbeeld procedure Hogere programmeertaal int eax = 1; while (eax < 10) { eax++; } xor eax, eax inc eax cmp eax, 10 while : ja end inc eax jmp while end : mov eax, 1 xor ebx, ebx int 0x80 Assembleertaal Hogere programmeertalen • Enkele bekende derde-generatietalen: – – – – C C++ Java C# (low level hardware aansturingen) (hardware, maar ook pc applicaties) (opensource, veel toepassing online) (Microsoft variant van Java) Vierde-generatietalen • Nog krachtiger programmaopdrachten • Vierde-generatietalen zijn veel meer probleemgericht • Nadeel: de software bevat veel ballast Vierde-generatietalen • Voorbeelden van vierde-generatietalen: – Rapportgeneratoren – Macro’s in Microsoft Word en Excel – iPhone apps maken met Adobe Flash Vijfde-generatietalen • Wiskundig karakter • Declaratief programmeren Vijfde-generatietalen • Veel toepassing in kunstmatige intelligentie • Voorbeeld taal: Prolog Objectgeoriënteerde talen • Vaak afgekort tot OO – Object Oriënted • Systeem is opgebouwd uit objecten • Wat is een object? – Volgens van Dale: ob·ject het; o -en voorwerp (1, 2) Objectgeoriënteerde talen • Een object bestaat uit – attributen – methoden • Attributen zijn de eigenschappen van een object • Methoden bepalen het gedrag van een object Objectgeoriënteerde talen • Een voorbeeld van een object – Een lamp JAVA en JVM