Menu

Cos'è il C++: il linguaggio, la sua velocità e dove si usa

Cos'è davvero il C++, perché viene compilato direttamente in codice macchina nativo e che tipo di software ad alte prestazioni si costruisce con esso.

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

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:

  1. Un compilatore (come g++ o clang++) legge il sorgente .cpp e lo traduce in istruzioni macchina per uno specifico processore e sistema operativo.
  2. 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.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA