Bjarne Stroustrup: Unire eleganza e velocità
Bjarne Stroustrup voleva qualcosa che, sulla carta, suonava come una contraddizione: un linguaggio in cui poter scrivere programmi "eleganti come i programmi Simula, ma efficienti come i programmi C". Simula era lento e accademico; C era veloce e spietato. Stroustrup ha trascorso i quattro decenni successivi a dimostrare che la contraddizione era solo apparente e, nel processo, ha costruito il linguaggio che fa ancora funzionare i sistemi operativi, i browser, i motori di gioco e le sale di negoziazione del mondo.
Un inizio di classe operaia ad Aarhus
Stroustrup è nato il 30 dicembre 1950 ad Aarhus, in Danimarca, in una famiglia della classe operaia, e ha studiato matematica con specializzazione in informatica all'Università di Aarhus dal 1969 al 1975. Si è poi recato all'Università di Cambridge per un dottorato in informatica, completato nel 1979 sotto la guida di David Wheeler e incentrato sul calcolo distribuito. È stato a Cambridge, e attraverso l'influenza di Kristen Nygaard — uno dei due inventori di Simula e della programmazione orientata agli oggetti stessa — che Stroustrup ha assorbito le idee su classi, ereditarietà e astrazione che avrebbero definito il lavoro della sua vita. Ha detto che la sua esposizione al potere espressivo di Simula, combinata con la frustrazione per quanto fosse impraticabilmente lento da eseguire, ha piantato il problema specifico che C++ è stato costruito per risolvere.
Bell Labs e la nascita di "C with Classes"
Nel 1979 Stroustrup è entrato a far parte del Computer Science Research Center dei Bell Labs di AT&T a Murray Hill, nel New Jersey — la stessa cultura di ricerca che aveva prodotto Unix e il linguaggio C stesso. Lì ha iniziato a estendere C con classi in stile Simula, chiamando inizialmente il risultato "C with Classes". Il manuale di riferimento interno per quello che sarebbe stato rinominato C++ è apparso nel 1984, e il linguaggio ha raggiunto il rilascio commerciale nel 1985, lo stesso anno in cui Stroustrup ha pubblicato la prima edizione di "The C++ Programming Language", un libro che avrebbe avuto quattro edizioni e traduzioni in ventuno lingue. Ha costruito deliberatamente C++ come un'estensione di C piuttosto che come un linguaggio da zero, una decisione che gli è costata un po' di purezza teorica ma gli ha comprato l'immediata compatibilità con un'enorme base di codice e una catena di strumenti esistenti — uno scambio pragmatico che ha fatto più di ogni altra cosa per determinare quanto velocemente il linguaggio si è diffuso. Ha continuato a dirigere il dipartimento di ricerca sulla programmazione su larga scala dei Bell Labs di AT&T dalla sua creazione fino alla fine del 2002, ed è stato nominato Bell Labs Fellow nel 1993 e AT&T Fellow nel 1996.
Cosa ha aggiunto effettivamente C++
C++ ha aggiunto a C un sistema di tipi statici che trattava i tipi definiti dall'utente con la stessa serietà di quelli integrati, la programmazione orientata agli oggetti basata sulle classi e sull'ereditarietà di Simula, e — in una mossa successiva e probabilmente più influente — la programmazione generica tramite template, consentendo al codice di essere scritto una volta e specializzato per molti tipi senza sacrificare la velocità. Il suo idioma di gestione delle risorse, RAII (l'acquisizione delle risorse è l'inizializzazione), legava la durata di una risorsa alla durata di un oggetto tramite costruttori e distruttori, un modello che ha risolto una classe di bug di memoria e perdite di risorse che avevano afflitto i programmatori C per anni e che in seguito ha influenzato i progetti di gestione delle risorse dei linguaggi con garbage collection. Fondamentalmente, nulla di tutto ciò è avvenuto a scapito dell'accesso diretto di C all'hardware e alle risorse del sistema operativo — la metà dell'efficienza dell'ambizione originale di Stroustrup non è mai stata compromessa per la metà dell'eleganza.
Venti domande, otto minuti di orologio e un percentile misurato su tutti quelli che l’hanno fatto. Senza registrazione.
Fai il test del QI →Guidare un linguaggio attraverso la standardizzazione
Stroustrup non ha semplicemente inventato C++ per poi andarsene. È stato un membro fondatore dello sforzo di standardizzazione ANSI nel 1989 e del successivo comitato ISO nel 1991, e ha presieduto l'Evolution Working Group del comitato — l'organismo che valuta ogni aggiunta proposta al linguaggio — per ventiquattro anni. Si tratta di un mandato di gestione insolitamente lungo per il creatore di qualsiasi linguaggio di programmazione, e ha significato che Stroustrup ha plasmato personalmente il modo in cui C++ ha assorbito decenni di nuove richieste, dal supporto alla concorrenza alla metaprogrammazione in fase di compilazione, senza rompere l'enorme corpo di codice C++ esistente già in esecuzione in produzione.
Carriera accademica e industriale dopo i Bell Labs
Dopo i Bell Labs, Stroustrup si è trasferito alla Texas A&M University nel 2002 come College of Engineering Chair Professor, diventando University Distinguished Professor nel 2011. Nel 2014 è entrato in Morgan Stanley come technical fellow e managing director pur mantenendo contemporaneamente una cattedra di visiting professor alla Columbia University, e dal 2022 è professore ordinario di informatica alla Columbia — un insolito arco di fine carriera che ha posto l'inventore di un linguaggio di sistema al centro della tecnologia di una società di trading di Wall Street.
Premi e riconoscimenti
Le onorificenze di Stroustrup tracciano la sua influenza smisurata piuttosto che un singolo successo celebrato: l'ACM Grace Murray Hopper Award nel 1993, l'elezione come ACM Fellow e IEEE Fellow nel 1994, il William Procter Prize for Scientific Achievement nel 2005 (il primo informatico a riceverlo), la IET Faraday Medal nel 2017 e il Charles Stark Draper Prize nel 2018 "per aver concettualizzato e sviluppato il linguaggio di programmazione C++". Il Computer History Museum lo ha riconosciuto come Fellow nel 2015, attribuendogli il merito di "aver portato la programmazione orientata agli oggetti e la programmazione generica nel mainstream". Non ha ricevuto l'ACM Turing Award.
Perché Bjarne è chiamato un genio
Il caso per definire Stroustrup un genio non si basa su un singolo colpo di originalità teorica — l'orientamento agli oggetti proveniva da Nygaard e Dahl, la programmazione generica aveva precedenti e C esisteva già. Si basa invece su un tipo più raro di giudizio ingegneristico: la capacità di fondere idee che il campo aveva presunto fossero in tensione, senza romperne nessuna, e di continuare a fare quel compromesso correttamente attraverso un quarto di secolo di decisioni di standardizzazione mentre l'informatica stessa cambiava sotto il linguaggio. La citazione del premio Draper gli attribuisce il merito di aver "concettualizzato e sviluppato" C++, un linguaggio che riconosce la sintesi piuttosto che la pura invenzione. Il contro-argomento onesto è sostanziale: C++ è ampiamente criticato, anche all'interno del campo, per la sua complessità accumulata, la sua esposizione dei programmatori a insidie di sicurezza della memoria che linguaggi più recenti come Rust sono stati esplicitamente progettati per eliminare, e per compromessi di progettazione che risalgono direttamente alla decisione fondante di Stroustrup di rimanere retrocompatibile con C. Il suo genio, se la parola si applica, è più vicino all'artigianato magistrale e alla gestione — costruire qualcosa di enormemente utile e imperfetto, e poi tenerlo insieme per quarant'anni — che a un lampo di pura intuizione astratta.
Eredità
C++ rimane fondamentale per i sistemi operativi, i browser, i motori di gioco e i sistemi di trading finanziario, e la sua influenza attraversa visibilmente Java, C# e Rust. La valutazione di Stroustrup sul lavoro della sua vita è sempre stata caratteristicamente priva di sentimentalismi: ha costruito uno strumento destinato a essere utilizzato, e secondo questa misura — pura onnipresenza decennale — C++ ha avuto successo oltre quasi ogni altro linguaggio di programmazione nella storia.

