Ho terminato ieri di seguire un corso avanzato sul linguaggio C tenuto da una delle persone più competenti che io conosca in fatto di linguaggi di programmazione e sistemi operativi. La conseguenza di questo corso non è come si può pensare che io conosca il C meglio di prima, anche se un po' è così, bensì che io lo reputi più di prima un linguaggio pessimo fatto di scelte assurde e comportamenti dipendenti dall' implementazione, cioè dalla macchina sulla quale il codice viene eseguito, dal sistema operativo e dal compilatore utilizzato.
Elencare tutti i difetti che i due mattacchioni californiani – Brian Kernighan e Dennis Ritchie nelle foto – hanno introdotto sarebbe oltre che noioso anche difficile dato che sicuramente mi dimenticherei qualcosa. Per fortuna nell'89 l'ISO ha tentato – inutilmente – di mettere una pezza ai disastri dei due simpaticoni cercando di dare un comportamento quanto più uniforme possibile al linguaggio.
C'è comunque da dire che se utilizzato con attenzione e tenuto lontano dalla portata di programmatori "cani" può non essere poi così male, se però ci si lascia andare e ci si mette a utilizzare tutto quanto lo standard permette si può scrivere del codice veramente pessimo. Un esempio su tutti… a un elemento del vettore in C si accede con:
vettore[indice];
Per come il compilatore compila il codice però è permesso anche scrivere:
indice[vettore];
il chè è una cosa che fa accapponare la pelle… Almeno a me.