Le differenze tra i linguaggi di programmazione di alto e basso livello
I linguaggi di programmazione
Un linguaggio di programmazione è una lingua con cui gli esseri umani possono istruire i computer. Un programma è un elenco di istruzioni preparate per essere consegnate a un computer ed eseguite. In sostanza, le istruzioni memorizzano, spostano e modificano i valori nella memoria del computer. Questi valori possono essere interpretati da diversi dispositivi, come monitor, altoparlanti, tastiere, touch pad o mouse, che forniscono modi di comunicare con l'utente.
Il codice macchina
Un linguaggio di basso livello è vicino alle basi dell'hardware del computer. La lingua di livello più basso è il codice macchina, che l'hardware comprende direttamente e non richiede interpretazione o traduzione. Il codice macchina è composto interamente da stringhe di numeri binari: i famosi zeri e uno. Mentre può fare tutto ciò che qualsiasi altra lingua può raggiungere (in effetti il resto delle lingue deve essere tradotto in codice macchina dall'interprete), non è progettato per soddisfare le esigenze del programmatore e richiede una conoscenza approfondita del processore e i dispositivi del computer, inoltre è quasi impossibile per un umano leggerlo.
Il linguaggio dell'assemblaggio
Il successivo linguaggio di programmazione di livello "superiore" è il linguaggio assembly, che è un codice macchina i cui codici di istruzioni sono stati sostituiti da comandi più intuitivi. Ad esempio, il comando per inserire il valore 97 in un registro di memoria è chiamato AL (nel codice macchina sarebbe "10110000 01100001"), e nel linguaggio assembly sarebbe "MOV AL, 97", che è ancora un comando criptico ma è molto più facile da leggere. Sebbene sia ancora inefficiente da scrivere e richiede al programmatore di trattare direttamente con l'hardware del computer, è un linguaggio di livello superiore rispetto al codice macchina perché è più astratto, cioè è più vicino al programmatore.
Lingue di alto livello
I programmatori moderni raramente scrivono in linguaggio assembly. Invece, usano uno dei tanti linguaggi di alto livello come C, Java o Python, i cui programmi chiamati compilatori o interpreti possono tradurre in codice macchina. Questi linguaggi impediscono al programmatore di essere coinvolto con il mondo fisico dell'hardware e portarlo all'astrazione logica: invece di spostare i valori esadecimali dai registri di memoria, il programmatore lavora con variabili il cui contenuto può essere modificato, con cicli che possono essere ripetuti finché non viene soddisfatta una condizione, con istruzioni logiche come IF, AND, THEN, OR e ELSE, tra gli altri strumenti. Queste lingue sono progettate per il programmatore, che si occupano dei modi in cui la massima potenza può essere raggiunta con la minima difficoltà.
i confronti
Le lingue di alto livello non ricevono quel nome perché sono "migliori" delle lingue di basso livello. A volte la capacità di comunicare direttamente con il processore del computer in linguaggio assembly o anche codice macchina può risolvere i problemi che i livelli di astrazione di un linguaggio di alto livello possono rendere difficili. Un linguaggio di alto livello può gestire solo un sistema operativo specifico, come Microsoft Visual Basic o un determinato programma, come i "macro" di un elaboratore di testi. Questi programmi sono molto utili per chiunque voglia manipolare Windows o Word senza dover sapere come funziona, ma tale linguaggio non sarebbe utile per qualcuno che cerca di scrivere il proprio programma e ha bisogno di un linguaggio di livello inferiore. Pertanto, un programmatore sceglie una lingua a seconda del lavoro che deve eseguire.