顯示具有 bad design 標籤的文章。 顯示所有文章
顯示具有 bad design 標籤的文章。 顯示所有文章

2012年4月24日 星期二

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


待續

2012年4月16日 星期一

PHP:一個亂七八糟的爛設計 - (I)



最近讀了一篇外國人(Eevee)寫的批評PHP的文章,大概是我這輩子看過在同一篇文章中出現最多負面意思的英文單字的一篇文了。很難想像居然有人會這麼痛恨PHP到這種程度啊,更讓我覺得驚訝的是要對PHP痛恨到這種程度其實本身也是要對PHP熟到一種程度才能夠寫出這篇文。這麼有趣的文一定要來翻譯一下:

原文:PHP: a fractal of bad design

我是一個胡思亂想(或是有毛病的?)的人。我抱怨很多事情,這世界上有很多技術是我不喜歡的。基於程式是一門很極年輕的學科,我們之間甚少人真正知道我們自己到底在做什麼,所以這基本是可預期的。在加上Sturgeon定律告訴我們 -任何事情,其中百分之九十都是垃圾- 我這輩子還有很多值得我抱怨的。

但PHP不一樣,PHP不僅僅只是難用到靠背,或是不合我用,或是爛,或是違背我的信仰。基本上,這語言的所有功能就某從層面而言都是爛的。這語言,框架,或是整個PHP生態都爛透了。因為PHP爛的這麼有系統化以致於我甚至沒有辦法單純的指出一個點說為何我不喜歡PHP。每次我想要生一個列表來講PHP有多爛,我就會卡在這個深度搜尋的問題中,不斷的發現更多更多的可怕的(appalling)問題。

PHP是個令人難堪的東西,一個會導致我的職業毀壞的東西。但這居然被一堆還沒學其他的東西的業餘工程師歌頌著。這實在是非常令人抓狂。雖然它有一些微不足道的救贖特質,但是我寧願選擇相信它沒存在過。

我把這些我痛恨的東西從系統化的崩壞中抽取出來了,這是我最後一次嘗試了 ...

待續 ... (譯:這文章太長了,先翻到這好了XD)
Related Posts Plugin for WordPress, Blogger...