**Irene Mingozzi** (0:01)
Benvenuti a un nuovo episodio di Paul Graham il pifferaio magico dei nerd, un podcast che raccoglie tutti gli esseri scritti negli anni da Paul Graham tradotti in italiano. Tutti gli altri esseri in italiano sono disponibili sul sito PaulGraham.it, mentre quelli originali in inglese potete trovarli su paulgraham.com.
**Salvatore Sanfilippo** (0:18)
Cominciamo!
**Irene Mingozzi** (0:22)
L'essere di oggi è tradotto da Salvatore Sanfilippo e letto da Irene Mingozzi. Il titolo originale è Revenge of the Nerds ed è stato scritto da Paul Graham nel maggio del 2002 La versione italiana si intitola La rivincita dei nerd.
Nell'industria del software è in corso una battaglia tra gli accademici dalla testa a punta e un'altra forza altrettanto formidabile. I capi dai capelli a punta. Tutti ricordano chi sia il capo dai capelli a punta, dico bene? Credo che la maggior parte del mondo tecnologico non solo riconosca il personaggio del fumetto, ma riesca perfino a identificare una persona nella propria azienda simile a quella che lo ha ispirato. Il capo dai capelli a punta combina miracolosamente nella stessa persona due qualità piuttosto comuni, ma che si vedono raramente assieme. A non sa nulla riguarda la tecnologia, ma B ha opinioni nettissime su di essa. Immaginate di dover scrivere un nuovo software. Il capo dai capelli a punta non ha idea di come funzionerà tale software e non saprebbe distinguere un linguaggio dall'altro, eppure sa esattamente quale linguaggio dovreste usare allo scopo. Sì, proprio così, crede fermamente che dovreste usare Java. Perché lo crede? Diamo un'occhiata all'interno del cervello del capo dai capelli a punta. Il suo ragionamento è presso a poco il seguente. Java è uno standard. Deve essere così, perché le notizie parlano continuamente di Java. Poiché uno standard, scegliendolo, non mi caccerò nei guai. Inoltre, in giro ci saranno sempre un sacco di programmatori Java, così se i programmatori che lavorano per me decidono di andare via, come misteriosamente accade spesso, posso rimpiazzarli con facilità. Bisogna ammettere che non suona così irraggionevole, eppure è un ragionamento basato su un assunto non palesato, e guarda caso tale assunto è falso. Il capo dai capelli a punta crede che tutti i linguaggi di programmazione siano grossomodo equivalenti. Se ciò fosse vero, avrebbe centrato il bersaglio. Se tutti i linguaggi si equivalgono, allora ben venga che si usi il linguaggio usato da tutti gli altri. I linguaggi però non sono tutti uguali, e credo di poterlo provare senza neppure tirare in ballo le loro differenze.
Se nel 1992 avessi chiesto al capo dai capelli a punta quale linguaggio scegliere per scrivere un software, avrebbe risposto senza alcuna esitazione, esattamente come fa oggi, che il software dovrebbe essere scritto in C++. Ma se tutti i linguaggi sono uguali, perché l'opinione del capo dai capelli a punta nel frattempo è cambiata? E poi, perché i progettisti di Java si sarebbero dovuti scomodare per creare un nuovo linguaggio? Suppongo che se crei un nuovo linguaggio, è perché pensi che possa essere migliore di quelli che la gente usa già. Almeno da certi punti di vista. Tanto che Gosling chiarisce, già nella prima pubblicazione su Java, che Java è stato progettato per superare certi problemi del C++. Ecco dunque, i linguaggi non sono tutti uguali. Se seguite il sentiero che porta a Java attraverso il cervello del capo dai capelli a punta, e poi fate ritorno passando dalla storia di Java fino alle sue origini, vi ritroverete con un'idea che contraddice l'assunto col quale eravate partiti. Allora chi ha ragione? James Gosling o il capo dai capelli a punta? Ovviamente ha ragione Gosling. Per certi problemi alcuni linguaggi sono migliori di altri, e ciò solleva alcune domande interessanti. Java è stato progettato per essere migliore, almeno per certi problemi, di C++. Ma per quali problemi? Quando è che Java è migliore? E quando lo è piuttosto C++?
E poi, esistono casi in cui altri linguaggi sono migliori sia dell'uno che dell'altro? Una volta presa in considerazione la questione, ci si accorge di aver scoperchiato un bel vespaio. Se il capo dai capelli a punta dovesse pensare al problema in tutta la sua complessità, gli esploderebbe il cervello. Finché considera tutti i linguaggi equivalenti, tutto ciò che deve fare è scegliere quello che di per lì sembra essere più in voga. E dal momento che è una questione più di moda che di tecnologia, probabilmente anche lui riuscirà a ottenere la risposta giusta. Ma se i linguaggi hanno delle differenze, improvvisamente deve risolvere due equazioni simultanee, cercando di trovare un equilibrio ottimale tra due cose di cui non sa nulla. L'idoneità relativa di ognuno dei venti e più linguaggi utilizzabili per il problema che deve risolvere e le probabilità di trovare programmatori, librerie, eccetera, per sascono di essi. Se questo è ciò che c'è dall'altra parte della soglia, non sorprende che il capo dai capelli a punta non voglia attraversarla. Lo svantaggio di credere che tutti i linguaggi siano equivalenti è quello di credere a una falsità, ma il vantaggio è che tale convinzione semplifica di tanto la vita. Credo che sia questo a rendere tale idea così diffusa. È un'idea comoda. Siamo portati a credere che Java debba essere un linguaggio piuttosto buono. Dopotutto è il nuovo, fantastico linguaggio di programmazione, ma lo è davvero? Se da lontano guardi il mondo dei linguaggi di programmazione, in effetti sembra che Java sia l'ultima novità. Dalla distanza, tutto ciò che puoi vedere è il grande, spolgorante cartellone pubblicitario pagato da Sun. Ma se guardi questo mondo più da vicino, scopri che esistono diversi gradi di entusiasmo per i linguaggi. All'interno della sottocultura hacker c'è un altro linguaggio, chiamato Perl, che è considerato molto più interessante di Java. Slashdot, ad esempio, è generato da Perl. Non vedresti mai i ragazzi di Slashdot usare le Java Server Pages. Ma c'è un altro linguaggio più recente, chiamato Python, i cui utilizzatori tendono a disprezzare Perl, e altri nuovi linguaggi aspettano, dietro le quinte, di fare il loro ingresso. Se si guarda questi linguaggi in ordine, Java, Perl, Python, emerge uno schema interessante. Quanto meno lo si nota se si è programmatore di Lisp. Ognuno di essi è progressivamente più simile a Lisp. Python copia persino certe caratteristiche di Lisp che molti utenti considerano errori. Potresti tradurre in Python dei semplici programmi scritti in Lisp riga per riga. Siamo nel 2002 e i linguaggi di programmazione hanno quasi raggiunto il 1958
20 more minutes of transcript below
Try it now — copy, paste, done:
curl -H "x-api-key: pt_demo" \
https://spoken.md/transcripts/1000651996090
Works with Claude, ChatGPT, Cursor, and any agent that makes HTTP calls.
From $0.10 per transcript. No subscription. Credits never expire.
Using your own key:
curl -H "x-api-key: YOUR_KEY" \
https://spoken.md/transcripts/1000612277319