C++0x è stato il nome non ufficiale del nuovo standard del linguaggio di programmazione C++. In queste poche righe tento di dimostrare che il C++0x è una ciofeca mostruosa!

Questa pagina è stata scritta a settembre 2010, poche settimane dopo la definizione dell'open standard N3126 (pdf) a cui segue la promessa di una certificazione definitiva per la fine dell'anno 2011 e della disponibilità di compilatori rispettosi dello standard durante l'anno 2012.

Il nome C++0x intende seguire a C++98 e C++03 (cioè il 1998 e il 2003, anni della definizione dello standard ISO/IEC 14882 e della sua prima revisione); la "x" intendeva dire che tra il 2004 e il 2009 sarebbe nata la specifica definitiva (dunque i numeri esadecimali non c'entrano). Visto che ci toccherà aspettare il 2012, abbiamo tempo per farci due risate alla faccia del C++0x.

** Definizioni preliminari **

I linguaggi di programmazione dovrebbero permettere di risolvere problemi dando il massimo risultato col minimo sforzo. Minimo sforzo significa che il programmatore non dovrebbe sforzarsi troppo nel definire "cosa" va fatto e "come" va fatto. Massimo risultato significa che una volta scritto il codice, la verifica che è funzionante secondo le specifiche dovrebbe essere semplice.

Il C++0x invece garantirà minimo risultato ("0") con massimo sforzo ("x") a causa della notevole complessità del linguaggio, di alcune fastidiose incompatibilità con le precedenti versioni, dell'incomparabile bizantinismo di grammatica e librerie, del mostruoso overhead, del fatto che è sconsigliabile utilizzarlo per progetti che non siano almeno di parecchie migliaia di linee di codice.

Per definizione internazionale il termine ciofeca indica, oltre che l'orrendo surrogato di caffè anche i linguaggi di programmazione in cui il programmatore fa più fatica ad accontentare il compilatore che ad accontentare l'utente finale.

A costoro era dedicata la battuta di Totò: «è una ciofeca! Ma allora ditelo che è una ciofeca! E non scrivete Caffè dello Sport: scrivete Ciofeca dello Sport!»

** Un po' di storia **

In principio fu il linguaggio C. Poco importa che il C fosse disceso dal B, che il B fosse una versione ridotta del BCPL, e che il BCPL discendesse dal CPL figlio dell'ALGOL-60, alternativa alle stramberie dei tipici Assembler dell'epoca.

Il C è un linguaggio di programmazione talmente spartano che ancora oggi, quarantenne, sopravvive.

Il C++ è il tentativo di miglioramento (anzitutto aggiungendo le fatidiche "classi") del linguaggio C, tentativo cominciato nel 1979 e che a distanza di più di trent'anni non può ancora dirsi completo visto che neppure il C++0x è da considerare stabilizzato e definitivo.

Dal sopracitato BCPL il C++0x eredita il "doppio slash" per dichiarare che il resto della riga di codice è un commento.