Niklaus Wirth non cercò di progettare un linguaggio capace di fare tutto. Da Pascal a Oberon pose la domanda opposta: qual è il più piccolo insieme di concetti che permette di programmare con chiarezza, verificare le strutture essenziali e costruire un sistema completo?
Questa ricerca produsse linguaggi, compilatori, sistemi operativi e computer sperimentali. Wirth voleva verificare le idee nel loro insieme: il valore di un linguaggio appare nei programmi che consente di organizzare, nella qualità degli strumenti e nella facilità con cui un lettore comprende il risultato.
Perché la struttura dei programmi diventa un problema
Niklaus Emil Wirth nacque nel 1934 a Winterthur, in Svizzera. Studiò elettronica all’ETH di Zurigo, ottenne un master all’Université Laval in Canada e un dottorato a Berkeley nel 1963.
Insegnò poi a Stanford, nell’ambiente dei dibattiti su ALGOL. Il successore ALGOL 68 divenne molto ambizioso; Wirth preferiva un’evoluzione più limitata e contribuì ad ALGOL W. Da questa esperienza ricavò un principio: ogni funzionalità deve rafforzare un modello coerente, altrimenti la complessità viene trasferita dal progettista a tutti gli utenti.
Pascal collega algoritmi e strutture dati
Tornato in Svizzera, Wirth entrò all’ETH nel 1968 e sviluppò Pascal, definito per la prima volta nel 1970. Blocchi, procedure e funzioni rendono visibile l’organizzazione del calcolo; il sistema di tipi distingue valori e consente array, record, insiemi e puntatori.
Il linguaggio restava abbastanza piccolo da essere compreso dagli studenti e implementato in ambito universitario. Una P-machine astratta facilitava il porting del compilatore.
Il titolo Algorithms + Data Structures = Programs esprime il principio centrale: un algoritmo non è indipendente dai dati. Lista, array o albero cambiano operazioni, costi e chiarezza.
La storia di Pascal segue la diffusione nell’insegnamento e sui microcomputer. Il contributo specifico di Wirth era il progetto pedagogico: imparare a costruire programmi rendendone esplicite le strutture.
Le qualità di Pascal mostrano anche i suoi limiti
Il successo superò l’insegnamento e nacquero molti compilatori e dialetti. Emersero esigenze come compilazione separata, librerie, accesso al sistema e organizzazione di programmi sviluppati da più persone.
UCSD Pascal rese popolare il P-code; Turbo Pascal, sviluppato più tardi sotto la guida di Anders Hejlsberg, unì compilatore veloce e ambiente integrato. Non erano creazioni di Wirth.
Wirth preferì affrontare la modularità con nuovi linguaggi invece di estendere Pascal indefinitamente.
Modula rende verificabili i confini tra componenti
A metà degli anni Settanta Wirth sviluppò Modula, poi Modula-2 dal 1977. Un grande programma doveva essere separato in moduli con interfacce esplicite. Un modulo pubblica tipi e operazioni e nasconde l’implementazione; il compilatore verifica gli scambi attraverso il confine.
Modula-2 aggiunse meccanismi per sistemi e concorrenza. Accompagnò il progetto Lilith, un personal computer sviluppato all’ETH. Progettare insieme macchina, compilatore, sistema e applicazioni permetteva di osservare i compromessi dell’intera pila.
Oberon spinge oltre la riduzione
Dopo un soggiorno allo Xerox PARC, Wirth avviò con Jürg Gutknecht Oberon, linguaggio e sistema operativo. Derivava da Modula-2 ma rimuoveva deliberatamente diversi meccanismi.
L’obiettivo era un nucleo abbastanza piccolo da poter essere spiegato, compilato e usato per costruire tutto il sistema. Compilatore, display, testo, file e strumenti formavano un ambiente coerente.
Oberon non ebbe la diffusione commerciale di Pascal, ma divenne uno studio completo sulla progettazione dei sistemi e mostrò che un ambiente interattivo poteva essere costruito con una quantità relativamente limitata di codice.
Cosa significa davvero semplicità per Wirth
La frase spesso associata a Wirth, secondo cui il software rallenta più rapidamente di quanto l’hardware acceleri, riassume la sua preoccupazione per la complessità crescente.
La risposta non era rifiutare le astrazioni. Pascal, Modula e Oberon ne offrono di potenti: tipi definiti dall’utente, moduli, interfacce e dati strutturati. Wirth cercava di ottenere questa potenza con poche regole dalle conseguenze prevedibili.
Esistono compromessi: un linguaggio ridotto può richiedere più codice specializzato o offrire meno librerie; la compatibilità con programmi esistenti limita la possibilità di rimuovere meccanismi. Semplicità, compatibilità, prestazioni ed espressività non possono sempre essere massimizzate insieme.
Un’eredità nell’insegnamento e nell’ingegneria
Wirth ricevette il premio Turing nel 1984 per i suoi linguaggi e la loro influenza sull’insegnamento e sulla pratica. Andò in pensione dall’ETH nel 1999, continuando a sperimentare con Oberon e hardware. Morì nel 2024.
Pascal formò generazioni di programmatori. Modula-2 rese familiare la separazione tra interfaccia e implementazione. Oberon mostrò come linguaggio, sistema e strumenti possano essere progettati come un tutto.
Wirth lasciò soprattutto una disciplina: costruire, misurare, eliminare ciò che non è necessario e verificare che l’insieme resti comprensibile.
Cronologia
- 1934: nascita a Winterthur.
- 1959: diploma in ingegneria elettronica all’ETH Zurich.
- 1960: master all’Université Laval.
- 1963: dottorato a Berkeley e insegnamento a Stanford.
- 1966: sviluppo di ALGOL W.
- 1968: professore all’ETH Zurich.
- 1970: prima definizione di Pascal.
- 1975: prima versione di Modula.
- 1977–1978: Modula-2 e progetto Lilith.
- 1984: premio Turing.
- 1986–1988: Oberon con Jürg Gutknecht.
- 1999: pensionamento dall’ETH.
- 2013: edizione modernizzata di Project Oberon.
- 2024: morte a 89 anni.
Domande frequenti
Niklaus Wirth creò Pascal da solo?
Fu il principale progettista e ne definì gli obiettivi. Compilatori e diffusione coinvolsero però collaboratori dell’ETH e molte squadre esterne.
Perché Pascal fu progettato per l’insegnamento?
Wirth voleva un linguaggio piccolo e comprensibile, ma abbastanza ricco per insegnare procedure, tipi e strutture dati. L’obiettivo era imparare a organizzare programmi.
Wirth creò Turbo Pascal?
No. Turbo Pascal fu sviluppato da Borland sotto la guida di Anders Hejlsberg a partire da un compilatore precedente.
Qual è la differenza tra Pascal e Modula-2?
Pascal privilegia la programmazione strutturata; Modula-2 aggiunge meccanismi per software di grandi dimensioni e sistemi, soprattutto moduli con interfacce esplicite e compilazione separata.
Oberon è solo un linguaggio?
No. È anche un sistema operativo progettato con Jürg Gutknecht per verificare che pochi concetti potessero sostenere un ambiente completo.
Perché le idee di Wirth restano attuali?
Il software continua a soffrire di complessità accumulata. Tipi espliciti, moduli, interfacce strette e rimozione dei meccanismi inutili restano strumenti essenziali per mantenere i sistemi comprensibili.