Vai al contenuto principale
BiografiaStoria dell’informaticaPrincipiante

Dennis Ritchie: il linguaggio C al cuore di Unix

Come Dennis Ritchie progettò il linguaggio C e contribuì a Unix, due fondamenta che resero il software di sistema più portabile.

Pubblicato 3 agosto 2026Lettura : 7 minDi Yann Bastien
Ritratto di Dennis Ritchie, progettista del linguaggio C e coautore di Unix
Mostra indice
  1. Cercare un’informatica meno dipendente dalle macchine
  2. Da BCPL e B al linguaggio C
  3. Unix riscritto in C
  4. Il compilatore come strumento di portabilità
  5. Un riferimento prima dello standard
  6. Un’eredità tecnica a doppio volto
  7. Ritchie, Thompson e la cultura Unix
  8. Perché Dennis Ritchie conta ancora
  9. Cronologia
  10. Domande frequenti
  11. Dennis Ritchie ha creato Unix?
  12. Perché Ritchie ha creato C?
  13. C è un linguaggio di basso livello?
  14. Perché la riscrittura di Unix in C fu importante?
  15. Quale ruolo ebbe Brian Kernighan?
  16. Perché C è ancora usato nonostante i rischi?

Dennis Ritchie progettò un linguaggio volutamente compatto, abbastanza vicino alla macchina da poter scrivere un sistema operativo, ma abbastanza indipendente dall’hardware da trasferire quel sistema su nuovi computer. Questa combinazione ha reso C e Unix due fondamenta dell’informatica moderna.

Parlare di Ritchie richiede però di distinguere i contributi. È il principale progettista di C. Unix nasce da un lavoro collettivo ai Bell Labs, avviato da Ken Thompson e sviluppato con Ritchie e altri ingegneri. La loro storia mostra come un linguaggio e un sistema operativo possano trasformarsi a vicenda.

Cercare un’informatica meno dipendente dalle macchine

Dennis MacAlistair Ritchie nasce nel 1941 a Bronxville, nello Stato di New York. Studia fisica e matematica applicata ad Harvard, dove scopre i computer. Nel 1967 entra nel centro di ricerca informatica dei Bell Labs.

Il laboratorio partecipa allora a Multics, ambizioso sistema time-sharing. Quando Bell Labs abbandona il progetto nel 1969, Ken Thompson sperimenta un sistema più piccolo su un PDP-7. Con Ritchie e altri colleghi, quel lavoro diventa Unix.

Le prime macchine dispongono di poca memoria e il software di sistema è spesso scritto in assembly. Questo offre un controllo preciso, ma lega il programma a un’architettura. Cambiare computer significa riscriverne una parte importante.

Da BCPL e B al linguaggio C

Thompson adatta inizialmente le idee di BCPL in un linguaggio chiamato B. È utile per alcuni compiti, ma il suo modello quasi privo di tipi si adatta male al PDP-11 e ai suoi diversi formati di dati. Ritchie evolve B introducendo i tipi e crea il «New B», che diventa C all’inizio degli anni Settanta.

C resta piccolo. Le sue costruzioni corrispondono abbastanza direttamente alle operazioni di un processore, mentre funzioni, strutture, puntatori e tipi consentono di organizzare un programma senza scrivere ogni istruzione in assembly.

Un puntatore rappresenta un indirizzo di memoria. Permette programmi di sistema efficienti e strutture dati flessibili, ma non protegge automaticamente dagli accessi fuori limite, dall’uso di memoria già liberata o dall’interpretazione errata dei dati. Forza e rischi del linguaggio derivano in parte dalla stessa scelta: fidarsi del programmatore.

Unix riscritto in C

Verso il 1973, il kernel Unix viene riscritto in gran parte in C. Alcune porzioni dipendenti dall’hardware restano in assembly, ma la maggior parte del sistema può ormai essere compilata per una nuova macchina con un adattamento limitato.

Il risultato è storico non perché nessun linguaggio di alto livello fosse mai stato usato per un sistema, ma perché Unix dimostra in modo convincente che un sistema operativo performante può diventare portabile. C beneficia poi della diffusione di Unix nelle università; Unix beneficia a sua volta della facilità con cui C consente di adattarlo.

Questa relazione modella anche il linguaggio. C non viene progettato in astratto e poi applicato al sistema: tipi, operatori e libreria evolvono a contatto con esigenze concrete. Molti strumenti Unix sono scritti nello stesso linguaggio del kernel, semplificandone il trasferimento tra macchine.

Il compilatore come strumento di portabilità

La portabilità non deriva soltanto dal testo del linguaggio. Dipende anche da un compilatore capace di tradurre le stesse costruzioni verso set di istruzioni differenti e da una libreria che isoli una parte dei servizi di sistema.

Ai Bell Labs, C evolve insieme ai suoi compilatori. Deve restare abbastanza semplice da essere implementato sulle macchine disponibili e offrire accesso alle loro caratteristiche utili. Per questo array e puntatori sono strettamente collegati, le strutture descrivono l’organizzazione dei dati in memoria e gli operatori corrispondono spesso a istruzioni poco costose.

Il risultato non è una totale indipendenza dall’hardware. Dimensione dei tipi, ordine dei byte e alcuni comportamenti possono variare. Un programma portabile deve rispettare le garanzie del linguaggio invece di presupporre i dettagli di una macchina. La distinzione tra ciò che lo standard garantisce e ciò che un’implementazione decide diventerà centrale nella storia di C.

La diffusione universitaria di Unix accelera un circolo virtuoso. Gli studenti dispongono del sistema, del suo codice e del suo linguaggio principale; sviluppano strumenti, portano Unix su altre macchine e trasferiscono queste pratiche nell’industria. C non si impone quindi solo per qualità astratte: viaggia con un intero ambiente di programmazione.

Un riferimento prima dello standard

Nel 1978 Brian Kernighan e Dennis Ritchie pubblicano The C Programming Language. Il libro, noto come K&R, combina una presentazione concisa, esempi e una descrizione che per anni funge da riferimento di fatto.

La moltiplicazione dei compilatori rende poi necessaria una norma formale. Il comitato ANSI X3J11 inizia i lavori nel 1983; lo standard statunitense esce nel 1989 e diventa ISO nel 1990. Precisa linguaggio e libreria cercando di preservare i programmi esistenti.

Ritchie non controlla dunque da solo l’evoluzione di C. Dopo la sua creazione, il linguaggio diventa un’infrastruttura condivisa, governata da standard e implementata su un’enorme varietà di processori.

Un’eredità tecnica a doppio volto

C influenza direttamente C++ e Objective-C. La sua sintassi segna anche Java, JavaScript, C#, Go e molti altri linguaggi, anche quando gestione della memoria e modello di esecuzione sono profondamente diversi.

La sua impronta maggiore resta negli strati bassi: kernel, driver, librerie di sistema, microcontrollori, database e compilatori. Un’interfaccia definita in C funge spesso da linguaggio comune tra componenti scritti con tecnologie differenti.

Questa presenza non rende C la scelta migliore in assoluto. Le sue garanzie limitate favoriscono vulnerabilità come buffer overflow ed errori di durata della memoria. Strumenti di analisi, regole di codifica e linguaggi più sicuri cercano di ridurre questi rischi. Comprendere l’influenza di Ritchie significa anche capire perché oggi l’industria protegge maggiormente operazioni che C espone direttamente.

Ritchie, Thompson e la cultura Unix

Ritchie contribuisce a Unix come progettista e programmatore, ma attribuire il sistema a una sola persona cancellerebbe il contesto dei Bell Labs. Ken Thompson ha un ruolo iniziale decisivo; Brian Kernighan, Douglas McIlroy e altri contribuiscono agli strumenti, alle idee e alla diffusione.

Ritchie e Thompson ricevono insieme il premio Turing nel 1983 per lo sviluppo della teoria generale dei sistemi operativi e, in particolare, per l’implementazione di Unix. Il riconoscimento congiunto riflette correttamente i loro contributi.

Ritchie prosegue la carriera ai Bell Labs e lavora poi sui sistemi Plan 9 e Inferno. Muore nel 2011. Il suo stile pubblico sobrio contrasta con l’ampiezza della sua eredità.

Perché Dennis Ritchie conta ancora

Ritchie ha contribuito a spostare una frontiera: il software di sistema non doveva più restare quasi interamente prigioniero dell’assembly e di una singola macchina. C ha fornito un livello di astrazione modesto ma decisivo, trasparente verso l’hardware e abbastanza stabile da favorire la portabilità.

La lezione resta attuale. Tra prestazioni e protezione, controllo e astrazione, compatibilità e progresso, ogni linguaggio di sistema riformula ancora i compromessi a cui C ha dato una risposta duratura.

Cronologia

  • 1941: nascita a Bronxville, New York.
  • 1963: laurea in fisica ad Harvard.
  • 1967: ingresso ai Bell Labs.
  • 1969: primi lavori su Unix con Ken Thompson e il team Bell Labs.
  • 1971: Unix viene portato sul PDP-11.
  • 1972: lo sviluppo di C assume una forma riconoscibile a partire da B.
  • 1973: il kernel Unix viene riscritto in gran parte in C.
  • 1978: pubblicazione di The C Programming Language con Brian Kernighan.
  • 1983: Ritchie e Thompson ricevono il premio Turing.
  • 1989: pubblicazione dello standard ANSI C.
  • 1990: C diventa standard internazionale ISO.
  • 2011: morte di Dennis Ritchie.

Domande frequenti

Dennis Ritchie ha creato Unix?

È uno dei principali sviluppatori, ma Unix è un’opera collettiva avviata da Ken Thompson ai Bell Labs. Ritchie ha avuto un ruolo fondamentale nello sviluppo e nella riscrittura in C.

Perché Ritchie ha creato C?

I linguaggi disponibili rispondevano male alle esigenze di Unix sul PDP-11. C doveva offrire tipi ed efficienza vicini all’hardware consentendo al contempo di spostare il codice tra architetture.

C è un linguaggio di basso livello?

Viene spesso definito di livello intermedio. Offre strutture di alto livello come funzioni e tipi, ma espone direttamente indirizzi di memoria e rappresentazione dei dati.

Perché la riscrittura di Unix in C fu importante?

Ridusse la dipendenza dall’assembly specifico di una macchina. Unix poté essere portato più facilmente, favorendone la diffusione e dimostrando la praticabilità dei sistemi portabili.

Quale ruolo ebbe Brian Kernighan?

Kernighan non progettò C, ma contribuì alla documentazione e alla diffusione. Il libro scritto con Ritchie servì da riferimento prima della standardizzazione.

Perché C è ancora usato nonostante i rischi?

Produce codice prevedibile, funziona su quasi tutte le architetture e si integra con moltissimi sistemi esistenti. Questi vantaggi comportano una maggiore responsabilità nella gestione della memoria e della sicurezza.

Questo articolo ti è stato utile?

Fonti e riferimenti

  1. 1.Dennis Ritchie - The Development of the C Language
  2. 2.Dennis Ritchie e Ken Thompson - The UNIX Time-Sharing System
  3. 3.ACM - Dennis Ritchie, premio Turing 1983
  4. 4.Computer History Museum - Dennis Ritchie

Raccolta

Linguaggi di programmazione

3 / 26

  1. 01Grace Hopper: dai primi compilatori a COBOL
  2. 02John Backus: FORTRAN, la notazione BNF e il rifiuto del codice macchina
  3. 03Dennis Ritchie: il linguaggio C al cuore di Unix
  4. 04FORTRAN: dimostrare che un compilatore può competere con l'assembly
  5. 05Il linguaggio C: rendere portabili i sistemi senza nascondere la macchina
  6. 06Niklaus Wirth: da Pascal a Oberon, progettare con la semplicità
  7. 07Bjarne Stroustrup: progettare C++ senza rinunciare alle prestazioni
  8. 08Pascal: imparare a programmare rendendo visibile la struttura
  9. 09C++: da C with Classes al C++ moderno
  10. 10Programmazione orientata agli oggetti: oggetti, messaggi e astrazioni riutilizzabili
  11. 11Guido van Rossum: creare Python per rendere il codice leggibile
  12. 12Brendan Eich: JavaScript, dal prototipo Netscape allo standard del Web
  13. 13James Gosling: l'ingegnere all'origine di Java
  14. 14Python: leggibilità, batterie incluse e un ecosistema globale
  15. 15Java: scrivere una volta, eseguire ovunque
  16. 16JavaScript: il linguaggio che ha reso interattivo il Web
  17. 17Ken Thompson: da Unix a Go, la semplicità come metodo
  18. 18John McCarthy: Lisp e l'idea di programmare con i simboli
  19. 19Alan Kay: Smalltalk e il computer come medium personale
  20. 20Barbara Liskov: l'astrazione che ha reso modulare il software
  21. 21Robin Milner: ML, dimostrazione assistita e linguaggi dell'interazione
  22. 22Brian Kernighan: AWK, Unix e l'arte di spiegare il codice
  23. 23Anders Hejlsberg: da Turbo Pascal a C# e TypeScript
  24. 24Larry Wall: Perl, il linguaggio che ha collegato gli strumenti di Internet
  25. 25Yukihiro Matsumoto: Ruby e la felicità del programmatore
  26. 26Rasmus Lerdorf: PHP e la democratizzazione del Web dinamico