你認為PHP是一個好的編程語言嗎?

已邀請:

omg微博

贊同來自:


PHP語言的核心代碼我偶發現兩種不同的爭論。一部分人說 “我承認它語言本身不是很好,但是你看看,我們用PHP做瞭這麼多的網站!”另一部分人是這麼認為 “看看我們使用php做的那些網站 - 這還敢說PHP這語言不好!”。


  他們的重點是在表達這麼多年來我們使用PHP做的網站都是很驚人的. 不一定網站富有很多技術含量,但是使用PHP給客戶做的網站數量那確實是可見的. 而真正支配PHP網站項目的不是它本身是一門好的編程語言,而是它讓開發者維護和建設瞭實用的網站. 你可能不會去挖掘 Wordpress, Drupal 或 phpBB,但是你想象下它們在過去的10年以來所被分享和相互合作的數量。


  所以的網站都使用一門編程語言這的確很容易做到,但是你有木有偶爾去想過這真的很讓人反感和厭惡的。


  不足之處


  試想去運行一個擁有500萬行代碼的應用,當嘗試調用這個方法的時候,但這個方法不存在的時候,該應用就會終止運行,這樣肯定是不行的。


  那麼我這麼解釋吧:讓用戶看到的是一個空白頁面,而且顯示的是並沒有堆棧路徑的錯誤(因為$user有時候在某些情況下是空),這是不行的. 對於一個運行在這可惡的互聯網上語言來說,這樣一個抉擇所帶來的巨大浪費和技術顯然是不足的。


  因為並不像1995那樣沒人關心你的留言板功能是否可用瞭。即將到來的是2014瞭,你現在至少要做的是讓用戶可以看到一個比較爽眼有堆棧路徑的錯誤信息,真誠地向用戶道歉說明情況,把堆棧路徑郵件給你的開發者. 至少有3個其他的網站腳本語言不會這樣赤裸裸地拋出空白頁面. 對於這種情是有原因的。“與專門語言一致”會給人們拋回一個反彈的問題,而這些人就會繼續花一些時間來尋找問題--隻有去研究來自應用的那些堆棧路徑信息。


  這些也是不足的地方


  • 你不能對一個少於4行代碼且不會帶來負面影響數組很可靠地取出它的第一個元素來,這是不足的地方。


  • 在不知PHP配置的情況下,echo 5/3 的輸出結果還會收到國傢地區的限制,這是不足的地方。


  • 2014年還不能在迭代程序中調用array_map或者是 “$iterator->reduce”,這是不足的地方。


  • 忽略一個現象:目前大多數的phper都還是依靠有關對函數和類的註釋來理解的, 因為還不能收集郵件列表中的垃圾郵件,這是不足的地方。


  • 到處高呼道"對文字的輸入提示就意味著個給float類型傳瞭一個整形而導致PHP致命的錯誤",把$x = (float)$x;傳到一個並不恰當的地方還說是一個合理的參數,這是不足的地方。


  • 一種不能同時從兩個後臺終端交互數據,還假裝"承諾"什麼的語言,把 “獲取數據庫的數據然後輸出在網上”作為其公佈核心的資格,這是不足的地方。


  • 通過使用生成一些未定義的可變的錯誤僅能勉強使用token_get_all()來澄清錯誤緩沖,這是不足的地方。


  • 在某種語言中使用echo 0.000001得到 1.0E-6 ,就宣稱number_format/sprintf對每個float型的數據不合適,這是不足的地方。


  不管怎麼說,盡管你不得不用php來處理一些可能會產生沒有堆棧蹤跡的案例, 這些一點一點的缺陷是不能打破"php平臺"的.不過是該說說這些不可思議很神秘的缺陷,它們每天都在運轉,(換個角度說)是又不再有人去探索和證明它們。


  所以,請不要假裝"一切都很好,我不得不學PHP". 不,不,不是這樣的,還有很多不足之處等著修正瞭。


  很好,另一個要高呼的是什麼呢?


  首要的事情不是給internals寫批判信抱怨什麼. 那樣會讓人感到很驚異的. 不管怎麼說,倒是很少有人贊助php的核心,也並不要擔心誰做瞭就是最好的開端,特別是像你們和我, 並沒有提供很規范的解決方案。


  要是你有足夠的耐心,而且對互聯網也瞭如指掌的人,要是這樣, 你就該寫一些RFCs來改善它,然後跟他們保聯系,持保持一年或者更多時間都可以,直到都參與進來改善它. 雖然不是一個很好的系統,由於我們沒有得益於這個編程語言中的獨裁者,那麼做起來肯定要花費更長的時間瞭。


  從目前的狀況來看,PHP也變得越來越具有負載性,並不是一個很好的選擇,所以成都建設網站這些都需要修正的. 第一步就是要承認的事實是:PHP內核本身真的存在問題,這些問題我們得註意,然後正對這些問題可以展開一些合理的論述. 不過就我所說的和據我所知的這些問題並不是技術上的問題. 這都是大傢一致在討論php應該怎麼做,應該是什麼,就這樣漸漸的成瞭沒有人關註和不成文的論述瞭。


  而且緊緊說"PHP開源,修正下吧",這也不會解決任何問題的.你不可能通過說有很多問題但又假裝問題不存在而吸引人們去贊助某個項目. 在網絡上是有一種方法,不用花費八年時間去修理一個破車就可以用相同數量的錢重獲一輛新的,可以直接開的車. Java的壯大跟 Coin 一樣修正小問題。


  現在知道PHP是有問題瞭。不要再假裝沒有瞭。


  “PHP就是這樣一個瞭不起的高兼容性語言,讓你做瞭不起的事”,當全部的收益都用去處理一些不利的錯誤時,這個說法就不沒有說服力瞭。


  “你總不能讓代碼和E_ERROR去調用一個沒有對象的類成員方法吧。”


版權聲明:本文為博主原創文章,未經博主允許不得轉載。

要回復問題請先登錄註冊