Vai al contenuto

Perchè PHP ha una cattiva reputazione?

PHP è morto. O forse no.

Per chi trascorre online parte del suo tempo, potrà facilmente verificare come la maggior parte dei siti Web utilizza la tecnologia WordPress, Drupal o Joomla. Queste piattaforme sono guarda caso scritte in PHP. E sono gratuite, cosi come sono state rese gratuite tutte le tecnologie a supporto: MySql, Apache e Linux…

Agli albori la concorrenza di PHP era ASP, il linguaggio di scripting di casa Microsoft derivazione di VBscript per il web. In quel caso però le tecnologie si pagavano e anche care: l’hosting doveva essere dotato di IIS e quindi di un sistema operativo con licenza commerciale Windows. Inoltre il database che meglio si interfacciava con ASP era ovviamente Access, incluso nel pacchetto commerciale di Office.  Mi sembrano argomenti più che convincenti per cui la scelta di milioni di utenti è ricaduta su PHP & Co.

Dubito che PHP sarà in declino nei prossimi anni.

Ma perché esiste da tempo questo rapporto di amore/odio nei confronti di PHP? Quali sono i motivi per cui PHP ha una cattiva reputazione? In questo breve articolo cercherò di illustrare brevemente quali potrebbero essere le cause, per me, al giorno d’oggi, del tutto ingiustificate.

Questione di storia

A differenza di Java, Ruby, Python, Go, il linguaggio PHP non è stato progettato intenzionalmente come linguaggio di programmazione completo.  Gli altri linguaggi sono stati creati con obiettivi di progettazione e principi appresi da tutti i paradigmi linguistici precedenti, con l’obiettivo di migliorare i predecessori. Al contrario, PHP è stata sempre considerata una tecnologia in grado di rendere più semplice la creazione di modelli per HTML.

Nel 1995, il Web era già in fermento e valeva la pena di concepire nuovi strumenti per esso. Ecco che nacque PHP, acronimo ricorsivo di “PHP: Hypertext Preprocessor“, linguaggio basato su funzioni come C, ma senza il bagaglio di C. PHP garantiva l’allocazione e la disallocazione automatiche della memoria e il casting automatico dei tipi, caratteristiche che da sole rendevano PHP molto più facile da scrivere, specialmente per i programmatori abituati alle rigide regole della programmazione in C.

Tuttavia, Internet non era abbastanza esteso o maturo per poter utilizzare un linguaggio di programmazione: infatti, il software era ad appannaggio esclusivo dei PC desktop, non esistevano smartphone, al di la di qualche “grezzo” palmare. Le prime applicazioni CRUD, i primi portali come Ebay o Amazon, nascono con PHP e JS, ma erano molto diversi da quello che sono oggi. Anche i CSS non erano ancora stati inventati (presero piede solo dal 1996) ed erano stati appena pubblicati i primi standard di HTML e HTTP.

Sappiamo poi come è andata a finire: il Web è esploso, sia in termini di dimensioni che di esigenze della comunità utenti. Con un WWW in piena espansione, gli sviluppatori di PHP iniziarono ad aggiungere nuove caratteristiche tipiche dei linguaggi di programmazione, aumentando il “disordine” e peggiorando l’architettura già non proprio pulita e coerente. PHP non riuscì a maturare in un linguaggio di programmazione completo fino alla sua riscrittura nel 1998, quando vennero introdotte classi, oggetti e funzionalità da linguaggi ben consolidati. Nel 2004, quando è stato rilasciato PHP 5, era abbastanza sofisticato da battere PERL come linguaggio dominante del web e da essere usato nel “core” della prima versione di Facebook. La versione 5 è poi durata altri 11 anni, fino all’uscita di PHP 7 nel 2015.

A causa di questa evoluzione organica frammentaria, PHP aveva una consistenza molto inferiore rispetto ad altri linguaggi, quindi i programmatori di altri linguaggi iniziarono a riconoscere PHP come inferiore, perché la sua libreria ampia e potente aveva molte funzioni integrate denominate e definite in modo incoerente. La sua sintassi era abbastanza simile ai linguaggi da cui si era ispirato, ma aveva abbastanza differenze da confondere i programmatori multilingue.

Per tutte queste ragioni, anche se un buon programmatore poteva scrivere codice perfettamente solido in PHP, con tanti punti di forza, molti programmatori che arrivavano da altri linguaggi, trovavano molto da criticare e PHP riceveva una cattiva reputazione (anche se nel tempo ha continuato a crescere, migliorare e guadagnare popolarità).

Poi è arrivato PHP 7 dalle prestazioni mediocri, PHP nella sua versione 7 è uno dei linguaggi più veloci in circolazione. Ha aggiunto funzionalità che aumentano enormemente la capacità di applicare codice rigoroso e specifiche di tipo, rendendo più difficile scrivere codice errato. Ha aumentato e migliorato sia il suo lato Object Oriented che le sue capacità funzionali. Ha corretto alcune incongruenze. Ora è un linguaggio altamente competitivo. Ma ci vuole un po’ prima che queste informazioni penetrino al di fuori della comunità PHP.

Questione tecnica

PHP potrebbe essere un linguaggio molto indulgente che consente di scrivere codice brillante ma anche terribile. Nonostante ciò, ha basse barriere all’ingresso e alimenta la maggior parte dei siti Web nel mondo. Principianti così come gli esperti, hanno potuto iniziare a programmare sin da subito. Cosa è accaduto poi? Che la comunità di sviluppatori PHP ha tirato fuori di tutto: nel mare di codice PHP ci sono isole e persino continenti di spaghetti code. I programmatori che hanno lavorato in PHP, anche quelli a cui piace il linguaggio, hanno dovuto leggere o, peggio, mantenere un codice terribile e doloroso, e altri lo hanno guardato e lo hanno collegato allo stesso PHP. La presenza di quantità significative di codice poco elegante se non errato ha influito sicuramente sulla reputazione del linguaggio.

Questione “ancenstrale”

Mentre alcune persone hanno avuto esperienza diretta nel corso degli anni con PHP e hanno espresso critiche in modo ponderato, molte altre hanno sviluppato un’antipatia ancestrale nei confronti del linguaggio, senza mai aver scritto, e talvolta persino letto, una singola riga di PHP. Per alcuni, le critiche riflettevano dolorosi ricordi di lavoro o soluzioni migliori in altre lingue. Per altri criticare PHP era una semplice spinta dell’ego, o un semplice un comportamento da gregge: seguire il leader o conformarsi alla moda del momento. Purtroppo quando si sviluppa un’ostilità tribale, è difficile far cambiare idea, anche quando, come in PHP 7, sono stati risolti gran parte delle obiezioni.

Tag: