Vai al contenuto principale
BiografiaStoria dell’informaticaPrincipiante

Niklaus Wirth: da Pascal a Oberon, progettare con la semplicità

Come Niklaus Wirth usò Pascal, Modula e Oberon per collegare linguaggi, algoritmi, modularità e architettura dei computer.

Pubblicato 10 agosto 2026Lettura : 5 minDi Yann Bastien
Ritratto storico di Niklaus Wirth
Mostra indice
  1. Perché la struttura dei programmi diventa un problema
  2. Pascal collega algoritmi e strutture dati
  3. Le qualità di Pascal mostrano anche i suoi limiti
  4. Modula rende verificabili i confini tra componenti
  5. Oberon spinge oltre la riduzione
  6. Cosa significa davvero semplicità per Wirth
  7. Un’eredità nell’insegnamento e nell’ingegneria
  8. Cronologia
  9. Domande frequenti
  10. Niklaus Wirth creò Pascal da solo?
  11. Perché Pascal fu progettato per l’insegnamento?
  12. Wirth creò Turbo Pascal?
  13. Qual è la differenza tra Pascal e Modula-2?
  14. Oberon è solo un linguaggio?
  15. Perché le idee di Wirth restano attuali?

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.

Questo articolo ti è stato utile?

Fonti e riferimenti

  1. 1.ETH Zurich - Niklaus Wirth
  2. 2.ETH Zurich - 50 Years of Pascal
  3. 3.ETH Zurich - History of the Department of Computer Science
  4. 4.Niklaus Wirth - From Modula to Oberon
  5. 5.ACM - Turing Award Lecture

Raccolta

Linguaggi di programmazione

6 / 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