Il C++ in una frase
Il C++ è un linguaggio di programmazione compilato e tipizzato staticamente, che trasforma il codice sorgente direttamente in codice macchina nativo. Questa singola scelta di progettazione, nessun interprete e nessuna macchina virtuale tra il programma e la CPU, è il motivo per cui il C++ è uno dei linguaggi più veloci con cui puoi scrivere, e per cui fa girare il software che non può permettersi di essere lento.
Ecco l'immancabile primo programma. Eseguilo direttamente qui:
C'è più struttura rispetto a un linguaggio di scripting, ed è voluto: il C++ ti dà un controllo preciso in cambio di essere espliciti. Analizzeremo ogni pezzo nelle prossime pagine.
Perché il C++ è veloce
La maggior parte dei linguaggi di scripting esegue il codice tramite un interprete o una macchina virtuale che legge ed esegue le istruzioni a runtime. Il C++ salta tutto questo:
- Un compilatore (come
g++oclang++) legge il sorgente.cppe lo traduce in istruzioni macchina per uno specifico processore e sistema operativo. - Il risultato è un eseguibile autonomo che la CPU esegue direttamente: tra il tuo codice e l'hardware non c'è nulla.
Dato che durante l'esecuzione non avviene alcuna traduzione, i programmi C++ partono all'istante e girano alla massima velocità del processore. Hai anche un controllo preciso su memoria e hardware, che i linguaggi di più alto livello ti nascondono di proposito.
Il compromesso: quel codice macchina è costruito per una sola piattaforma. Un eseguibile compilato su Windows non gira su un Mac: devi ricompilare il sorgente per ogni destinazione. (Al contrario di Java, che compila in bytecode portabile eseguibile su qualsiasi JVM.)
Tipizzato staticamente e multi-paradigma
Due proprietà definiscono l'aspetto e lo stile del codice C++.
Tipizzato staticamente significa che ogni variabile ha un tipo noto in fase di compilazione, e il compilatore controlla i tipi prima ancora che il programma venga eseguito:
count resta un int per tutta la sua vita; provare a memorizzarci "hello" non compilerebbe. Questo intercetta presto un'intera categoria di errori, al prezzo di scrivere un po' di più all'inizio.
Multi-paradigma significa che il C++ non ti impone un unico stile. Puoi scrivere semplice codice procedurale, organizzare la logica in classi (orientamento agli oggetti) o usare i template per codice generico e riutilizzabile. La maggior parte dei programmi reali mescola tutti e tre. Questa flessibilità è potente, ma significa anche che il C++ ha molto da imparare: lo affronteremo un concetto alla volta.
A cosa serve il C++
Il C++ compare ovunque prestazioni e controllo siano irrinunciabili:
- Motori di gioco: Unreal Engine, il nucleo di Unity e la maggior parte del codice dei giochi AAA.
- Software di sistema: sistemi operativi, driver di dispositivo e browser come Chrome e Firefox.
- Servizi ad alte prestazioni: database, sistemi di trading e infrastrutture di ricerca in cui contano i microsecondi.
- Embedded e hardware: firmware per auto, droni, dispositivi medici e IoT.
Se un software deve essere veloce, stare in poca memoria o parlare direttamente con l'hardware, ci sono buone probabilità che sia scritto in C++.
Il C++ non è il C (ma è nato da lì)
Il C++ è nato dal C negli anni '80 come "C con le classi", e rimane in gran parte un superset: molto codice C valido si compila anche come C++. Ma da allora il linguaggio è cresciuto enormemente.
Il C++ aggiunge la programmazione orientata agli oggetti, i template per il codice generico, i riferimenti, le eccezioni e una ricca libreria standard piena di strumenti pronti all'uso. Questo frammento ne usa uno, vector: un array ridimensionabile che gestisce da solo la propria memoria, qualcosa che in C dovresti costruire a mano:
Il C++ moderno (gli standard C++11, C++17 e C++20) si appoggia molto a strumenti come questi per rendere il linguaggio più sicuro ed espressivo rispetto alle sue radici in C. Un errore comune da principianti è scrivere C++ in stile C, con memoria gestita a mano e array grezzi ovunque, quando la libreria standard risolve già il problema per te. In queste guide useremo sempre lo stile moderno.
Domande frequenti
A cosa serve il C++?
Il C++ fa girare il software in cui velocità e controllo contano: motori di gioco (Unreal, il nucleo di Unity), sistemi operativi, browser (Chrome, Firefox), database, sistemi di trading e dispositivi embedded. Il suo punto di forza è lavorare vicino all'hardware offrendo comunque funzionalità di alto livello come classi, template e la libreria standard.
Il C++ è compilato o interpretato?
Il C++ è compilato. Un compilatore come g++ o clang++ traduce il codice sorgente direttamente in codice macchina nativo per una specifica CPU e un sistema operativo, producendo un eseguibile autonomo. Tra il tuo programma e il processore non c'è nessun interprete né macchina virtuale, ed è per questo che il C++ è così veloce.
Qual è la differenza tra C e C++?
Il C++ è nato come "C con le classi" ed è in gran parte un superset del C, quindi la maggior parte del codice C si compila anche come C++. Le grandi aggiunte sono la programmazione orientata agli oggetti (classi ed ereditarietà), i template, la libreria standard (contenitori come vector e map), i riferimenti, le eccezioni e molte funzionalità di sicurezza e comodità che al C mancano.