Il Paradosso di Python

di Paul Graham (original version here)
Agosto 2004

Traduzione di Salvatore Sanfilippo

In un recente intervento ho detto qualcosa che ha turbato molte persone: che puoi ottenere programmatori più intelligenti per lavorare a un progetto scritto in Python rispetto a quelli che puoi ottenere per un progetto scritto in Java.

Con questo non voglio dire che i programmatori Java sono stupidi. Voglio dire che i programmatori Python sono furbi. Per imparare un nuovo linguaggio di programmazione ci vuole un sacco di lavoro, e le persone non imparano Python perchè questo permetterà loro di avere un lavoro, ma perchè amano genuinamente programmare e non sono soddisfatte con i linguaggi che già conoscono.

Ciò le rende esattamente il tipo di programmatori che le aziende dovrebbero desiderare di assumere. Da ciò scaturisce quello che per mancanza di un altro nome chiamerò il paradosso di Python: se un'azienda sceglie di scrivere software in un linguaggio relativamente esoterico, sarà in grado di assumere programmatori migliori, perchè attirerà solo quelli che si sono interessati abbastanza da imparare tale linguaggio. Per i programmatori il paradosso è ancora più pronunciato: il linguaggio da imparare, per ottenere un buon lavoro, è un linguaggio che la gente non impara soltanto per ottenere un lavoro.

Solo poche aziende sono state abbastanza sveglie da capire questo fino ad ora. Ma c'è una qualche tipo di selezione in atto anche qui: queste sono esattamente le aziende per cui i programmatori desidererebbero lavorare. Google, per esempio. Quando loro pubblicizzano posti per programmatori Java, vogliono inoltre precedenti esperienze in Python.

Un mio amico che conosce quasi tutti i linguaggi di programmazione largamente usati, utilizza Python per molti dei suoi progetti. Lui dice che la ragione principale è che gli piace l'aspetto del codice sorgente. Questa può sembrare una ragione frivola per scegliere un linguaggio rispetto ad un altro, ma non è frivola come appare: quando programmi, spendi molto più tempo a leggere il codice sorgente che a scriverlo. Aggiungi manciate di codice sorgente in giro allo stesso modo in cui uno scultore fa con le manciate di argilla. Un linguaggio che rende il codice sorgente brutto fa infuriare un programmatore scrupoloso così come l'argilla piena di grumi farebbe infuriare uno scultore.

A sentir parlare di codice brutto, la gente penserà ovviamente a Perl, ma la bruttezza superficiale di Perl non è il tipo di bruttezza di cui parlo. La vera bruttezza non è una sintassi che sembra pasticciata, ma dover creare programmi usando i concetti sbagliati. Perl può apparire come un personaggio dei cartoni che impreca, ma ci sono casi in cui Perl sorpassa Python concettualmente.

Fino ad ora, almeno. Entrambi i linguaggi sono bersagli in movimento. Ma condividono, assieme a Ruby (ed Icon, Joy, Lisp, SmallTalk) il fatto che sono creati ed usati da gente a cui interessa davvero programmare. E questi tendono ad essere quelli che sanno programmare bene.