C plus plus

Il titolo di questo articolo non è corretto per via delle caratteristiche del software MediaWiki. Il titolo corretto sarebbe C++.

Il C++ è un linguaggio di programmazione orientato agli oggetti sviluppato da Bjarne Stroustrup ai Bell Labs negli anni '80 e rilasciato nel 1986. È basato sul linguaggio C. Nonostante la maggior parte del codice sorgente C sia valido anche per il C++, il C non è un sottoinsieme del C++ nel senso più stretto della parola. Il C++ fu standardizzato nel 1998 (ISO/IEC 14882-1998 "Information Technology - Programming Languages - C++").

In aggiunta al supporto alla programmazione orientata agli oggetti, il C++ è distinto dal C per il suo supporto alla programmazione generica e alla metaprogrammazione attraverso l'uso dei templates.

Il C++ è molto diffuso e apprezzato, ma raramente è usato al massimo delle sue potenzialità: la semantica del C++ è molto ricca di dettagli e sfumature che condizionano il comportamento del codice, e che molto spesso i compilatori implementano in maniera scorretta o incompleta: molte delle caratteristiche dello standard ISO del linguaggio non sono ancora implementate nei compilatori attuali, anche se la situazione sta migliorando lentamente. La grande ricchezza semantica del C++, insieme alle librerie che lo accompagnano, lo rende un linguaggio estremamente espressivo e potente, ma che richiede molto tempo per venire appreso e padroneggiato completamente. Inoltre a causa della variabilità del comportamento dei compilatori nel maneggiare le funzioni più avanzate del linguaggio, i programmi C++ che scelgono di farne uso si rivolgono ad un'architettura (processore, sistema operativo e compilatore) particolare sacrificando la portabilità su altre piattaforme.

Il C++ ha una libreria standard, in modo simile al C. Oltre a questa, particolare importanza nel C++ ricopre la STL, Standard Template Library. Si tratta di una libreria che definisce una serie di template generici per strutture dati comuni, come vettori, code, array associativi, e così via. La programmazione ne risulta molto semplificata, al prezzo di un gran lavoro del compilatore per interpretare i complessi template.

Il nome del linguaggio, scritto "C++" e pronunciato "si plas plas", rappresenta la sua evoluzione dal C. Fu suggerito da Rick Mascitti nella metà del 1983, quando il linguaggio veniva usato per la prima volta al di fuori dei centri di ricerca. All'inizio ci si riferiva al linguaggio semplicemente come "C con classi", direttamente sviluppato con CFront.

Il nome è un gioco di parole con un costrutto del C (dove il doppio segno più è un operatore che ha l'effetto di incrementare il valore di una variabile) insieme con la comune convenzione di aggiungere un segno più per indicare una versione potenziata. Secondo Stroustrup: "++ è l'operatore di incremento del C... il nome esprime la natura evoluzionaria dei cambiamenti dal C". Impiegando il gioco di parole si evita anche il problema che "C+" è già stato usato per un linguaggio senza alcun nesso col C++ (senza menzionare che è comunemente associato con una valutazione meno che stellare di una performance accademica).

Alcuni puristi, notando che nel C il valore dell'espressione "C++" è il valore originale e non modificato di "C", hanno suggerito che "++C" sarebbe stato un nome più appropriato.
Per esempio, se x = 3, sia y = x++, allora y == 3 e x == 4. Se y = ++x, allora y == 4 e x == 4.

Bjarne Stroustrup mantiene una [http://www.research.att.com/~bs/bs_faq.html lista di Domande Frequenti] (FAQ) sul linguaggio.

Programmi di esempio

Hello, world!

 #include <iostream>
 
 int main()
 {
     std::cout << "Hello world!" << std::endl;
 }
 

Definizione di Classe

#include <string>
  
 class Message {
   std::string subject_;
   std::string from_;
    
 public:
   Message (const std::string& subject,
            const std::string& from)
          : subject_(subject),
            from_   (from)
            {}
    
   std::string subject() const { return subject_; }
   std::string from()    const { return from_;    }
 };
 




Principali linguaggi di programmazione (tutti)

Ada | ALGOL | APL | Awk | BASIC | C | C++ | C# | COBOL | Delphi | Eiffel | Fortran | Haskell | IDL | Java | JavaScript | Lisp | LOGO | ML | Objective C | O'Caml| Pascal | Perl | PHP | PL/I | Prolog | Python | Ruby | SAS | Scheme | sh | Simula | Smalltalk | SQL | Visual Basic



See also: C plus plus, 1983, 1986, 1998, ALGOL, APL, Ada, Awk