Vantaggi e svantaggi del linguaggio a livello di macchina
Lo scopo di qualsiasi linguaggio di programmazione è trasformare un computer da un costoso fermacarte elettronico in un utile dispositivo di elaborazione e archiviazione dei dati. La scelta di una lingua per svolgere questo compito è un compromesso tra efficienza e facilità d'uso. Il linguaggio macchina rappresenta gli estremi dello spettro per entrambi questi fattori.
Linguaggio macchina
Il linguaggio macchina produce l'unico insieme di istruzioni che un computer comprende senza un traduttore. I computer riescono a eseguire la riproduzione audio e video, l'elaborazione e l'archiviazione dei dati, la comunicazione Internet e tutte le altre attività specializzate rispondendo a un set di istruzioni che riconosce solo uno e zero. Scrivere centinaia di righe di codice composte da uno e zero è un processo impegnativo e noioso che spiega la popolarità di linguaggi di livello superiore come C e Java.
I primi vantaggi
Il primo personal computer IBM era dotato di 512 kilobyte di memoria ad accesso casuale e un'unità floppy da 360 kilobyte. Dopo che il sistema operativo è stato caricato in memoria dall'unità floppy, i programmi sono stati caricati nello spazio di memoria rimanente lasciando un'area molto piccola di RAM, spesso inferiore a 100 kilobyte, affinché il programma attivo elabori i dati. Durante questo periodo, la preoccupazione principale di un programmatore era un codice snello ed efficiente. Gli strumenti di programmazione preferiti su questi primi computer erano generalmente il linguaggio macchina, che può essere considerevolmente più piccolo di una versione scritta in BASIC o C. Era anche un po' più facile usare il linguaggio assembly discendente.
Dipendenza dalla piattaforma
Il linguaggio macchina si rivolge direttamente all'hardware del computer, dando al programmatore il controllo completo su ogni aspetto dell'esecuzione di un programma. Lo svantaggio di questo approccio è che il programmatore deve conoscere l'architettura di ogni chipset prima di poter scrivere codice efficace. Quando, ad esempio, viene modificato un componente come una scheda video o un controller dell'unità, è necessario aggiornare il codice della lingua della macchina per riconoscere e indirizzare il nuovo dispositivo.
Lingue di alto livello
I vantaggi in termini di velocità e ingombro di memoria ridotto del linguaggio macchina sono sempre più controbilanciati dalla difficoltà di scrivere istruzioni a livello di chip in codice binario. Gigabyte di RAM e terabyte di spazio di archiviazione disponibile hanno eliminato la necessità di un codice snello ed efficiente nei moderni personal computer. Le richieste di memoria e storage aggiuntive richieste dai programmi scritti in linguaggi di livello superiore come C e Java non sono più un fattore nella scelta di una piattaforma di sviluppo. La facilità d'uso e le preoccupazioni future relative alla manutenzione del programma prendono il posto della velocità e dell'efficienza nella maggior parte dei moderni progetti software.