Il C++ e` un linguaggio di
programmazione "all purpose", ovvero adatto alla 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. Il fatto che sia un linguaggio "all
purpose" non implica comunque dire 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 migliore poiche` consentono di ottenere un rapporto
"costi di produzione/prestazioni" migliore per motivi che
saranno chiari tra poche righe. Negli ultimi anni il C++ ha
ottenuto un notevole successo per diversi motivi:
Conserva una compatibilita` quasi assoluta (alcune cose
sono diverse) 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 (che manca
soprattutto di un buon sistema dei tipi). In particolare
l'introduzione di costrutti 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 in generale 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 del linguaggio (classi, template, eccezioni...);
alla fine analizzeremo (almeno in parte) l'input/output
tramite stream e la libreria standard del linguaggio. Il corso
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.
Tips su sistemi
operativi, registro di configurazione, sicurezza, internet,
navigazione, word ed excel.
................
....
Guide e manuali
sulla configurazione, installazione ed utilizzo di hardware,
periferiche, sistemi operativi ecc...
.............................................................