Linguaggio macchina, i codici numerici per le operazioni che un particolare computer può eseguire direttamente. I codici sono stringhe di 0 e 1, o cifre binarie (“bit”), che sono spesso convertite sia da che in esadecimale (base 16) per la visualizzazione e la modifica da parte dell’uomo. Le istruzioni del linguaggio macchina usano tipicamente alcuni bit per rappresentare le operazioni, come l’addizione, e alcuni per rappresentare gli operandi, o forse la posizione dell’istruzione successiva. Il linguaggio macchina è difficile da leggere e scrivere, poiché non assomiglia alla notazione matematica convenzionale o al linguaggio umano, e i suoi codici variano da computer a computer.
Il linguaggio di assemblaggio è un livello superiore al linguaggio macchina. Utilizza brevi codici mnemonici per le istruzioni e permette al programmatore di introdurre nomi per i blocchi di memoria che contengono dati. Si potrebbe quindi scrivere “add pay, total” invece di “0110101100101000” per un’istruzione che aggiunge due numeri.
Il linguaggio assembly è progettato per essere facilmente tradotto in linguaggio macchina. Anche se i blocchi di dati possono essere indicati per nome invece che per i loro indirizzi macchina, il linguaggio assembly non fornisce mezzi più sofisticati per organizzare informazioni complesse. Come il linguaggio macchina, il linguaggio assembly richiede una conoscenza dettagliata di una particolare architettura interna del computer. È utile quando tali dettagli sono importanti, come nella programmazione di un computer per interagire con dispositivi di input/output (stampanti, scanner, dispositivi di memorizzazione e così via).