如何客觀公正地評價PHP語言?
客觀、公正、無偏見地評價一下PHP,它的優點、缺點,與其他語言的比較,以及其他一切。
不要簡單地說「PHP是最好的語言」「PHP是最差的語言」之類的。
你已經先入為主地堅決否認 「PHP是最好的語言」,還說什麼客觀公正?
事實上PHP就是最好的WEB開發語言(沒有之一),除非你認為80%的網站開發者是傻X。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在性能上已經得到了大幅度的提升。函數命名和參數順序沒有統一的規範,比較紊亂。從語言設計的目標看,主要面向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是有獨到優勢的,但是要成為一門更通用的語言,還有較長的路。
作為一個有C語言基礎的,一直養成了對數據類型很敏感的習慣,直到用了php. 我滴個神啊,定義變數怎麼和鬧著玩似的。
寫了幾年的php代碼,發表一下個人看法。
相對於其他語言,Php的顯著優點是簡單粗暴,上手快,農民工便宜。
但是這些優點都是以犧牲健壯性,可維護性,可拓展性為代價的。
php弱類型,即時編譯,導致很多錯誤在運行的時候才能發現,所以對健壯性要求很高的系統都不會用php這樣的語言來構建,你見過哪個銀行的系統是用php寫的?
Php在代碼規範上面沒下功夫,導致php代碼各種寫法混存,最終苦逼的是維護別人代碼的接盤俠。。。
再說說php的架構,php採用的是腳本+擴展的架構,你會發現php應用的很多核心代碼都是放到擴展上面實現的,而擴展都是用c寫的,這樣移植又複雜了好多了。從這一點來說,php就是一個組裝師。推薦閱讀:
※有哪些實用的電腦軟體值得推薦?
※ADSafe或類似的廣告屏蔽軟體安全嗎?
※Windows 平台有哪些值得推薦的常用軟體?
※阿里巴巴反釣魚安全服務為什麼如此消耗 CPU?
※如何高效使用Trello?