Un punto di vista oggettivo su PHP e Node.js

Un punto di vista oggettivo su PHP e Node.js

Dopo il recente passaggio a Node.js effettuato dal team di WordPress sul backend della sua piattaforma principale di blogging, emergono nuovi scenari per chi sviluppa siti e app.

PHP o Node.js?

Non è mai esistita una vera e propria guerra tra PHP e Node.js, anche se gli sviluppatori cercano sempre di scatenarla con interventi opinabili che non tengono conto delle differenze esistenti tra queste due soluzioni.

PHP è un linguaggio molto maturo, essendo di fatto nato quasi a ridosso dell’esplosione del Web come tecnologia di massa. PHP ha attraversato varie fasi durante il suo sviluppo: partito come linguaggio procedurale, è passato gradualmente al paradigma OOP con fasi alterne e non senza problemi.

Ci sono molte incongruenze in PHP che testimoniano le varie fasi di una crescita durata parecchi anni, ma non va dimenticato lo sforzo costante degli implementatori di PHP di risolvere bug e problemi aggiungendo al contempo nuove feature.

Il punto di forza di PHP è anche paradossalmente un suo punto debole: PHP si impara facilmente e se questo da un lato aumenta la produttività a livello di codice, dall’altro può incentivare l’uso di pratiche scorrette e dilettantistiche che possono generare i noti problemi di sicurezza di cui soffrono diversi temi e plugin di WordPress.

Node.js è una soluzione altrettanto matura anche se relativamente più recente. Il punto di forza di Node.js per gli sviluppatori è sicuramente il fatto di essere basato su JavaScript. Quindi uno sviluppatore, si penserà, può passare dallo sviluppo lato client a quello lato server con facilità.

In realtà non è così semplice.

Node non annulla le differenze tra frontend e backend: le differenze permangono e le difficoltà anche. L’unico punto in comune è il linguaggio usato, ossia JavaScript, con le ovvie differenze.

Node viene scelto per la sua scalabilità e performance, ma tali punti di forza non dipendono da JavaScript, quanto piuttosto dalla scelta di usare un design single-threaded basato su un non-blocking I/O e la predilezione quasi assoluta per l’asincronicità. JavaScript è stato scelto proprio perché si coniuga bene con questa scelta di design.

Scegliere una soluzione

La scelta di Node.js potrebbe apparire la migliore da fare, ma occorre capire che non stiamo parlando del JavaScript a cui siamo abituati.

PHP non deve gestire un server: PHP viene eseguito da un web server come Apache o nginx che già gestisce in modo autonomo tutti quei task che diamo per scontati, come ad esempio le richieste HTTP o i messaggi di errore.

In Node.js si parte da zero, oppure dalle basi utilizzando framework come ExpressJS. Con PHP gestiamo un sito, ma qui con JavaScript dobbiamo gestire anche il server.

Se prima potevamo cavarcela con competenze sistemistiche di base (editare il file php.ini, usare il file .htaccess o riavviare il web server), con Node sono richieste conoscenze aggiuntive (gestione dei permessi e delle utenze, conoscenza del funzionamento dei processi, gestione della memoria ecc.). In pratica dobbiamo lavorare molto di più sulla macchina su cui ospitiamo un sito o un’app.

La differenza maggiore a livello di programmazione è quindi questa: tempi diversi per raggiungere un certo livello di produttività.

Chi conosce già la programmazione lato server parte leggermente avvantaggiato con Node.js rispetto a chi ha sempre fatto solo sviluppo frontend. Si tratta più che altro di quelle nozioni relative al protocollo HTTP e alla gestione del server che spesso mancano in parte sul lato client.

Quindi, in una parola, si tratta di diventare sviluppatori full-stack.

Torna su