Il paradosso di PHP
Negli ultimi giorni ho installato e personalizzato un sito basato su Drupal. Dopo un po' di anni in cui ho tenuto più o meno d'occhio questo CMS, per la prima volta l'ho utilizzato per un progetto abbastanza complesso, studiando la documentazione, installando moduli, provando temi, dando un'occhiata al DB (per la cronaca, ho scelto PostgreSQL). Niente da dire: un prodotto complesso, configurabile, con una miriade di moduli che si installano in maniera semplice e pulita (ognuno vive nella sua directory) e arricchiscono l'interfaccia di nuove funzionalità, sia per l'utente che per l'amministratore. In un fine settimana ho messo in piedi un sito di una certa complessità, arrivando ad un risultato che soddisfa appieno le mie esigenze ed è aperto a nuovi sviluppi.
E per l'ennesima volta, come mi è capitato anche facendo esperimenti con Piwik, sono rimasto un po' perplesso.
PHP come linguaggio di programmazione fa schifo. E' incoerente, invita a pratiche di programmazione pessime dal punto di vista della robustezza e sicurezza, è venuto su come lavoro di principianti, come una versione amputata di perl, e si vede. Alcune aberrazioni, come la costruzione di query SQL a forza di escaping (ma quanti metodi diversi ce ne sono?) e concatenazione di stringhe con virgolette di vario tipo, fanno venire voglia di darsi all'allevamento delle vacche e non vedere più una riga di codice finché si campa. E' paradossale che un linguaggio così limitato venga usato con successo per progetti complessi. Paradossale, ma ha le sue ragioni.
Teoria e pratica in teoria sono la stessa cosa.
In pratica no.
E quando teoria e pratica sono in disaccordo, è la pratica a vincere.
Dunque, per quale motivo Wikipedia, Drupal, Wordpress, Piwik sono scritti in PHP e non in perl, python o ruby (limitandoci a linguaggi che occupano la stessa nicchia ecologica)?
Il motivo principale è la facilità di accesso. L'aspirante sviluppatore web, che già conosce HTML, può cambiare l'estensione alla sua pagina, aggiungere un frammento di codice ed è entrato nel mondo della programmazione web. Ci è entrato col piede sbagliato, mescolando logica e presentazione, ma ci è entrato e, per l'economia dell'apprendimento, probabilmente ci resterà. Se la sua passione è creare siti visitati, passare da un progetto all'altro, gli converrà perfezionare le sue conoscenze PHP, imparare a chiamare librerie esterne, a interrogare un DB (di nuovo, nel modo sbagliato) e a usare una cache piuttosto che mettersi a studiare da capo un linguaggio nuovo e diverso, più potente e sano ma che gli darebbe le prime soddisfazioni solo dopo due mesi. La sua conoscenza della programmazione rimarrà limitata, ma col tempo diventerà padrone del suo strumento e, magari, tirerà fuori un prodotto come Drupal.