31.05.2013 Views

Tricky C - Si® @lbert Site

Tricky C - Si® @lbert Site

Tricky C - Si® @lbert Site

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2 - <strong>Tricky</strong> C<br />

sia eccessivamente criptico. La regola forse più importante che il programmatore C deve seguire,<br />

nonostante non faccia parte del linguaggio, è la cosiddetta regola "KISS" (Keep It Simple, Stupid).<br />

Infine, il C mette a disposizione concetti e strumenti che consentono un'interazione "di basso<br />

livello" con la macchina e con le sue risorse. Per "basso livello" non si intende qualcosa di poco valore,<br />

ma una piccola distanza dalla logica binaria della macchina stessa. Ne deriva la possibilità di sfruttare a<br />

fondo, e con notevole efficienza, tutta la potenza dell'elaboratore. Non a caso il C è nato come linguaggio<br />

orientato alla scrittura di sistemi operativi 2 ; tuttavia la possibilità di estenderlo mediante librerie di<br />

funzioni ha fatto sì che, nel tempo, esso divenisse linguaggio di punta anche nella realizzazione di<br />

programmi applicativi, per i quali ne erano tradizionalmente usati altri 3 .<br />

L'evoluzione più recente del C è rappresentata dal C++, il quale è, in pratica, un "superset" del C<br />

stesso, del quale riconosce ed ammette tutti i costrutti sintattici, affiancandovi le proprie estensioni: queste<br />

consentono al programmatore di definire delle entità composte di dati e del codice eseguibile atto alla loro<br />

manipolazione. Dette entità vengono così trattate, a livello logico, come se fossero tipi di dato intrinseci al<br />

linguaggio e consentono pertanto di descrivere la realtà su cui il programma opera in termini di<br />

linguaggio fondamentale: è la cosiddetta programmazione ad oggetti. Che il C++ sia un'estensione del C<br />

(e non un nuovo linguaggio) è dimostrato dal fatto che gli arricchimenti sintattici sono tutti implementati<br />

a livello di preprocessore 4 ; in altre parole, ogni sorgente C++ viene ridotto a sorgente C dal preprocessore<br />

e poi masticato da un normale compilatore C.<br />

I programmi eseguibili risultanti sono efficienti e compatti in quanto il compilatore traduce ogni<br />

istruzione C in un numero limitato di istruzioni macchina (al limite una sola): solo l'Assembler è più<br />

efficiente (ma rende la vita del programmatore assai più dura).<br />

2 Il sistema Unix è l'esempio più famoso.<br />

3 Ad esempio il Cobol per gli applicativi gestionali e il Fortran per quelli matematici.<br />

4 Il preprocessore è un programma che opera semplicemente la sostituzione di certe sequenze di caratteri con<br />

altre. Esso fa parte da sempre della dotazione di strumenti standard dei compilatori C; il C++ si fonda su versioni<br />

particolarmente sofisticate di proprocessore affiancate a compilatori C tradizionali.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!