C++: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Deficiente
Musicale 89 (discussione | contributi)
Annullata la modifica 97614574 di 151.18.24.224 (discussione)
Etichetta: Annulla
Riga 1:
{{Avvisounicode}}
{{n|Informatica|maggio 2018|}}
{{Linguaggio di programmazione
| nome = C++
| immagine = ISO C++ Logo.svg<!-- Solo nome file -->
| didascalia =
| autore = [[Bjarne Stroustrup]]
| data = 1983
| versione =
| utilizzo = Generico
| paradigmi = Multi-Paradigma, [[Programmazione procedurale|Procedurale]], [[Programmazione funzionale|Funzionale]], [[Programmazione orientata agli oggetti|Object-Oriented]]
| tipizzazione = Statica
| specifiche =
| estensione = .h .hh .hpp .hxx .h++ .cc .cpp .cxx .c++
| influenzato_da = [[C (linguaggio)|C]], [[Objective-C]], [[Simula]], [[ALGOL]], [[Ada (linguaggio di programmazione)|Ada]], [[CLU (linguaggio)|CLU]], [[ML (linguaggio di programmazione)|ML]]
| ha_influenzato = [[Java (linguaggio di programmazione)|Java]], [[C sharp|C#]], [[Python]], [[Rust (linguaggio di programmazione)|Rust]], [[Perl]], [[PHP]]
}}
'''C++''' è un [[linguaggio di programmazione]] [[Programmazione orientata agli oggetti|orientato agli oggetti]], con [[tipizzazione statica]]. È stato sviluppato (in origine col nome di "C con classi") da [[Bjarne Stroustrup]] ai [[Bell Labs]] nel [[1983]] come un miglioramento del [[linguaggio C]] tramite l'introduzione del [[programmazione orientata agli oggetti|paradigma di programmazione a oggetti]], [[funzioni virtuali]], [[overloading]] degli operatori, [[ereditarietà multipla]], [[Template (programmazione)|template]] e [[gestione delle eccezioni]].
 
Il linguaggio venne standardizzato nel [[1998]] ([[ISO/IEC 14882]]:1998 "Information Technology - Programming Languages - C++", aggiornato nel [[2003]]). '''C++11''', conosciuto anche come '''C++0x''', è il nuovo standard per il linguaggio di programmazione C++ che sostituisce la revisione del 2003. Dopo una revisione minore nel 2014 ([[C++14]]), l'ultima versione dello standard (nota informalmente come [[C++17]]) è stata pubblicata nel 2017.
lavorare alrealizzazione della tesi di laurea. Stroustrup trovò che il [[Simula]] avesse caratteristiche utili per lo sviluppo di grossi progetti software, ma il linguaggio era troppo lento per l'utilizzo pratico, mentre il [[BCPL]] risultava veloce ma troppo a basso livello per lo sviluppo di grosse applicazioni. Quando Stroustrup cominciò a lavorare ai laboratori Bell, gli fu affidato il compito di analizzare il [[kernel]] di [[Unix]] in ambito di [[elaborazione distribuita]]. Ricordandosi del lavoro della tesi, decise di aggiungere al linguaggio C alcune delle caratteristiche di Simula. Fu scelto il C perché era un linguaggio per uso generico [[Portabilità|portabile]] e veloce. Oltre al C ed al Simula, si ispirò a linguaggi come l'[[ALGOL 68]], [[linguaggio Ada|Ada]], il [[linguaggio CLU|CLU]] ed il [[ML programming language|linguaggio ML]]. Inizialmente, le funzionalità di [[classe (informatica)|classe]], [[ereditarietà (informatica)|classe derivata]], [[strong typing|controllo rigoroso dei tipi]] e argomento di default furono aggiunte al C con [[Cfront]]. La prima versione commerciale fu distribuita nell'ottobre del [[1985]].<ref>{{Cita web |url=http://public.research.att.com/~bs/bs_faq.html#invention|titolo=Stroustrup: FAQ}}</ref>
 
== Storia ==
N
 
[[File:BjarneStroustrup.jpg|thumb|right|[[Bjarne Stroustrup]], autore del linguaggio.]]
C
[[Bjarne Stroustrup]] iniziò a lavorare alrealizzazioneal linguaggio nel [[1979]]. L'idea di creare un nuovo linguaggio ebbe origine nelle sue esperienze di programmazione durante la realizzazione della tesi di laurea. Stroustrup trovò che il [[Simula]] avesse caratteristiche utili per lo sviluppo di grossi progetti software, ma il linguaggio era troppo lento per l'utilizzo pratico, mentre il [[BCPL]] risultava veloce ma troppo a basso livello per lo sviluppo di grosse applicazioni. Quando Stroustrup cominciò a lavorare ai laboratori Bell, gli fu affidato il compito di analizzare il [[kernel]] di [[Unix]] in ambito di [[elaborazione distribuita]]. Ricordandosi del lavoro della tesi, decise di aggiungere al linguaggio C alcune delle caratteristiche di Simula. Fu scelto il C perché era un linguaggio per uso generico [[Portabilità|portabile]] e veloce. Oltre al C ed al Simula, si ispirò a linguaggi come l'[[ALGOL 68]], [[linguaggio Ada|Ada]], il [[linguaggio CLU|CLU]] ed il [[ML programming language|linguaggio ML]]. Inizialmente, le funzionalità di [[classe (informatica)|classe]], [[ereditarietà (informatica)|classe derivata]], [[strong typing|controllo rigoroso dei tipi]] e argomento di default furono aggiunte al C con [[Cfront]]. La prima versione commerciale fu distribuita nell'ottobre del [[1985]].<ref>{{Cita web |url=http://public.research.att.com/~bs/bs_faq.html#invention|titolo=Stroustrup: FAQ}}</ref>
 
Nel 1983 il nome del linguaggio fu cambiato da "C con classi" a C++. Furono aggiunte nuove funzionalità, tra cui ''[[funzione virtuale|funzioni virtuali]]'', ''[[overloading]]'' di funzioni ed operatori, ''reference'', costanti, controllo dell'utente della gestione della memoria, ''[[type checking]]'' migliorato e commenti nel nuovo stile ("//"). Nel 1985 fu pubblicata la prima edizione di ''The C++ programming Language'', che fornì un'importante guida di riferimento del linguaggio, che non era ancora stato ufficialmente standardizzato. Nel 1989 fu distribuita la versione 2.0 del C++, le cui novità includono l<nowiki>'</nowiki>''[[ereditarietà multipla]]'', le ''classi astratte'', le ''funzioni membro statiche'', le funzioni membro ''const'', e i ''membri protetti''. Nel 1990 fu pubblicato ''The Annotated C++ Reference Manual'', che fornì le basi del futuro standard. Le ultime aggiunte di funzionalità includono i ''template'', le ''eccezioni'', i ''namespace'', i nuovi tipi di ''[[conversione di tipo|cast]]'' ed il [[booleano (informatica)|tipo di dato booleano]].
DNon c'è un proprietario del linguaggio C++, che è implementabile senza dover pagare royalty. Il documento di standardizzazione stesso però è disponibile solo a pagamento.
 
Così come il linguaggio, anche la libreria standard ha avuto un'evoluzione. La prima aggiunta alla libreria standard del C++ è stata la libreria degli ''[[stream (informatica)|stream]]'' di I/O che forniva servizi sostitutivi della libreria C tradizionale (come [[printf]] e [[scanf]]). In seguito, tra le aggiunte più significative c'è stata la ''[[Standard Template Library]]''.
 
Dopo anni di lavoro, un comitato che presentava membri della [[American National Standards Institute|ANSI]] e della [[International Organization for Standardization|ISO]] hanno standardizzato C++ nel [[1998]] (''[[ISO/IEC 14882]]:1998''). Per qualche anno seguente alla pubblicazione ufficiale degli standard, il comitato ha seguito lo sviluppo del linguaggio e ha pubblicato nel [[2003]] una versione corretta dello standard.
 
Risale al [[2005]] un report tecnico, chiamato "Technical Report 1" (abbreviato TR1) che, pur non facendo ufficialmente parte dello standard, contiene un numero di estensioni alla libreria standard del [[C++11]].
 
DNonNon c'è un proprietario del linguaggio C++, che è implementabile senza dover pagare royalty. Il documento di standardizzazione stesso però è disponibile solo a pagamento.
 
== Genesi del nome ==