|
Page 3 of 4
La standardizzazione Con il passare del tempo la necessità di uno standard ufficiale si fece
sempre più evidente, finché, dopo varie pressioni, nell'estate del 1983
ANSI istituì il comitato X3J11 con il compito di promulgare uno
standard ufficiale. Dopo sei lunghi anni di studio, ormai agli
sgoccioli del 1989 il comitato propose la documentazione candidata a
diventare standard, che fu accettata da ISO sotto il nome di ISO/IEC
9899-1990. Finalmente era nato lo standard che in seguito verrà
comunemente chiamato C89. La standardizzazione non si limitò a
costatare e formalizzare lo status quo del linguaggio ma modificò e
ripulì la sintassi, i costrutti, la semantica, definì in maniera chiara
l'utilizzo del preprocessore, capì l'importanza di definire una
libreria di funzioni standard e molto altro. Come Ritchie stesso
ammise, lo standard creò un C migliore, lo liberò definitivamente dal
retaggio dei linguaggi non tipati da cui derivava e lo rese più
portabile.
Un particolare curioso è il fatto che prima dello standard i parametri
formali delle funzioni non venivano definiti e la sintassi che venne
standardizzata fu mutuata niente meno che dal C++, allora giovane
linguaggio di programmazione sviluppato da un certo Bjarne Stroustrup.
Il seguente
standard C99 andò ad incorporare nel linguaggio molte altre feature, come ad esempio la definizione di
variabili e codice mista, la definizione di variabili all'interno
dell'istruzione for, gli array di dimensione definita a runtime, una sintassi più evoluta per l'inizializzazione di array e strutture etc.
Bjarne Stroustrup, inventore del C++.
Il C diede vita a numerosi discendenti tra cui il più importante è senza
dubbio il C++ oltre a Concurrent C, Objective C, C* e di recente il
linguaggio D sviluppato da Walter Bright presso Digital Mars. Ma
attraverso il dirompente successo del C++ molti altri linguaggi ne
subirono l'influenza. Tra i più blasonati troviamo Java, C#, Perl, PHP
e JavaScript. Come se non bastasse il C viene anche usato come
linguaggio intermedio per portare linguaggi di più alto livello su
architetture e sistemi operativi diversi.
|