Recent Posts
Togliamo subito il problema: PHP è un linguaggio strano e brutto. Non è eccezionalmente veloce. Non è bello sintatticamente. Non è formulato intorno ad una chiara opinione sulle buone pratiche di sviluppo del software. Ed è ancora quello con cui scrivo molto software. La domanda ovvia è: perché? Perché usare PHP oggi?
Ci sono molte buone ragioni, al di là delle preferenze idiosincratiche personali. Qui c’è lo spazio per coprire esattamente questo. Perché PHP è il mio linguaggio preferito per lo sviluppo web?
Che cos’è PHP?
“Cos’è un PHP? O, più comunemente, “cos’è il PHP?” In breve, PHP è un linguaggio di programmazione fatto per il web, costruito a partire dal linguaggio di programmazione C, e che usa tag (o sigle) idiosincratici simili all’HTML per contenere il suo codice. Il linguaggio di programmazione PHP è per lo più utilizzato lato server, il che significa che viene eseguito sul software del vostro server web, che di solito serve l’HTML ai vostri visitatori.
PHP inizialmente stava per “Personal Home Page”. Dato che questo limitava abbastanza il significato e l’opportunità di usare il linguaggio per uso generale, il linguaggio ora sta per “PHP: Hypertext Preprocessor”. Questo è quello che si chiama un acronimo ricorsivo (un nome che contiene il nome). I nerd li amano.
Cosa può fare PHP?
A cosa serve il PHP? Fondamentalmente, tutto ciò che vuoi fare su un server web, lo puoi fare con PHP. Fare un blog? Sì. Creare una vera e propria applicazione software-as-a-serivce? Assolutamente sì. Scrivere un piccolo script per elaborare alcuni dati in pochi secondi? PHP è ottimo per questo. Scrivere un complicato insieme di script che accidentalmente diventa un software di successo? PHP è usato spesso in questo modo.
Se non ti fidi di me, il sito web di PHP elenca i seguenti usi:
- Server-side scripting
- Command-line scripting
- Scrittura di applicazioni desktop
Non sono così sicuro di incoraggiare l’ultimo punto, ma è possibile. Ma i primi due sono comuni e buone ragioni per usare PHP nel 2019.
Questo porta a un fatto importante e inevitabile…
PHP è OVUNQUE
Ci sono molte ragioni per conoscere e amare PHP, probabilmente la più potente e valida è questa: è usato e gira OVUNQUE nel web. Il tuo piccolo ed economico account di hosting da 3 dollari al mese potrebbe permetterti di eseguire un’applicazione web in Python o Ruby se acquisti con attenzione. Ma sicuramente eseguirà PHP. Questo significa che puoi contare su di esso ovunque tu sia.
E poiché gira ovunque, ed è facile da iniziare, un sacco di software molto popolare è scritto in PHP. WordPress è l’esempio più grande e più familiare per me, ma strumenti come Joomla, Drupal, Magento, ExpressionEngine, vBulletin (sì, è ancora in circolazione), MediaWiki, e altri ancora eseguono tutti PHP sul server.
E ci sono più framework di applicazioni PHP di quanti se ne possano immaginare: Symfony, Zend, Laravel, Aura, CakePHP, Yii, e anche il venerabile CodeIgnitor. Sicuramente si può fare una lista di frameworks web di una certa lunghezza per quasi ogni altro linguaggio. E per i linguaggi web comunemente usati come Python, Ruby, o Node/JavaScript si può anche essere in grado di accumulare una lista numericamente competitiva. Ma il volume di siti che utilizzano PHP è immenso.
WordPress si vanta orgogliosamente di essere il motore di oltre il 30% di internet. Non c’è nemmeno bisogno di credere a questo fatto per rendersi conto che un sacco di internet deve usare PHP se questo fatto è anche solo concepibilmente vero.
PHP ha alcune qualità molto buone
Il dinamismo facile è cucinato in PHP
PHP fa il rendering e la programmazione HTML più facilmente di quasi ogni altro linguaggio. Quindi è abbastanza semplice cambiare l’HTML in PHP. Basta cambiare il tuo file.html
in file.php
, aggiungere un po’ di dinamismo dentro alcuni tag <?php
e ?>
. La maggior parte dei server web sarà già configurata per occuparsi del resto al posto vostro. È così semplice che quasi chiunque può iniziare senza bisogno di una comprensione della programmazione più approfondita di questa. Poiché PHP è così facile da usare, un sacco di cattivo codice viene scritto in esso.
Una volta capito che la maggior parte del cattivo PHP è scritto da programmatori principianti, la maggior parte della paura e dell’odio per PHP che si incontra nel mondo deriva da un altro problema essenziale: PHP non ha mai avuto un grande progetto con un’idea visionaria sul perché fosse il linguaggio perfetto per il tuo server web. Invece, è il risultato di un’ampia collaborazione attraverso un processo aperto che serve come un crogiolo attraverso il quale ogni buona idea – e alcune cattive – devono passare.
Object-Orientation con (grande) gestione dei pacchetti è ora la norma in PHP
E le cattive idee possono superare quel crogiolo. L’esempio più popolare è che PHP 5.3 – considerato separatamente come la prima versione moderna di PHP – ha introdotto l’istruzione goto
, che è generalmente o schernita o considerata una facile fonte di errori.
Cose altrettanto brutte in PHP che sono risultate dal processo attraverso il quale il linguaggio è cresciuto: l’orientamento agli oggetti è stato implementato per la prima volta come un concetto imperfetto e limitato, la libreria standard è piena di nomi e ordinamento dei parametri incoerenti, e (in un esempio che recentemente ha ottenuto una discreta attenzione) il token ::
viene chiamato dall’interprete dall’imperscrutabile per gli anglofoni: T_PAAMAYIM_NEKDOTAYIM
.
Ma oggi l’OOP è pienamente realizzata in PHP. Pochi linguaggi hanno una pratica OOP simile a Java quanto PHP. Inoltre, a differenza di Java, PHP ha un gestore di pacchetti unico e molto amato, chiamato Composer. Era molto buono, e quindi la facilità di inserire altre librerie ben scritte e ben mantenute in PHP non è niente di cui preoccuparsi.
PHP è diventato molto più veloce
Ma dette queste cose, PHP si sta evolvendo in modi interessanti. Sta crescendo verso l’essere un linguaggio orientato agli oggetti abbastanza completo come Java (nel bene e nel male). E proprio come Java, sta guadagnando facili astrazioni per la programmazione funzionale – probabilmente la moda del momento. Sta anche crescendo un set di strumenti piuttosto impressionante – PHP ama Composer, e per una buona ragione – e un lodevole sforzo per fare tutti questi grandi progetti open source in PHP lavorare un po’ meglio insieme.
Oh, e non dovremmo dimenticare l’attualità: i guadagni di velocità che PHP ha fatto nella serie di release di PHP 7. Questo è ampiamente considerato come iniziato da HHVM uscito da Facebook. Per un breve periodo, c’è stato il rischio che la velocità di HHVM avrebbe fratturato la comunità PHP. Ma non è successo. Invece PHP è diventato così veloce che la gente ha quasi dimenticato l’esistenza di HHVM.
PHP ha un’ENORME comunità; è facile da imparare
Se si sta decidendo quale nuova tecnologia usare, una cosa a cui penso spesso si presti poca attenzione è come ci si comporta con il linguaggio. Com’è imparare il PHP? I tutorial PHP sono comuni e spesso abbastanza buoni.
Uno svantaggio della popolarità di PHP è che si possono trovare alcuni corsi non troppo buoni da parte di persone che non sanno abbastanza su come sia realmente l’uso dello strumento. O che l’ultima volta stavano seguendo le “migliori pratiche” che erano attuali un decennio fa. Ma nel complesso, questo è abbastanza raro che non credo che dovrebbe scoraggiarvi. Scoprire che una pratica che hai usato per qualche mese non è grande è raro, e non è un problema enorme.
Confronti comuni con PHP
Molte persone nuove alla programmazione sono alla ricerca di confronti molto generali tra linguaggi. Quindi, eccoli qui. Tutti i linguaggi che scriverò qui hanno i seguenti tratti in comune con PHP:
- Sono open-source. Ciò significa che puoi usare il linguaggio sottostante gratuitamente (nessun costo), e sei in grado di vedere e capire il programma sottostante se lo desideri.
- Sono spesso usati per lo sviluppo web. Abbastanza semplice, questi sono linguaggi usati molto per lo sviluppo web. Alcuni sono anche ampiamente usati al di fuori di questo ambito, ma non tutti.
- Sono di alto livello, loosely- e dynamically-typed. Questo significa che una variabile può cambiare tipo, e che non è necessario definire quando si definisce una variabile quale tipo di cose (numeri vs stringhe vs oggetti, ecc.) memorizzerà. Questo è generalmente favorito per la programmazione web, ma non universalmente.
- Le loro comunità sono di buone dimensioni o migliori. Ci sono molti linguaggi interessanti che hanno le qualità elencate sopra, ma che non hanno una grande comunità di pratica. Li lascio da parte qui.
Perché usare PHP? Perché non JavaScript?
Forse il linguaggio più importante con cui confrontare PHP è JavaScript. Lo sviluppo moderno richiede che ogni progetto usi almeno un po’ di JavaScript per lo sviluppo e l’interattività lato client. Con Node, è diventato relativamente facile usare JS anche sul server. L’idea di usare lo stesso linguaggio “isomorficamente” sul client e sul server è molto attraente.
Come PHP, JavaScript è un linguaggio eclettico e a volte brutto con molte verruche e “gotchas”. Ma JavaScript è diventato enormemente veloce nell’ultimo decennio, quindi il caso è reale. Perché scegliere PHP invece di JavaScript? Hai esperienza o bisogno di usare librerie in PHP. Altrimenti, penso che JavaScript possa essere una scelta migliore.
PHP vs Active Server Pages ((.Net) Core)
Active Server Pages ha iniziato la sua vita come un linguaggio Microsoft closed-source per la programmazione web. Era abbastanza direttamente paragonabile a PHP, ma funzionava in ambienti Windows Server. È stato sostituito da ASP.net. Che ora è stato sostituito da ASP.NET Core. Questi ultimi due sono ora linguaggi open-source, come lo è PHP. E personalmente non ho mai scritto una sola goccia di ASP, in nessuna variante.
Favorirei ASP se usassi e amassi i server Microsoft. Altrimenti, datemi PHP per favore. Le dimensioni e la scala delle comunità non sono davvero paragonabili.
Dovrei usare Ruby o PHP?
Ruby, in particolare Ruby on Rails, era molto popolare una decade fa. Ruby è ancora un linguaggio molto amato, che ai miei occhi è molto più elegante di PHP. Detto questo, la sua comunità è più piccola. E sento che Ruby ha smesso di essere il “linguaggio caldo” (essendo superato in quel ruolo da JavaScript). Ruby è bello, e ci sono abbastanza persone brave a farlo che non lo eviterei per questo motivo. Ma assumere persone che hanno già familiarità rimarrà più difficile che farlo in PHP. (Anche se penso che l’abilità di uno sviluppatore medio di Ruby sia probabilmente superiore a quella di PHP.)
Python vs PHP: Qual è meglio?
L’ultimo linguaggio che ha senso in un confronto uno a uno con PHP è Python. Python è usato in molti altri contesti oltre allo sviluppo web (è anche molto popolare per la statistica e l’analisi dei dati). È anche uno dei linguaggi più stabili e ben progettati in circolazione, nel consenso popolare.
Python (come Ruby e JavaScript) è un po’ più difficile da far funzionare su un server web rispetto a PHP. Ma è un linguaggio più bello, e più usato di PHP. È uno dei linguaggi che penserei seriamente di favorire rispetto a PHP, a parità di altre cose (accesso a librerie esterne, accesso a esperti che assumono, ecc).
PHP vs Go? Scala? Java? ecc?
Ho detto all’inizio che c’erano molte somiglianze con tutti i precedenti confronti diretti tra linguaggi che ho fatto. Ma se lasciamo cadere questi vincoli, ci sono tonnellate di altre lingue che potremmo confrontare. Quindi per toccarne brevemente alcuni:
- Java è enormemente popolare, e molto veloce. È usato per costruire applicazioni Android, applicazioni desktop e applicazioni web. Non è però tipizzato dinamicamente, che ha migliori garanzie di prestazioni, ma peggiore facilità di programmazione web.
- Go è un linguaggio più recente e in crescita sostenuto da Google. È focalizzato sui server web, ma di livello leggermente inferiore (più simile al C) rispetto al PHP. È veloce, ma la comunità di pratica è più piccola.
- Scala è un popolare linguaggio di esecuzione JVM (compatibile con Java) che sembra ancora crescere in popolarità. È più elegantemente progettato di PHP, ma non posso dire molto altro su di esso con sicurezza.
Ancora una volta, questo è tutto ciò che sento di avere abbastanza contesto per toccare. Ma ci sono ancora più opzioni che si possono considerare. Ma questa è la fine delle alternative specifiche che considererò a PHP.
La scelta del linguaggio di programmazione riguarda il contesto
Viste queste comparazioni, perché usare PHP? Ho enumerato alcune delle cose negative di PHP, e alcune le sento regolarmente. L’incoerenza dell’ago e del pagliaio nelle funzioni di ricerca mi morde almeno una volta al mese quando sto facendo rapidamente qualcosa senza completamento automatico.
Per un vero e completo progetto greenfield, senza bisogno di interoperare con qualsiasi altro sistema, o bisogno di funzionare in qualsiasi ambiente arbitrario, con nessuna competenza esistente nel team, ci penserei abbastanza profondamente prima di raccomandare PHP. Python mi attrae molto in questo scenario. Ma questi sono un sacco di avvertimenti. Ci sono ottime ragioni per scrivere in PHP anche per un nuovo progetto greenfield.
Ogni linguaggio web moderno può aiutarvi a creare buoni siti web e applicazioni. E ognuno di essi ha caratteristiche che non sono ideali. PHP, come ogni altro, richiede che tu capisca veramente i suoi compromessi per te nel tuo progetto per determinare se ha senso o meno per te. Ma per me, personalmente, continuo a trovare che è possibile essere – come Keith Adams ha detto in un grande discorso – “scioccamente produttivo in PHP.”
Se hai un team di programmatori Python, scrivi la tua applicazione in Python. Se hai un cofondatore che conosce Java, scrivi il tuo SaaS in quello. Le considerazioni sul personale del software dovrebbero sempre superare quelle sulle lingue.