PHP:一個亂七八糟的爛設計 – (II)

續前

一些比喻

我對Mel隨口講了對於PHP的失望,而她堅持我必須我這些話寫在這裡:

我很難解釋PHP到底有什麼問題。好吧。想象你有一個工具箱,並且裡面存在着一組工具,看起來是可用的標準的工具。
你拿出一把螺絲起子,但發現既不是十字也不是一字。好吧,可能暫時沒什麼用。但你可能毀想說有一天應該會有用吧。
你拿出一把鐵錘,但令人沮喪的,兩頭都不是拿來錘釘子的。好吧。其實還是可以用,可以用兩個尖端中間的部分來敲釘子。
就這樣,每個工具都有有點奇怪甚至離奇,但也不至於完全沒用。畢竟整體來看好像該有的都有,也堪用。
現在想像如果你遇到百萬個工匠使用這樣的工具箱。並且他們告訴你:這些工具很好啊,我不覺得有什麼問題啊。這些工具我都有用過而且都可以用啊。但是看一下這些人蓋出來的房子,房屋呈現八角形,屋頂上下反過來了。敲一下門,就崩壞了,然後這些工匠開始指責你把門弄壞了。
這就是我看到的PHP的問題。

立場

我認為以下特質對於讓一個語言具有生產力或有用是很重要的。但PHP違反了這些特性。如果你不認同這些特質是重要的,我們大概就沒辦法再談下去了。

  • 一個程式語言必須是可預測的。這是一個中介媒體用來傳遞人類的想法,並且透過這個媒介來讓電腦實現這些想法。所以讓人類理解的程式是很重要的。
  • 一個程式語言必須有一致性。當我學習了其中的一部分後我應該可以很快地學會剩下的部分。
  • 一個語言必須簡潔。
  • 一個語言必須是可信賴的。語言是拿來解決問題的,所以必須盡可能避面帶來新的問題。
  • 一個語言必須要能夠被除錯。
於是我的立場是這樣的:
  • PHP總是令人感到意外:mysql_real_escape_stringE_ACTUALLY_ALL
  • PHP沒有一致性:
  • PHP不夠簡潔:=== 或是 C API呼叫時的錯誤處理
  • PHP有點古怪:==foreach ($foo as &$bar)
  • PHP很難理解:沒有堆疊追蹤
我沒有辦法為每個問題寫一段解釋來說明這些問題。我相信讀的人會自己思考XD

待續



Comments
  1. 回覆

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *