Vantaggi e svantaggi del linguaggio macchina
Lo scopo di qualsiasi linguaggio di programmazione è trasformare un computer da un costoso fermacarte elettronico in un utile dispositivo di elaborazione e archiviazione dati. La scelta di un linguaggio implica un compromesso tra efficienza e facilità d'uso. Il linguaggio macchina rappresenta gli estremi di entrambi questi fattori.
Linguaggio macchina
Il linguaggio macchina produce l'unico set di istruzioni che un computer comprende senza traduttore. I computer gestiscono riproduzione audio/video, elaborazione dati, archiviazione, comunicazione Internet e altre attività specializzate rispondendo a un set di istruzioni che riconosce solo zeri e uni. Scrivere centinaia di righe di codice in zeri e uni è un processo esatto e noioso, che spiega la popolarità di linguaggi di livello superiore come C e Java.
Vantaggi iniziali
Il primo IBM PC aveva 512 KB di RAM e un floppy da 360 KB. Dopo il caricamento del sistema operativo, i programmi venivano caricati nello spazio rimanente, lasciando spesso meno di 100 KB per l'elaborazione dati. In quel periodo, la preoccupazione principale era un codice snello ed efficiente. Gli strumenti preferiti erano il linguaggio macchina, che produce codice molto più piccolo di BASIC o C, e il suo discendente, l'assembly.
Dipendenza dalla piattaforma
Il linguaggio macchina indirizza direttamente l'hardware, dando al programmatore il controllo completo su ogni aspetto dell'esecuzione. Lo svantaggio è che il programmatore deve conoscere l'architettura di ogni chipset per scrivere codice efficace. Se si cambia un componente come scheda video o controller disco, il codice macchina va aggiornato per riconoscere il nuovo dispositivo.
Linguaggi di alto livello
I vantaggi di velocità e impronta di memoria del linguaggio macchina sono sempre più superati dalla difficoltà di scrivere istruzioni a livello di chip in codice binario. Gigabyte di RAM e terabyte di storage hanno eliminato la necessità di codice estremamente efficiente nei PC moderni. Le maggiori richieste di memoria e storage dei programmi in C o Java non sono più un fattore nella scelta della piattaforma. Facilità d'uso e manutenibilità futura sostituiscono velocità ed efficienza nella maggior parte dei progetti software moderni.