C’è qualche disaccordo riguardo alla definizione esatta di un linguaggio di programmazione di basso livello, ma tutte le definizioni condividono alcune cose in comune riguardo alle caratteristiche di un tale linguaggio per computer. Tali caratteristiche includono: somiglianza con il codice binario, conoscenza richiesta del ruolo dell’unità di elaborazione centrale (CPU) e capacità del programmatore di controllare l’hardware tramite il linguaggio. Alcune persone considerano qualsiasi linguaggio informatico di basso livello se non è simile a una lingua parlata dalle persone. Altri considerano qualsiasi linguaggio che richieda al programmatore di comprendere il funzionamento intricato e molto complesso della CPU un linguaggio di basso livello. Va ricordato che un linguaggio di programmazione veramente di basso livello generalmente si adatta a tutte queste descrizioni.
Il codice binario, chiamato anche codice macchina, è l’unico linguaggio che la CPU, o il “cervello” di un computer, capisce e “parla”. Il codice macchina, se visualizzato da una persona, assomiglia a molte sequenze dei numeri 1 e 0; rappresentano uno stato in cui si è accesi o spenti, proprio come una luce che viene accesa o spenta. Il codice di un linguaggio di programmazione di alto livello sarebbe molto diverso dal codice macchina in quanto contiene simboli e parole reali che vengono utilizzate in una lingua, di solito l’inglese, che le persone parlano. Ciò non significa, tuttavia, che qualcuno che non è un programmatore di computer capirebbe il codice in un linguaggio di alto livello non più di quanto lo farebbe con uno di basso livello.
Tra i maggiori vantaggi di un linguaggio di programmazione di basso livello c’è la capacità e la libertà di esercitare un controllo preciso su cose come l’utilizzo della memoria e il tempo di elaborazione. Ciò significa che i programmi scritti in un linguaggio di basso livello dovrebbero fare un uso molto efficiente delle risorse di sistema, che può essere altamente desiderato quando si codifica per sistemi con risorse molto limitate. Un tale vantaggio non è senza un prezzo. Gli sviluppatori e gli ingegneri che codificano in un linguaggio di programmazione di basso livello devono avere una buona comprensione delle funzioni della CPU per scrivere istruzioni che influiscono sulla memoria e sui tempi di elaborazione.
La codifica in un linguaggio di programmazione di basso livello è estremamente lunga e noiosa. Ciò aumenta comprensibilmente il costo connesso allo sviluppo di un programma in tale linguaggio, poiché l’equivalente di appena due righe di codice in un linguaggio di alto livello può richiedere fino a 20 righe in un linguaggio di programmazione di basso livello. Uno sviluppo così lento rende i linguaggi di basso livello adatti principalmente a programmi molto piccoli. Non vengono quasi mai utilizzati per lo sviluppo di programmi più grandi.