Machinetaal is een taal waarin instructies geschreven zijn die de processor van een computer direct kan uitvoeren. Een programma bestaat in machinetaal uit een reeks woorden, meestal van 8 (een byte), 16, 32 of 64 bits. Een of meer woorden staan voor een specifieke actie die de processor dient uit te voeren. Wanneer de computer in het programma dat hij aan het uitvoeren is bijvoorbeeld de byte 00001010 tegenkomt dan kan dit betekenen dat hij de inhoud van register 1 bij register 0 moet optellen.

Omdat het voor programmeurs tijdrovend is om software in machinetaal te schrijven en te onderhouden, schrijven ze hun software in een voor mensen makkelijker te begrijpen, 'hogere' programmeertaal. De dichtst bij machinetaal liggende programmeertaal is assembleertaal (assembly language, in het Nederlands meestal - niet geheel juist - assembly of assembler genoemd). Afgezien van de pseudo-instructies correspondeert elke assemblerinstructie met een machinetaalinstructie.

Een bijkomend nadeel van machinetaal is dat de instructiesets van verschillende types processoren meestal niet overeenkomen, waardoor het nodig is om software volledig te herschrijven wanneer deze uitgevoerd moet worden op een ander type processor. Aangezien een assembleertaal overeenkomt met een bepaalde machinetaal hebben assembleertalen deze beperking ook.

Voor hogere programmeertalen is een interpreter of compiler nodig om de programma's om te zetten in door een machine uit te voeren machinetaal. Een ander voordeel van het onderscheid tussen assembleertaal en hogere programmeertaal is portabiliteit. Dit houdt in dat voor eenzelfde programmeertaal verschillende interpreters of compilers kunnen bestaan, waardoor dezelfde broncode op verschillende processorarchitecturen kan worden uitgevoerd. Een interpreter of compiler biedt dus een abstractielaag op de processorarchitectuur.

Externe link 
 Chip Directory - Overzicht van instructiesets van een aantal processors

Programmeertaal
Machine