客觀、公正、無偏見地評價一下PHP,它的優點、缺點,與其他語言的比較,以及其他一切。
不要簡單地說“PHP是最好的語言”“PHP是最差的語言”之類的。
回複內容:
作為一個有C語言基礎的,一直養成了對資料類型很敏感的習慣,直到用了php. 我滴個神啊,定義變數怎麼和鬧著玩似的。你已經先入為主地堅決否認 “PHP是最好的語言”,還說什麼客觀公正?
事實上PHP就是最好的WEB開發語言(沒有之一),除非你認為80%的網站開發人員是傻X。
雖然有不少人堅持不懈地噴PHP,但PHP用飛速上漲市場佔有率還以響亮的耳光。
PHP的優缺點,網上討論也很多了。
作為WEB開發語言,最主要的優點是:
1. 開發速度快,秒殺其他所有web開發語言
2. 部署、維護極其簡單,再次秒殺其他所有
3. 效能好,好於Python、Ruby。不如JAVA,但差距可以接受。
有這幾點,其他已經不重要了。
PHP被噴得最多的是語言特性,但語言是用來實現功能的,不是停留在學術研究層面的,實戰效果好是王道。
你設計個特性完美的語言,但是極其難學難用,也不會有什麼卵用。做過幾年的php開發,後來短期做過c#,java開發,也接觸了一些其他的語言,包括ruby和python,目前專註於web前端開發。因此我覺得自己還是可以比較公正客觀地評價php。
優點
在web領域,php確實是一門開箱即可使用的語言,不管是在linux下還是windows下,搭建
web開發環境都非常便利,特別是對於
新手來說。按照樣本就可以很快寫出一個demo,是非常方便簡單的,不需要OO,不需要額外的模板引擎。如果需要額外的庫,把檔案直接加到目錄裡面,使用include或者require進來即可。這對於新來,或者開發微型項目,都無疑是最方便的。四個字:開箱即用。
而開發大型項目,那麼OO,模板引擎,包管理器,各類架構也是應有盡有。可以說,php也是能夠滿足企業級的開發需求。
很多人以前詬病的php的缺點包括
- 沒有好的包管理器(pear,只是用的不多)
- 缺乏命名空間
- 開發不規範
目前來說上述的一些缺點都已經得到瞭解決
- Composer 目前應用比較廣泛的php包管理器
- 5.3以後增加了對命名空間的支援
- PHP之道 對php的開發做了一定的規範限制
缺點
效能問題,這方面確實是比不上java,但目前php NG在效能上已經得到了大幅度的提升。
函數命名和參數順序沒有統一的規範,比較紊亂。寫了幾年的php代碼,發表一下個人看法。
相對於其他語言,Php的顯著優點是簡單粗暴,上手快,農民工便宜。
但是這些優點都是以犧牲健壯性,可維護性,可拓展性為代價的。
php弱類型,即時編譯,導致很多錯誤在啟動並執行時候才能發現,所以對健壯性要求很高的系統都不會用php這樣的語言來構建,你見過哪個銀行的系統是用php寫的?
Php在代碼規範上面沒下功夫,導致php代碼各種寫法混存,最終苦逼的是維護別人代碼的接盤俠。。。
再說說php的架構,php採用的是指令碼+擴充的架構,你會發現php應用的很多核心代碼都是放到擴充上面實現的,而擴充都是用c寫的,這樣移植又複雜了好多了。從這一點來說,php就是一個組裝師。從語言設計的目標看,主要面向web,這一點可以說既是php廣泛使用的原因,也是被人吐槽的原因。我從以下三個方面對比一下php和java這對冤家:
1.網路編程
php能很好地和server整合,因此從socket編程中解脫出來了,不像java/python其他常見web程式設計語言通常需要自己實現server,而且php自身通過sapi封裝了http所需的全域變數,這大大簡化了手工解析http協議,但是另一方面也導致php對socket、多工等網路編程的支援明顯弱於java。
2.並發編程
php沒有提供良好的並發編程手段,這一點在為server服務的時候不是太大問題,但是如果編寫獨立的用戶端或服務端程式就比較蛋疼了。這一點,相對java來說就極大限制了php成為一門更優秀的語言。
3.文法特性
從文法特性上來說,php和java很像,但是也各有特點,也都在進步。比如,java對範形編程的支援,php對匿名函數,閉包等的支援(java8有了),php在hack的影響下也引入了標量類型等新特性
綜上:php在網路編程與並發編程方面還不算友好,在php7以後應該會有改進,對於web編程php是有獨到優勢的,但是要成為一門更通用的語言,還有較長的路。