Perché non dovresti usare PHP

Immagina di avere, chessò, una cassetta degli attrezzi. Un set di attrezzi. Sembra carino, cose standard insomma.

Tiri fuori un cacciavite, e vedi che è per viti strane, a tre punte. Ok, va bene, non mi è molto utile ma suppongo possa esserlo a volte.

Tiri fuori un martello e vedi con sconcerto che ha la parte a V da entrambe le parti. E' ancora utile, voglio dire, si può colpire con il centro della testa se lo si tiene di lato.

Tiri fuori delle pinze ma ti accorgi che non hanno la superficie dentata e non fanno presa bene ma possono forse risultare utili per dei bulloni da serrare.

E così via. Tutto ciò che è nella cassetta ha qualcosa di strano o bizzarro ma non abbastanza da essere completamente inutile. E non c'è un chiaro problema con l'intero set; ha ancora tutti gli attrezzi.
Ora immagina di incontrare milioni di carpentieri che usano questa cassetta degli attrezzi che ti dicono "beh, qual è il problema? Sono quelli che ho già usato in passato e funzionano bene!". E i carpentieri ti mostrano le case che hanno costruito, dove ogni stanza è un pentagono e il tetto è rovesciato. Bussi alla porta e collassa su sè stessa, mentre tutti ti incolpano di aver rotto la loro porta.

Ecco cosa c'è di sbagliato con il PHP.

Cosa non va?

  1. 1

    Non è prevedibile

    Un linguaggio di programmazione è un mezzo per esprimere idee umane facendo sì che un computer le esegua, per questo è importante che la capacità di un essere umano di capire il programma sia corretta.

    PHP è pieno di sorprese: mysql_real_escape_string, E_ALL

  2. 2

    Non è consistente

    Cose simili dovrebbero sembrare simili, cose diverse cose diverse. Conoscere parte del linguaggio dovrebbe aiutare nell'apprendimento e ad aiutare il resto.

    PHP è inconsistente: strpos, str_rot13

  3. 3

    Non è conciso

    I nuovi linguaggio riducono al minimo il testo "standard" ereditato dai vecchi linguaggi. (Potremmo tutti scrivere codice macchina.) Un linguaggio deve quindi evitare di introdurre nuove inizializzazioni inutili.

    PHP le richiede: controllo degli errori nelle chiamate all'API C, ===

  4. 4

    Non è affidabile

    I linguaggi servono a risolvere i problemi; dovrebbero minimizzare qualunque nuovo problema che introducono.

    PHP non lo è: ==, foreach ($foo as &$bar)

  5. 5

    Non è facilmente debuggabile

    Quando qualcosa va storto, il programmatore deve risolverlo e si ha bisogno di tutto l'aiuto che il linguaggio può fornire.

    PHP è opaco: nessuna stack trace di default o per i fatals, error reporting complesso

Nello specifico

PHP è pieno di problemi. Ci sono centinaia di post per la rete che mostrano i problemi di PHP. Eccone alcuni, per iniziare.

“I used to think that PHP was the biggest, stinkiest dump that the computer industry had taken on my life in a decade. Then I started needing to do things that could only be accomplished in AppleScript.” Jamie Zawinski
“Every solution I've ever seen or developed in PHP feels clunky and bulky, there is no elegance or grace.” Fredrik Holmstrm
“So here's my problem, based on my experience with PHP (deploying a couple of free apps to do this and that, and debugging a site for a non-technical friend here and there): all the PHP code I've seen in that experience has been messy, unmaintainable crap. Spaghetti SQL wrapped in spaghetti PHP wrapped in spaghetti HTML, replicated in slightly-varying form in dozens of places.” Tim Bray
“We get it already. PHP is horrible, but it's used everywhere. Guess what? It was just as horrible in 2008. And 2005. And 2002. There's a pattern here, but it's subtle. You have to look very closely to see it.” Jeff Atwood

Che alternative ho?

Ciò che è deprimente non è che PHP è disegnato male. Ciò che è veramente deprimente è che in così tanti anni sia cambiato così poco.

Il miglior modo per combattere qualcosa di diffuso e invadente come PHP non è indicare le sue (molte, molte, molte) falle, ma fornire buone alternative che siano equamente diffuse, facili da installare e da usare il prima possibile.

L'intento è di aiutare a educare e potenzialmente avvertire i nuovi dev agli inizi dello sviluppo. Del buon lavoro, anche storicamente è stato fatto con PHP, senza dubbio. Ora però dobbiamo lavorare assieme per risolvere ciò che si è rotto. Il miglior modo per eliminare PHP è di rendere queste alternative così eccezionali da rendere ovvia la scelta del martello migliore.


Una lista completa di framework è disponibile qui.