Introduzione
Il C++ e` un linguaggio di programmazione "all purpose", ovvero
utilizzabile per la realizzazione di qualsiasi tipo di applicazione, da quelle real time a
quelle che operano su basi di dati, da applicazioni per utenti finali a sistemi
operativi. Cio` tuttavia non implica che qualsiasi applicazione debba essere realizzata in C++,
esistono moltissimi linguaggi di programmazione
alcuni dei quali altamente specializzati per compiti precisi e che quindi possono
essere in molti casi una scelta piu` conveniente.
Negli ultimi anni il C++ ha ottenuto un notevole successo per diversi motivi:
- Conserva una compatibilita` quasi assoluta con il suo piu` diretto antenato,
il C, da cui eredita la sintassi e la semantica per tutti i costrutti comuni,
oltre alla notevole flessibilita` e potenza;
- Permette di realizzare qualsiasi cosa fattibile in C senza alcun
overhead addizionale;
- Estende le caratteristiche del C, rimediando almeno in parte
alle carenze del suo predecessore. In particolare l'introduzione
di meccanismi quali i Template e le Classi rende il C++ un
linguaggio multiparadigma (con particolare predilezione per il
paradigma ad oggetti e la programmazione generica);
- Possibilita` di portare facilmente le applicazioni verso altri sistemi;
Comunque il C++ presenta anche degli aspetti negativi (come ogni linguaggio), in parte ereditate dal C:
- La potenza e la flessibilita` tipiche del C e del C++ non sono gratuite.
Se da una parte e` vero che e` possibile ottenere applicazioni mediamente assai
piu` efficienti rispetto ad agli altri linguaggi, e anche vero che tutto
questo e` ottenuto lasciando in mano al programmatore molti dettagli e
compiti che negli altri linguaggi sono svolti dal compilatore; e` quindi
necessario un maggiore lavoro in fase di progettazione e una maggiore attenzione
ai particolari in fase di realizzazione, pena una valanga di errori spesso
subdoli e difficili da individuare che possono far levitare drasticamente
i costi di produzione;
- Il compilatore e il linker del C++ soffrono di problemi relativi
all'ottimizzazione del codice dovuti alla falsa assunzione che
programmi C e C++ abbiano comportamenti simili a run time: il
compilatore nella stragrande maggioranza dei casi si limita ad eseguire
le ottimizzazioni tradizionali, sostanzialmente valide in linguaggi
come il C, ma spesso inadatte a linguaggi pesantemente basati sulla
programmazione ad oggetti; il linker poi da parte sua non e` cambiato
molto e non esegue alcune ottimizzazioni che non sono fattibili
a compile-time.
La sempre maggiore diffusione del C++ sta comunque cambiando questa
situazione ed e` prevedibile nei prossimi anni una sostanziale
evoluzione di compilatori e linker, grazie anche alla recente
adozione di uno standard.
Obiettivo di quanto segue e` quello di introdurre alla programmazione in C++,
spiegando sintassi e semantica dei suoi costrutti anche con l'ausilio di opportuni
esempi. Verranno inizialmente trattati gli aspetti basilari del linguaggio (tipi,
dichiarazioni di variabili, funzioni,...), per poi passare all'esame degli
aspetti peculiari (classi, template, eccezioni...); alla
fine analizzeremo (almeno in parte) l'input/output tramite stream e la
libreria standard del linguaggio.
Questo materiale e` rivolto a persone che non hanno alcuna conoscenza del linguaggio, ma
potra` tornare utile anche a programmatori che possiedono una certa familiarita` con esso.
La capacita` di programmare in un qualsiasi altro linguaggio e` invece ritenuta dote necessaria
alla comprensione di quanto segue.
Salvo rare eccezioni non verranno discussi aspetti relativi a tematiche di
implementazione dei vari meccanismi e altre note tecniche che esulano dagli
obiettivi di queste pagine.
Pagina precedente - Pagina successiva
C++, una panoramica sul linguaggio - seconda edizione © Copyright 1996-1999, Paolo Marotta
|