In memoria dell’inventore del C

E’ periodo di lutti. E’ morto Dennis Ritchie, uno dei padri dell’informatica.

Questo evento non  avrà neanche un milionesimo della visibilità che ha avuto la morte di Steve Jobs, eppure credo che il suo contributo alla storia dell’informatica non sia stato affatto inferiore.

Dennis M. Ritchie, infatti, è stato uno dei due creatori del linguaggio C, il linguaggio in assoluto più usato nella storia dell’informatica. Inoltre, ha inventato prima il sistema operativo Multics, poi addirittura Unix, scrivendone il codice in C. Ha ricevuto il Turing Award nel 1983, l’equivalente del premio Nobel per l’informatica.

Non era però un genio del marketing, e allora ci accontenteremo di ricordarlo qui con le parole di Herb Sutter:

Before C, there was far more hardware diversity than we see in the industry today. Computers proudly sported not just deliciously different and offbeat instruction sets, but varied wildly in almost everything, right down to even things as fundamental as character bit widths (8 bits per byte doesn’t suit you? how about 9? or 7? or how about sometimes 6 and sometimes 12?) and memory addressing (don’t like 16-bit pointers? how about 18-bit pointers, and oh by the way those aren’t pointers to bytes, they’re pointers to words?).

There was no such thing as a general-purpose program that was both portable across a variety of hardware and also efficient enough to compete with custom code written for just that hardware. (Fortran did a job for array-oriented number-crunching code, but nobody could do it for general-purpose code such as what you’d use to build just about anything down to, oh, say, an operating system.)

So this young upstart whippersnapper comes along and decides to try to specify a language that will let people write programs that are: (a) high-level, with structures and functions; (b) portable to just about any kind of hardware; and (c) efficient on that hardware so that they’re competitive with handcrafted nonportable custom assembler code on that hardware.

How silly. Everyone knew it couldn’t be done.

C is a poster child for why it’s essential to keep those people who know a thing can’t be done from bothering the people who are doing it. (And keep them out of the way while the same inventors, being anything but lazy and always in search of new problems to conquer, go on to use the world’s first portable and efficient programming language to build the world’s first portable operating system, not knowing that was impossible too.)

Thanks, Dennis.

Prima del C, c’era molta maggiore variabilità nell’hardware di quanto ce ne sia adesso. Non solo i processori fornivano (con un certo orgoglio)  differenti ed esotici set di istruzioni, ma si differenziavano moltissimo su quasi tutto, fin’anche su cose fondamentali come il numero di bit per rappresentare un carattere (8 bit per byte non sono sufficienti? perché non 9? o 7? o perché non 6? oppure 12?) e l’indirizzamento della memoria (non ti piacciano i puntatori a 16 bit? che ne dici di puntatori a 18 bit, e a proposito, questi non sono puntatori a byte, sono puntatori a word).

Non esisteva una cosa come la programmazione general-purpouse che fosse allo stesso tempo portabile su una grande varietà di hardware e anche abbastanza efficiente da poter competere con codice scritto appositamente per quell’hardware (il Fortran funzionava bene per codice matematico orientato ai calcoli vettoriali, ma nessuno era in grado di pensare un linguaggio per codice general purpouse come quello che useresti per scrivere di tutto fino a, diciamo, un sistema operativo).

Quindi, arriva questo giovanotto sfrontato e decide di provare a specificare un linguaggio che permetta alla gente di scrivere programmi che fossero: (a) ad alto livello (b) portabili su quasi ogni tipo di hardware; e (c) efficienti in modo da essere competitivi con codice scritto appositamente per quell’hardware.

Che sciocco. Tutti sapevano che era impossibile.

Il linguaggio C è la dimostrazione del perché sia essenziale tenere quelle persone che sanno che certe cose sono impossibili lontane dalle persone che le stanno facendo (e tenerle lontane mentre quegli stessi inventori, essendo tutto tranne che pigri e essendo sempre alla ricerca di nuovi problemi da risolvere, vanno avanti a inventare il primo linguaggio di programmazione portabile ed efficiente al mondo, e ad usarlo per inventare il primo sistema operativo portabile del mondo, non sapendo affatto che il compito fosse impossibile).

Grazie Dennis.

About these ads
Posta un commento o usa questo indirizzo per il trackback.

Commenti

  • juhan  On 13 ottobre 2011 at 10:25

    Era l’R di K&R, il manuale, l’unico manuale del C. Chissà dov’è finita la mia copia?
    Per quanto riguarda il Fortran però c’è qualcuno che ha scritto il sistema operativo con quello, vero Bill ops! adesso si chiama William. 8)

  • paopasc  On 13 ottobre 2011 at 12:46

    Sono d’accordo con te, vi sono molti grandi scienziati e inventori, per lo più sconosciuti al grande pubblico. E’ doveroso ricordarli con l’enfasi che meritano!

  • glipari  On 13 ottobre 2011 at 19:20

    [EDIT] ho migliorato un po’ la mia traduzione volante di stamattina. Ora scorre un po’ meglio.

  • principessasulpisello  On 9 gennaio 2012 at 07:12

    Grazie di essere passato da me. Interessante questo post, per me che vivo in simbiosi col pc. A presto.

Trackback

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 63 follower

%d blogger cliccano Mi Piace per questo: