Barninga Z
a- a+

Cenni generali

Abbiamo deciso di pubblicare questa guida per anticipare lafutura guida di C++ che servirà anche per laprogrammazione web.

Come qualunque linguaggio, anche il linguaggio C sicompone di parole e regole; queste ultime costituiscono laportante grammaticale e sintattica che consente di aggregarele prime per formare frasi di senso compiuto.

Come qualsiasi linguaggio di programmazione, inoltre, illinguaggio C rappresenta in qualche modo un compromessotra l'intelligenza umana e l'intrinsecastupidità della macchina. Esso costituisce il mezzotramite il quale il programmatore "spiega" allamacchina come effettuare determinate operazioni.

Naturalmente (si perdoni l'ovvietà) la macchinanon è in grado di capire direttamente illinguaggio C: essa è troppo stupida per poterlofare, e d'altra parte il C è direttamenteleggibile e comprensibile dagli esseri umani; troppodistante, quindi, dalla logica binaria, l'unica che abbiasenso per un calcolatore.

Perché la macchina possa eseguire un programma scrittoin C, anche il più banale, occorre rielaborarlofino a ridurlo ad un insieme di valori esprimibili in codicebinario: diciamo, per capirci, che questi rappresentano latraduzione in linguaggio macchina di quanto il programmatoreha espresso in linguaggio C, il quale non è altroche un "sottolinguaggio" della lingua parlata dalprogrammatore stesso, o, in altre parole, un sottoinsieme diquella.

In effetti, l'utilizzo di sottoinsiemi della linguaparlata per scrivere programmi deriva dall'esigenza disemplificare la traduzione del programma nell'unica formacomprensibile alla macchina (il binario, appunto): lo scopoè eliminare a priori le possibili ambiguità, lescorrettezze grammaticali e, in generale, tutti quei"punti oscuri" dei discorsi in lingua naturale chesono solitamente risolti dall'essere umano mediante unprocesso di interpretazione o di deduzione dei significati daconoscenze che non sono direttamente reperibili nel discorsostesso ma derivano dall'esperienza e dallacapacità di inventare. La macchina non impara e noninventa.

Sebbene quanto detto valga, evidentemente, per tutti ilinguaggi di programmazione, va sottolineato che il C hacaratteristiche proprie, che ne fanno, in qualche modo, unlinguaggio particolare.

Innanzitutto esso dispone di un insieme limitatissimo diistruzioni. E' dunque un linguaggio intrinsecamentepovero, ma può essere facilmente ed efficacementearricchito: chiunque può aggiungere nuove istruzioni(o meglio, funzioni) alla strumentazione che accompagna illinguaggio. In pratica si possono coniare neologismi e crearedei vocabolari aggiuntivi a quello proprio del linguaggio,che potranno essere utilizzati all'occorrenza. Di fatto,in C, anche la gestione dello I/O (Input/Output)è implementata così. Un gran numero di funzioniesterne al linguaggio è ormai consideratouniversalmente parte del linguaggio stesso ed accompagnasempre il compilatore, nonostante, dal punto di vistastrettamente tecnico, questo sia comunque in grado diriconoscere solo un piccolo numero di istruzioni intrinseche.

Tutto ciò si traduce anche in una relativasemplicità funzionale del compilatore: sono quindimolti gli ambienti per i quali è stato sviluppato uncompilatore dedicato. Essendo la maggior parte del linguaggioesterna al compilatore, è possibile riutilizzarlasemplicemente facendo "rimasticare" i file sorgentidelle funzioni (e sono sorgenti C) al compilatore[1] conil quale dovranno essere associati. In questo sta lacosiddetta portabilità del C, cioè lapossibilità di utilizzare gli stessi sorgenti inambienti diversi, semplicemente ricompilandoli.

Un'altra caratteristica del C è lascarsità di regole sintattiche. Il programmatore hamolta libertà di espressione, e può scrivereprogrammi che riflettono ampiamente il suo personalissimostile, il suo modo di risolvere i problemi, il suo tipo diapproccio all'algoritmo. Ciò hasenz'altro riflessi positivi sull'efficienza delprogramma, ma può essere causa di difficoltàtalora insuperabili, ad esempio nei successivi interventi sulsorgente a scopo di manutenzione o di studio, quando lo stiledel programmatore sia eccessivamente criptico. La regolaforse più importante che il programmatore C deveseguire, nonostante non faccia parte del linguaggio, èla cosiddetta regola "KISS" (Keep It Simple,Stupid).

Infine, il C mette a disposizione concetti e strumentiche consentono un'interazione "di bassolivello" con la macchina e con le sue risorse. Per"basso livello" non si intende qualcosa di pocovalore, ma una piccola distanza dalla logica binaria dellamacchina stessa. Ne deriva la possibilità di sfruttarea fondo, e con notevole efficienza, tutta la potenzadell'elaboratore. Non a caso il C è nato comelinguaggio orientato alla scrittura di sistemi operativi[2];tuttavia la possibilità di estenderlo mediantelibrerie di funzioni ha fatto sì che, nel tempo, essodivenisse linguaggio di punta anche nella realizzazione diprogrammi applicativi, per i quali ne erano tradizionalmenteusati altri[3].

L'evoluzione più recente del C èrappresentata dal C++, il quale è, in pratica, un"superset" del C stesso, del quale riconosceed ammette tutti i costrutti sintattici, affiancandovi leproprie estensioni: queste consentono al programmatore didefinire delle entità composte di dati e del codiceeseguibile atto alla loro manipolazione. Dette entitàvengono così trattate, a livello logico, come sefossero tipi di dato intrinseci al linguaggio e consentonopertanto di descrivere la realtà su cui il programmaopera in termini di linguaggio fondamentale: è lacosiddetta programmazione ad oggetti. Che il C++sia un'estensione del C (e non un nuovo linguaggio)è dimostrato dal fatto che gli arricchimentisintattici sono tutti implementati a livello dipreprocessore[4]; in altre parole, ogni sorgente C++viene ridotto a sorgente C dal preprocessore e poimasticato da un normale compilatore C.

I programmi eseguibili risultanti sono efficienti e compattiin quanto il compilatore traduce ogni istruzione C in unnumero limitato di istruzioni macchina (al limite una sola):solo l'Assembler è più efficiente (ma rendela vita del programmatore assai più dura).

 



Ti potrebbe interessare anche

commenta la notizia