L'espressivita' del C

Friday, 01 June 07
Il C e' un linguaggio a basso livello rispetto agli standard attuali a cui i cosi' detti Very High Level Languages ci hanno abituati.

Eppure nella sua espressivita' e' quasi carnale... forse e' che nella mia vita ho scritto piu' linee di codice C di qualunque altra cosa che lo sento cosi'.

Pochi minuti fa stavo scrivendo un pezzo di un programma, e mi serviva una funzione per controllare se una stringa era probabilmente un numero, cosi' ho scritto di getto
int strisnumber(char *s) {
    while(*s == ' ' || (*s >= '0' && *s <= '9')) s++;
    return *s == '\0';
}
Codice banale per chi usa il C normalmente, ma dopo molte ore di Ruby, PHP, Tcl, ..., di questo ultimo anno vedere la macchina che corre tra i byte, uno ad uno, scrivere codice di istinto che ha solo a che fare con byte, puntatori, e' in un certo modo liberatorio dal punto di vista psicologico. Rassicurante, vicini alla brutale verita' della macchina.

A dire la verita' in questa piccola applicazione che sto scrivendo sto facendo ampio uso di una libreria che avevo buttato giu' qualche tempo fa di stringhe dinamiche in C, che usa un concetto un po' inesplorato di registrare le meta informazioni prima del puntatore per farle sembrare agli occhi del programmatore esattamente come C strings pure.

Dunque per quanto i byte mi possano piacere dal punto di vista carnale e psicologico i linguaggi dinamici mi hanno cosi' tanto preso la mano che ormai cerco di riprodurre in C le comodita' che ci sono altrove, ovviamente senza riuscirci mai abbastanza.

p.s. l'applicazione che sto scrivendo e' free software e ha a che fare con il web, anche fare cose dove i soldi non hanno un posto e' liberatorio
2724 views*
Posted at 22:40:52 | permalink | 6 comments | print