程式設計大師論道:PHP的魅力和不足何

孤獨的貓董發表於2008-09-17

程式設計大師論道:PHP的魅力和不足何在2008-07-01 來自:lizhe1985  [收藏到我的網摘]

SOA 案例分析系列
學習和實驗 SOA 的各方面知識、方法、技術及工具
Snort:入侵檢測工具
Snort使用手冊:保護和分析 Web 站點
Snort 使用手冊之第2部分
通過設定 Snort 報告 Web 站點入侵
JAVA家族裡的貴族—Groovy!
國內 首個 Groovy 中文 視訊教程 Groovy入門

來源:開發者線上

  在程式設計領域有不少堪稱經典著作,其中包括《Thinking In C++》和《Thinking In Java》,它們的作者是著名的電腦科學作家Bruce Eckel。近日這個程式設計大師聯絡程式語言Java、Perl和Python,分析了老牌經典程式語言PHP的優缺點,下面讓我們一睹為快。

  PHP的魅力所在

  提起老牌經典指令碼語言PHP,我們不禁會聯想到它的一個令人印象深刻的特點,即上手快,你無需對這個語言進行深入廣泛的瞭解就可以使用它開始程式設計。在我們知道的語言中,沒有幾個語言能把這種特點體現的淋漓盡致。與之相對應的另一個極端是Java語言,即使你寫一個簡單的hello world程式也需要掌握不少Java知識,執行一個Web應用同樣不那麼簡單。而這一切在PHP中是一件舉手之勞的簡單事情。

  在程式設計能力方面,PHP只是比Perl表現好一點。Perl是一種古老的指令碼語言。最初的Web應用大多是用Perl編寫的,Perl很像C語言,使用非常靈活,對於檔案操作和處理具有和C語言一樣的方便快捷。

  但是,由於Perl的靈活性和“過度”的冗餘語法,也因此導致許多Perl程式的程式碼令人難以閱讀和維護,記得在Web剛剛興起的時候,當聽到有人說將使用Perl編寫大型應用的時候,我就知道他們面臨的將是失敗。

  Perl的哲學思想是同一件事,總有不止一種方法來解決,結果造成了大量難讀難懂的程式。對於規模較大的系統來說,Perl編寫的維護成本相對更高,另外Perl對於CPU的消耗似乎較高,效率似乎有一些不足。

  電腦科學作家Bruce Eckel

  相比來說,PHP卻已經建立了一些更大型的應用,例如大名鼎鼎的開源CMS系統Drupal。我的一個朋友Nancy Nicolaisen表示她希望搭建一個旅遊網站,我建議她看一下Drupal。她聽取了我的建議並最終選擇了它,只進行了輕微的改動就使她的網站上線了,用她的話來說,這個使用者社群吸引她的地方是它的強大和易用。

  而且PHP允許初學者可以直接針對他們感興趣的功能進行程式設計,而無需花費大量的時間來學習程式設計理論和實踐。你只需要編寫程式碼並通過網頁來檢視效果就可以了。

  PHP的不足之處

  但是這同時也是這個語言的問題所在。你經常會發現很多使用PHP編寫出的程式碼錯誤百出,但這些程式碼往往卻被人們互相拷貝,卻沒有人去認真分析研究它們。這些程式碼通常是由那些習慣互相借鑑拷貝程式碼的程式設計師所編寫,這些程式碼質量低劣的原因是這些程式設計師通常不習慣問為什麼,不喜歡弄清楚原理,只管拿來就用。

  在我第一次想深入瞭解這個語言的時候,我希望看到一些關於檔案鎖定的示例,結果儘管看到了非常多,但卻沒有一個是正確的。正如事實已經證明的那樣,PHP 主要是與資料庫搭配使用,資料庫來處理所有一致性問題,因此多數人只關心從資料庫中存取資料,而不用再去必須考慮底層的問題。但是這個語言不僅僅可以處理與資料庫互動的上層問題,同樣也可以實現與檔案系統之間互動的底層問題。我的感覺是,在PHP社群中多數人只關心如何得到一個好的結果,而沒有多少人關心它的真正實現原理,因此才出現了這種錯誤的傾向。

  後來推出了PHP 5,與以前版本相比有了不小改進,但是它主要是增加了一些從C++和Java中提取出來的功能,但是人們只是到處找來一些新功能,但卻沒有仔細的分析每一個增加的功能,及其對這個語言的影響。

  相比之下,根據我對Python語言多年的觀察,在過去10多年中它增加的每一個新功能都經過反覆的分析和推敲。時間將會證明誰對誰錯,或者PHP社群將會知道如何來處理這些功能,但是我對此深表懷疑。

  在最近一段時間裡,我一直使用PHP來實現我新建立的站點。之所以選擇它的關鍵是,我只用它來進行一些簡單的開發。舉個例子來說,PHP讓你可以解決非常弱智的HTML問題,例如你不能在HTML中包含檔案的問題。PHP可以輕鬆做到這一點,而且可以讓我輕鬆的在整個站點之間實現我的設計,而且有時候我們只需要實現一些小東西並將其嵌入在頁面中,PHP實現起這些東西來非常簡單。

  但是,我發現隨著要完成的任務複雜度的提高,更好的選擇是選擇使用Python,因此PHP更適於處理簡單的任務。

  Python的核心非常精簡,功能非常豐富,它提供了一個良好的程式構建基礎。綜合了C和C++二者的優點,只要採用合適的結構和方式,便可對 Python程式進行無限的擴充。當然,它也有自己的不足之處,例如有的朋友抱怨Python對規則表示式的支援不如PHP中強大。


相關文章