«

»

feb 24

Il C++ non è ancora morto ( C++11 )

Uno dei linguaggi che ho visto più maltrattare all’Università e di conseguenza poi da molti (sedicenti e/o futuri) ingegneri del software che hanno fatto il grave errore di accettare acriticamente le illazioni dei professori è il C++ (un mio professore ne aveva quasi terrore… )

Michele Sciabarrà anni fa scrisse in un suo post veramente geniale:

C++

Livello di complessità: ESAGERATO. Per impararlo ci metti metà della tua vita. E poi impieghi l’altra metà a convincere gli altri a impararlo, perché devi giustificare a te stesso PERCHE’ hai perduto metà della tua vita.

Credi di fare una cosa, e invece ne fai un’altra. La stessa cosa, in un caso significa una cosa e in un altro significa un’altra. Senza contare che la stessa cosa per un compilatore significa una cosa, per un altro c’è un bug che la fa diventare un’altra, e in un altro ancora non è supportata. E non abbiamo ancora considerato i template.

Ora, Sciabarrà scherzava ma cpp si dicono molte cose cattive…la maggior parte delle quali secondo me derivano da un confronto inappropriato e stupido con Java, si dice prima di tutto che

Il C++ è troppo complicato! nessuno lo conosce per intero!

Il cpp non è complicato, è vasto. L’idea che un linguaggio vada imparato e usato per intero è tipica dei linguaggi di nuova generazione come il Java, ma non è assolutamente una cosa necessaria in genere. Il cpp parte dal principio che se è possibile fare una cosa il linguaggio deve permetterlo, se poi i 4 tipi di cast o l’ereditarietà multipla ti fanno orrore o paura… non usarli!
Resta il fatto che siano utili e comodi per fare workaround, e i workaround servono ( nel mondo reale almeno) e anche fare cose orribili come modificare le variabili dichiarate costanti può tornare utile.

un altra idea ancora più stupida ma comunque abbastanza in voga e che:

La libreria del C++ è scarna!

Confondere la libreria di un linguaggio con il linguaggio è veramente stupido! anche dare per assunto che un linguaggio necessiti di una libreria intrinseca lo è. e comunque le stl e la libreria standard offrono un set di funzionalità che copre tutte le necessità di base, e per il resto se ne trovano a palate di librerie pronte.

E adesso veniamo al vero motivo per cui sto scrivendo

Lo standard C++0X

Dicevo che c++ non è morto e si continua ad evolvere, il suo ultimo standard non è quello del 1998 che tutti conoscono ( o dicono di conoscere), nel 2008 è stato sviluppato una nuova versione del linguaggio  che è attualmente in corso di approvazione da parte dell ISO e dovrebbe diventare uno standard entro quest’anno.

La nuova versione introduce molte nuove funzionalità, sia nel linguaggio che nella sua libreria standard tra cui le più importanti sono il supporto alla programmazione funzionale ( delegate e lambda function) e al multithreading con l’inclusione nelle stl di un interfaccia completa ai pthread ( e chi abbia mai lavorato con quei cosi sa quanto sia prolissa attualmente la loro gestione). per i particolari rimando alla pagina di wikipedia e ai link ai documenti ufficiali alla fine

Questo post fa parte di una serie, gli altri post riguardanti il Cpp0X sono:

Share Button

3 comments

  1. U.M.T.A.

    Concordo in pieno!! Sfortunatamente pure le PMI italiane hanno il terrore di questo linguaggio… ok ok, lì hanno il terrore della programmazione stessa, ma questa è un’altra storia…

    Tornerei volentieri a sviluppare in C++

  2. Vincenzo La Spesa

    Già… quando ho tempo do un occhiata ravvicinata alle nuove funzionalità, in particolare alla programmazione funzionale che mi è sempre piaciuta ( la uso in ruby)

    Peccato che nella mia attuale situazione non posso andare oltre la toy programming, maledetta università.

  3. Maurizio Ingrassia

    Hai ragione, C++ è deprecato semplicemente da chi non vuole o non sa programmare

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>