I 70 anni del papà di B…Unix

Qualche giorno fa (4 febbraio) Ken Thompson ha spento 70 candeline, e il nostro augurio è doveroso ad uno dei papà di Unix, insieme a Dennis Ritchie, oltre che di Plan 9 e MULTICS.

thompson

Ken Thompson

Quello che forse i più ignorano è che Thompson è anche l’inventore del linguaggio di programmazione precursore del C (sviluppato da Ritchie e utilizzato per riscrivere praticamente da zero UNIX nel 1973), ovvero il linguaggio B.

Come molti dei lavori sviluppati da Thompson, il linguaggio B viene sviluppato presso i Bell Labs ed oggi resta solo nel ricordo di pochi pionieri e di alcune pagine web che lo rappresentano come uno strumento di transizione tra BCPL (Basic Combined Programming Language) e Linguaggio C.

La scelta della lettera B, per contraddistinguere il linguaggio può avere diverse origini: Thompson lo attribuisce ufficialmente alla prima lettera di BCPL, ma potrebbe anche essere riferito all’iniziale del nome della moglie Bonnie a cui già in precedenza aveva dedicato il nome del linguaggio “Bon”, realizzato per il sistema operativo Multics.

In sintesi B è molto simile a BCPL, ma Thompson lo priva di tutti i componenti ritenuti superflui per girare al meglio sui minicomputer del tempo, caratterizzata da una memoria molto limitata. Inoltre Thompson apporta una serie di modifiche che, nel suo intento, possono migliorarne l’utilizzo: si pensi alla riduzione del numero di caratteri “non-whitespace” nella sintassi di programmazione. La più forte limitazione (ereditata da BCPL ma presente anche in altri linguaggi come il FORTH) è rappresentata dalla disponibilità di solo un tipo di dato, che potremmo indicare come computer word. Da un punto di vista degli operatori, quelli aritmetici di base (+, -, *, /) trattano la word come un intero, mentre in altri casi viene vista come un indirizzo di memoria da dereferenziare.

Nella struttura, B può essere paragonato ad una versione preliminare del linguaggio C, vista la presenza di alcune librerie di funzioni, compreso una pseudo libreria standard di I/O del Linguaggio C.

Come per UNIX, il linguaggio viene realizzato inizialmente su un DEC PDP-7, oltre che su un Honeywell a 36 bit dotato del sistema GCOS.  Inoltre il sorgente B viene compilato in “threaded code” e, solo successivamente, Ritchie, e non Thompson, crea un compilatore apposito. Con l’arrivo del PDP-11 (1971), Ritchie comincia a fare cambiamenti al linguaggio per abbracciare il supporto ai “tipi di dati” del nuovo calcolatore, dando vita al New B (1971-1972), conosciuto con la sigla NB, che nel giro di un anno si arricchisce del pre-processore grazie al contributo di Alan Snyder.

Il linguaggio B, nelle sue varie incarnazioni, verrà utilizzano fino a fine degli anni 90 sui mainframe Honeywell e su alcuni sistemi embedded per abbracciarne le specifiche limitazioni hardware. Da sottolineare come Alan Cox, figura fondamentale nello sviluppo del Kernel Linux, utilizza proprio il linguaggio B per scrivere AberMUD, il primo popolare gioco di ruolo MUD (acronimo di Multi User Dungeon/Dimension/Domain.

Ken Thompson e Dennis Ritchie “spiegano” UNIX

Press ESC to close