Quando si discutono le lingue, queste due citazioni Stroustrup ricordano sempre:
Anybody who comes to you and says he has a perfect language is either naive or a salesman.
e
There are only two kinds of languages: the ones people complain about and the ones nobody uses.
Ora alla domanda in questione. La maggior parte dell'odio è diretta principalmente a PHP4. PHP5 è stato il primo rilasciato nel luglio 2004 (beta un anno prima) e l'ultima versione di PHP4 è 4.4.9 pubblicato nell'agosto 2008 . Non c'è più alcun motivo valido per utilizzare PHP4, a meno che, naturalmente, non si mantenga un'app legacy. PHP4 non è più supportato dal gruppo PHP, e speriamo tutti che svanisca presto.
Il divario tra le due versioni è maggiore di quello che solitamente avviene tra due versioni principali, poiché il motore dietro l'interprete è stato riscritto da zero e ha incluso un nuovo modello di oggetto. Il rilascio di PHP5 ha coinciso grosso modo con il rilascio di MySQL5, un'importante revisione di MySQL. PHP è solitamente abbinato a MySQL e la quinta versione di entrambi ha affrontato diversi problemi e li ha portati alla velocità con la concorrenza. MySQL è anche soggetto a commenti FUD , ma, beh, è database dietro AdWords di Google .
PHP 5.3 è stato un importante rilascio in tutto tranne il nome. Un sacco di funzionalità che, laddove previsto per PHP6, hanno trovato la loro strada in 5.3 e per ogni sviluppatore 5.2 là fuori, raccomanderei vivamente di migrare a 5.3+ prima possibile. La versione corrente, 5.4, include alcune fantastiche funzionalità (tra le altre):
Ora per i tuoi commenti specifici:
PHP is good but generates spaghetti code
Questo non è assolutamente vero. Nessun linguaggio genera alcun tipo di codice, è sempre compito dello sviluppatore rovinarsi, il codice spaghetti è possibile in tutte le lingue. Ciò che è vero però è che PHP ha una barriera di ingresso molto bassa rispetto ad altri linguaggi popolari, quindi è molto più facile per gli sviluppatori inesperti scrivere codice cattivo (ma funzionante). Ma questo è un effetto collaterale di ogni lingua facile da imparare.
Inoltre, PHP non applica alcun particolare stile o paradigma e dipende sempre da te decidere cosa fare. Ho sempre pensato che fosse una buona cosa, mentre altri lo considerano un valido punto di critica. Dovrai decidere da solo.
PHP is nice but Python is marriage material
PHP lacks stuff that you get in other languages like C# or JAVA
Sì, lo fa. E linguaggio X per uso generico mancano molte cose che si trovano in PHP. Come essere portatili tra sistemi operativi E attraverso server http e supporto per ogni libreria di terze parti immaginabile che sarebbe utile in un ambiente di sviluppo web. Devi capire che PHP non manca di importante , se lo facesse sarebbe morto molto tempo fa. Il confronto tra linguaggio generico X e altri linguaggi multiuso in PHP è un errore, mele e arance. Sebbene PHP offra alcune funzionalità per supportare l'idea che sia di uso generale, non lo è, è un linguaggio web.
Devi tenere a mente che il percorso evolutivo di PHP è molto diverso da linguaggio generico X : PHP è cresciuto e si è evoluto, non è stato progettato. Ogni volta che una caratteristica viene aggiunta alla lingua è per necessità reale, non in accordo con qualche ideale immaginario di quale dovrebbe essere una lingua. Le lingue sono prima di tutto strumenti, e PHP è perfetto come tale.
Non ho nulla contro linguaggio generico X , sono tutto per la scelta dello strumento giusto per il lavoro. Ho sempre mixato e abbinato, e sto codificando anche in Java e Python, a volte in parallelo con PHP. Ma PHP è l'unico che prenderei in considerazione di sposare. :)
Se stai pensando di iniziare con PHP, dovresti ovviamente iniziare con l'ultima versione stabile, come faresti in qualsiasi altra lingua.