quali sono i campi di maggiore applicazione del C++?
Quelli nei quali tutti gli altri più noti linguaggi di alto livello falliscono miseramente o sono strutturalmente inadatti. Tra questi, possiamo facilmente citare tutti i compiti che richiedono elevatissime prestazioni, quelli di più basso livello (forte interazione con l'hardware), le stesse librerie o framework richiamate da altri linguaggi, e naturalmente gli stessi compilatori, VM e interpreti su cui molti HLL si basano interamente.
In linea di principio, pressoché tutto ciò che pertiene i PC mainstream può essere scritto in C++ (salvo alcuni domini ristretti nei quali l'uso dell'Assembly e/o di un subset C'89 è inevitabile), e solo motivazioni economiche, di tempi e metodi produttivi, portano ad optare per altre piattaforme e linguaggi.
Tra l'altro, non si deve dimenticare che il linguaggio C++ è nato in modo specifico per applicazioni e simulazioni di
grandi dimensioni, con centinaia o migliaia di classi istanziate, centinaia di migliaia di linee di sorgenti, organizzate su decine di files, con numerose DLL e vari eseguibili come output. Questo è
esattamente lo scopo col quale Stroustrup lo ha creato, estendendo il linguaggio C, per superare i vincoli e le limitazioni di Simula, linguaggio allora in gran voga.
Progetti di dimensione inferiore possono (e sovente devono, o dovrebbero) essere affrontati con altri strumenti: primo tra tutti il linguaggio C stesso, con l'ausilio di una ferrea disciplina, è perfettamente idoneo all'impiego in progetti da decine di migliaia di LOC, affrontati col paradigma imperativo e con l'ausilio di tecniche di engineering e norme di stile semplici e chiare quanto rigorose. Fino ai casi limite di interi SO mainstream, ossia progetti da milioni di LOC, scritti prevalentemente in C: non certo in C++, ché innanzi tutto i sotterranei dei moderni SO per PC tutto sono tranne che OO (purtroppo non si tratta di BeOS). Secondariamente, ma non meno importante, C++ presenta aspetti del tutto incompatibili con le prestazioni richieste in tali contesti: RTTI, gestione eccezioni, cast dinamici e compagnia bella, in breve tutto quanto è stato espunto d'ufficio da
Embedded C++.
Anzi, si possono facilmente costruire abaci deterministici, sempre validi in prima approssimazione, nei quali la selezione del linguaggio da utilizzare è una banalissima funzione di un unico parametro, la dimensione stimata del progetto: si parte dalle applicazioni più piccole e semplici, terreno ideale per i linguaggini di scripting e gli HLL burotici (basic e affini), fino alle applicazioni enterprise-wide multitier e multilinguaggio, nelle quali ogni layer impiega linguaggi diversi e specifici.