Home
Bjarne Stroustrup, il creatore di C++

12 Maggio 2023

Bjarne Stroustrup, il creatore di C++

di

Il creatore di C++ continua ogni giorno a dedicarsi al linguaggio forse più significativo nella storia dell’informatica. Con opinioni non scontate.

Le risposte del creatore di C++ alle domande sulla rilevanza odierna del linguaggio

Apogeonline: Quali sono la posizione e il significato di C++ nel mondo della programmazione di oggi? Come si è evoluto nel tempo il linguaggio?

Bjarne Stroustrup: Nella nostra infrastruttura locale, C++ è pervasivo. Non rischio di esagerare nel dire che si trova ovunque. In qualsiasi settore, in qualunque nazione, persino su Marte. Tuttavia è perlopiù invisibile. Spesso è il fondamento di applicazioni e tool chain. Chi non sia un programmatore professionista, probabilmente non lo vedrà mai. Come il sistema di iniezione del carburante nel motore di un’auto: non siamo davvero interessati a vederlo o anche a sapere della sua esistenza. Deve solo funzionare correttamente e affidabilmente.

I programmatori in C++ in tutto il mondo sono circa sei milioni. Le stime divergono, verso l’alto e verso il basso. È difficile contare i programmatori. Le ricerche posizionano regolarmente C++ tra i primi cinque linguaggi di programmazione.

C++ si è certamente evoluto; è nato per evolversi. Sapevo dal primo giorno che non avrei potuto progettare un grande linguaggio di programmazione da solo e in isolamento. Dovevo partire in piccolo e fare crescere C++ attorno a poche idee fondamentali e tanto feedback dall’utilizzo nel mondo reale. È solo buona ingegnerizzazione.

Il tuo lavoro su C++ è cominciato nel 1979, ma il nome C++ è arrivato nel 1983, esattamente quarant’anni fa. Qual è il vero anniversario?

Lo sono entrambi; il 1979 ci ha portato le classi con costruttori e distruttori, e poi dichiarazione e controllo degli argomenti delle funzioni. questa è stata la vera partenza di C++, ma nessuno poteva usare il linguaggio, che si chiamava ancora C with Classes, fino a quando l’ho implementato e ho scritto della documentazione. Il cambi di nome da C with Classes a C++ venne ufficializzato il primo gennaio 1984. La prima versione commerciale del linguaggio e la pubblicazione della prima edizione di The C++ Programming Language datano entrambe al 14 ottobre 1985. Questa potrebbe essere una buona data da ricordare.

C++20 ha tre anni. Quanto è importante questa versione, nella storia del linguaggio e della sua crescita?

C++20 è un notevole passo avanti, confrontabile a quello che è stato C++11. Moduli, concetti e coroutine finiranno per cambiare in profondità il modo in cui lavoriamo. Per esempio, l’uso dei moduli ha accelerato di dieci volte il mio programma Hello, World! nonostante io abbia importato tutta la libreria standard invece di limitarmi a #includere <iostream>. Sono stati constatati miglioramenti equivalenti nelle velocità di compilazione su codice realmente utilizzato, non esercizi o casi di test. I moduli ci permettono di strutturre i nostri programmi in modo più semplice e logico di prima.

Leggi anche: C++: le informazioni di base per iniziare

I concetti completano il design dei template e ci consentono di scrivere programmazione generica con il necessario supporto del sistema dei tipi. Il codice generico finirà per dominare le applicazioni come lo fa già in modo pervasivo nella libreria standard.

Abbiamo inoltre riportato le coroutine. È un passo che apre la strada a una intera nuova categoria di programmi. Le coroutine sono state la spina dorsale che ha portato al successo molte delle prime applicazioni scritte in C++, solo che persone di scarso comprendonio e visione limitata le hanno tenute fuori dalle applicazioni più diffuse e così, per riaverle, abbiamo dovuto aspettare trent’anni.

Oltre a queste funzioni di primo piano, abbiamo miglioramenti a livello di librerie, in particolare i range (finalmente possiamo dire sort(v) piuttosto che sort(v.begin(),v.end())) e molti progressi di minore entità, la maggior parte dei quali risulta essenziale e migliorativo per alcuni usi particolari.

C++20 è a tutti gli effetti un passo in avanti fondamentale di C++ e questo vuol dire che servirà tempo perché la comunità lo possa apprezzare in tutta la sua portata.

Dal 1983 il panorama della programmazione ha assistito a una letterale esplosione di linguaggi di programmazione, radicalmente differenti nei concetti di base e nelle funzioni. Quali linguaggi, non concorrenti diretti di C++, potrebbero costituire il completamento degli attrezzi a disposizione di un programmatore C++?

Sicuro, ogni anno si progettano centinaia di nuovi linguaggi e molti di questi arrivano all’implementazione. molti sono specializzati su un dominio specifico e possono funzionare agevolmente con C++. Penso principalmente, tuttavia, a linguaggi di uso generico.

Non vedo concorrenza verso C++ su tutto lo spettro degli utilizzi concreti possibili, ma molti linguaggi competono con C++ su aree di utilizzo più ristrette. Quello che tiene sulla breccia C++ (e C) è il respiro dell’usabilità. Per avere successo occorre servire bene tutti i propri potenziali utenti e usare un numero elevato di linguaggi complica la collaborazione e la creazione di tool chain. I linguaggi – al plurale – di programmazione mi piacciono, ma per avere successo su larga scala non basta essere i migliori su due o tre cose. In genere auguro le migliori fortune a un nuovo linguaggio. Preferirei solamente che i suoi entusiasti early adopter non lo usassero come pretesto per montare qualche accusa superficiale contro il mitico C/C++ pensando di avere chissà che argomenti tecnici da portare contro il C++ contemporaneo. Di solito è molto più costruttivo spiegare le virtù del proprio linguaggio preferito che puntare il sito sui difetti dei concorrenti percepiti. Preferisco imparare dai nuovi linguaggi e vedere se quello che imparo possa aiutare l’evoluzione di C++ e delle tecniche per utilizzarlo.

Rispetto al mio pensiero sui punti di forza di C++ e di come potrebbe e dovrebbe essere migliorato, rimando ai miei tre saggi History of Programming Languages ACM/SIGPLAN per tutti i dettagli del caso.

L’indice TIOBE ad April 2023 mostra tre differenti versioni di C nelle prime cinque posizioni della classifica: C è secondo con un punteggio del 14,41%; C++ è quarto, al 12.96%; C# è quinto (8.21%). Questa situazione è una fonte di vantaggio o di confusione per l’utenza? Qual è il senso di usare C#, se non C stesso, al posto di C++?

Non sono un grande estimatore di Tiobe perché misura rumore, cioè quello che viene detto sul web, a, posto di quello che viene fatto per implementare sistemi. Uno studente appassionato può pubblicare più di quello che pubblicano 200 sviluppatori di rango. È un problema che riguarda anche altre misurazioni della popolarità; in ogni caso, C++ è sempre vicino alla vetta.

C# è un buon linguaggio, solo che è strettamente legato a Windows. Chi è sicuro che non dovrà mai portare la propria applicazione su un altro sistema, può avvantaggiarsi dell’integrazione con Windows e .Net C#. Chi non lo è, dovrebbe cercare un’alternativa. La scelta del linguaggio da usare non si limita mai alla definizione del suo ambito.

Parlando di C, ho meno certezze. Non ho mai visto un programma che potrebbe essere scritto meglio in C che in C++, fatta eccezione quando in un ambiente manca il supporto per C++. A differenza delle ricerche sul web, le rilevazioni mostrano sempre un uso superiore di C++. La maggior parte dei compilatori C, oggi, è scritta in C++. Già nel 1989, tutto il codice in The C Programming Language, second edition di Kernighan & Ritchie era (anche) C++.

Leggo sul web: sudo & su Being Rewritten in Rust For Memory Safety, i comandi Unix sudo e su riscritti in Rust per maggiore sicurezza dei dati in memoria. È un annuncio estemporaneo o l’esempio di una tendenza?

Il nostro uso di C++ è stato un grande successo! non è uno slogan utilizzabile, perché è una cosa che accade di continuo. Quando accade con qualche altro linguaggio, invece, spesso è una notizia e viene strillata anche dai tetti. Continueremo a leggere storie di questo tenore.

Per quanto posso vedere, il numero di utenti di C++ è in veloce crescita, ma c’è spazio per qualche nuovo linguaggio.

C++ è – come da progetto – un linguaggio che evolve. Adotterà alcune delle funzioni che rendono popolari altri linguaggi, non appena le funzioni suddette rientreranno nella concezione generale di C++.

Dopo così tanti anni di sviluppo ed esperienza, come è oggi il tuo rapporto con C++?

Sono ancora membro del comitato sugli standard e partecipo alla maggior parte delle riunioni. Quest’anno sono a capo del Direction group che ha l’obiettivo di guidare l’evoluzione di C++ verso direzioni costruttive.

Cero di aiutare la comunità a usare e comprendere C++ come è oggi. C’è troppa gente intrappolata in un abito mentale degli anni novante o cerca di usare C++ come se fosse diverso da com’è. Tengo conferenze ritrovabili su YouTube, scrivo articoli rintracciabili facilmente sul web, mantengo aggiornati i miei libri (come A Tour of C++ (3rd edition) nonché, spero, più avanti quest’anno, Programming: Principles and Practice using C++ (3rd edition)) e insegno design con C++ presso la Columbia University.

Su un fronte più tecnico, lavoro su The C++ Core Guidelines per aiutare le persone a scrivere codice migliore e su Profiles per offrire garanzie di sicurezza a codice C++ che ne ha bisogno.

Nel 1983 non avevamo cloud, piattaforme mobile, sistemi operativi open source, Internet of Things e altre tecnologie. Come si inserisce C++ nella programmazione moderna?

C++ è stato progettato per unire accesso diretto allo hardware e astrazione per consentire la stesura di codice più elegante. In pratica è quanto i sistemi chiedono oggi e differisce fondamentalmente dalle grandi piattaforme integrate (e proprietarie) che si erano diffuse negli anni novanta, in parte perché isolavano gli utenti dallo hardware.

Chi volesse approfondire queste considerazioni potrà trovare ampi sviluppi di quanto detto qui nei miei scritti, specialmente nei saggi HOPL, e nelle mie conferenze.

Perché raccomanderesti C++ oggi a un giovane programmatore? Sono le stesse raccomandazioni che avresti scritto venti anni fa?

C++ offre flessibilità e prestazioni insuperate. Questo lo rende utile in un ampio ventaglio di aree applicative. Dovunque si voglia essere e qualsiasi obiettivo di svilupo software si abbia, le probabilità che C++ sia la scelta migliore sono alte.

C++ supporta più tecniche di programmazione e perciò apprenderlo amplia i propri orizzonti più della maggior parte degli altri linguaggi. Significa che può costituire la base di un progetto per il mondo reale, persino se quel progetto non è in C++.

C++, di Bjarne Stroustrup

Il libro più aggiornato sul linguaggio di programmazione tra i più rilavanti al mondo, a cura del creatore di C++.

Non è molto diverso da quello che potevo dire decenni fa. I punti di forza di C++ sono fondamentali e facciamo evolvere il linguaggio in modo che approssimi sempre meglio i suoi ideali.

Quanto lavoro ha richiesto questo nuovo libro? Ci sono aree che richiedono particolare attenzione?

Questo libro non è una guida completa, perché richiederebbe materiale che va molto più nel dettaglio. Lo scopo di Tour3, come talvolta lo chiamiamo, è dare alle persone con una qualche esperienza di programmazione un’idea di come sia fatto C++ oggi. Voglio che i suoi lettori diventino programmatori migliori, non guardiani del linguaggio.

Molti si soffermeranno naturalmente sulle funzioni che compaiono in C++20: moduli, concetti e coroutine, così come i progressi nella libreria standard library, tra cui gli algoritmi di range basati su concetti, viste e span. In verità, i lettori novizi di C++ dovrebbero fare attenzione ad altre cose, per esempio gli idiomi classici di C++ basati su costruttori e distruttori (RAII), che potrebbero risultare una novità utile per migliorare il proprio stile di programmazione. Le funzioni di programmazione concorrente potrebbero essere di ulteriore aiuto.

Le pagine dedicate al linguaggio in Tour3 sono aumentate del 20 percento rispetto a Tour2 e, oltre alle descrizioni delle funzioni più rilevanti, il libro è permeato di aggiornamenti minori su tutto cià che tiene insieme il linguaggio.

Qual è la tua reminiscenza migliore, parlando di C++?

Quello che mi piace del lavorare su C++ riguarda principalmente luoghi, persone e applicazioni interessanti. I Bell Labs sono stati un luogo di lavoro unico. Mi sono entusiasmato quando il CERN ha scoperto il bosone di Higgs, perché sapevo che C++ ha svolto ruolo marginale ma concreto. Trovo straordinario che parte del software di controllo dell’elicottero in volo su Marte sia scritta in C++. Tra le applicazioni C++, mi entusiasmano in particolare quelle scientifiche e ingegneristiche.

Ami ancora il tuo lavoro?

Certamente, o sarei in pensione! In effetti ho smesso di lavorare tre volte (da AT&T, Texas A&M University e Morgan Stanley), ma immagino di non riuscire bene a stare senza lavorare. Al momento sono Professor di Computer Science presso la Columbia University, al lavoro sui prossimi standard ISO e scrivo una riedizione di Programming: Principles and Practice using C++. Sono circa tre lavori. Una cosa buona del mio lavoro (o dei miei tre lavori) è dover viaggiare per parlare con persone interessanti e visitare luoghi interessanti.

Immagine di apertura di Fotis Fotopoulos su Unsplash.

L'autore

  • Bjarne Stroustrup
    Bjarne Stroustrup è l'ideatore del linguaggio di programmazione C++. Autore noto a livello internazionale e professore alla Columbia University, in passato ha lavorato per AT&T Bell Labs, Texas A&M University e Morgan Stanley. Ha ricevuto numerosi riconoscimenti, tra cui il Charles Stark Draper Prize for Engineering della National Academy of Engineering.

Iscriviti alla newsletter

Novità, promozioni e approfondimenti per imparare sempre qualcosa di nuovo

Immagine decorativa form newsletter
Gli argomenti che mi interessano:
Iscrivendomi dichiaro di aver preso visione dell’Informativa fornita ai sensi dell'art. 13 e 14 del Regolamento Europeo EU 679/2016.

Libri che potrebbero interessarti

Tutti i libri

C++

Guida alla scoperta del linguaggio aggiornata a C++20

42,50

59,99€ -29%

33,25

35,00€ -5%

24,99

di Bjarne Stroustrup