為什么說PHP是個(gè)集中營
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
本文是從 Why PHP Was a Ghetto 這篇文章翻譯而來。 有一天我跟在DUMBO的一個(gè)非常棒的創(chuàng)業(yè)公司的老板聊天,談到為什么非PHP界的開發(fā)人員普遍輕視PHP和PHP相關(guān)社區(qū)。他提出了一個(gè)觀點(diǎn)讓我印象很深,很大程度上是因?yàn)橐郧皬膩頉]有聽到過這樣的說法。 如果你不知道大多數(shù)的程序員都會對PHP發(fā)什么樣的牢騷,那么,這些牢騷差不多會像這樣: 語法丑陋 缺乏其它語言都有的一些必要的特征(在5.3版本之前,沒有命名空間,閉包) 不一致的函數(shù)命名、使用慣例,以及其它一些怪異的東西 過程和面向?qū)ο蟮碾s混 基本上80-90%的PHP項(xiàng)目都爛如一堆狗屎 但他所說的PHP的問題卻是另外一個(gè)問題。他并沒有說這種語言有問題——他認(rèn)為這種語言被一種常見的文化現(xiàn)象包圍著,是一種通常由語言的創(chuàng)造者造就的文化傳統(tǒng),現(xiàn)在看來這對一些糟糕的編程實(shí)踐方法起到了鼓勵(lì)作用。也就是它使PHP代碼變的劣質(zhì)和不可維護(hù)。 這種一個(gè)語言或框架上體現(xiàn)出創(chuàng)始人的哲學(xué)思想并被相關(guān)社區(qū)推崇的現(xiàn)象是的確存在的。他拿出來Ruby和其創(chuàng)始人Matz作為例子。Matz想要的是一種易讀易寫、能提高程序員工作效率的語言。沒看見Ruby開發(fā)人員們言之必稱快速開發(fā)以及這種語言的優(yōu)雅? 接著就是DHH 和他的Rails框架。還有Guido和他的Python語言。于是我在想:Rasmus對于PHP呢? Rasmus Lerdorf給人的印象非常的有趣。他創(chuàng)建了最初版的PHP語言,而且一直在改進(jìn)這種語言,他在PHP社區(qū)里被當(dāng)作神一樣崇拜,他在PHP的任何方面都 享有最大的權(quán)威。他被眾多的會議邀請去做演講,同時(shí)被大網(wǎng)絡(luò)公司(yahoo.com)所雇用,他獲得了所有人的尊敬——盡管有這樣一種事實(shí):他成了大多 數(shù)的非PHP程序員所鄙視的PHP上的眾多問題的形象代表。 Rasmus倡導(dǎo)避免使用框架,而把PHP更多的當(dāng)作一種模板語言。對他來說,這種做法能產(chǎn)生直接的運(yùn)行效率和可擴(kuò)展性(程序負(fù)載可知)。而對于其 他的所有人來說,這種做法導(dǎo)致了大量的亂燉似的過程式代碼,大量的無法維護(hù)的項(xiàng)目。自從1995年P(guān)HP誕生至今大概10年左右的時(shí)間里,所有的PHP項(xiàng) 目都是按照這種指導(dǎo)寫成的。 與此同時(shí)另外一個(gè)問題突然的出現(xiàn)了:在PHP5.0之前,PHP的初期,PHP獲得了大量的新手的追隨。這種語言的入門門檻出奇的低,任何人都可以 下載自解壓的×AMP Windows程序安裝包、在2兩分鐘內(nèi)用上這種語言。除此之外,那時(shí)在Web開發(fā)方式上對MVC模式的共識并沒有真正的出現(xiàn)。這樣一來你可以想象,一群 新手和一個(gè)缺乏好的開發(fā)實(shí)踐方法的語言組合到一起能創(chuàng)造出什么?一堆無法維護(hù)的垃圾。而且整個(gè)大環(huán)境都是這樣。 不要誤解我的話——優(yōu)秀的PHP開發(fā)者還是不少的,即使是當(dāng)時(shí)。但是,就像我說的,粗制濫造的菜鳥作品到處都是。當(dāng)牛仔式無羈的PHP程序員在沒有 指導(dǎo)原則的情況下聚集到一起開發(fā)程序,于是像PHPbb、 PHPNuke以及很多的粗糙的.php3程序包就出現(xiàn)了。但是你能單純的責(zé)怪PHP開發(fā)人員嗎?不能!其它的Web語言巨人,ASP和Perl,同樣惡 名遠(yuǎn)揚(yáng),同樣宣傳著一種亂燉式的開發(fā)方式。 所以這就是為什么PHP會得到這樣的罵名。是因?yàn)樗臍v史流傳。大多數(shù)已經(jīng)轉(zhuǎn)向Python,Ruby和Java的PHP開發(fā)人員并沒有在MVC概 念興起時(shí)回頭去重新思考這種語言。此外,更有一些像”Ruby公子“Zed Shaw抱怨一些程序員的思想”受PHP毒害“這樣的露骨的諷刺,像這樣的言論在RubyInside上很盛行。 PHP是個(gè)集中營 但像Zend和CodeIgniter這樣的框架的出現(xiàn)把這種語言推向了正確的開發(fā)方向上。事實(shí)上,它把PHP推向了與Rasmus所希望看到的相反的方向上了。查看一下Zend和CodeIgniter框架,你會發(fā)現(xiàn)它們是為數(shù)不多的文檔寫的很好,代碼寫的很好的程序。 大多數(shù)學(xué)習(xí)了Ruby的開發(fā)人員同時(shí)都要學(xué)習(xí)Rails和MVC知識;PHP在此之前已經(jīng)被使用了整整10年。對于那些新手來說,可惡的Ruby沒 有給他們這段時(shí)間讓他們自由發(fā)揮。Rails有現(xiàn)成的標(biāo)準(zhǔn)指導(dǎo),它的入門門檻相對高很多,通常會把一些缺少經(jīng)驗(yàn)的開發(fā)人員擋在門外。 事實(shí)上,PHP應(yīng)用程序是可以向其它種語言那樣寫的很好,而且還會具有一定的運(yùn)行速度上的優(yōu)勢。PHP世界里的MVC風(fēng)格的開發(fā)方法興起只是在近幾年才出現(xiàn)的現(xiàn)象。不得不承認(rèn),我們應(yīng)該感謝Rails帶來的這種變化。 那么,PHP如今是個(gè)什么樣呢? 各種標(biāo)準(zhǔn)(非統(tǒng)一,但大多數(shù)項(xiàng)目使用MVC,很少有垃圾般的過程式程序) 很低的入門門檻 速度和可擴(kuò)展性(在各種腳本語言里PHP應(yīng)該是最好的) 有一個(gè)好的單元測試框架 有最好的各國語言翻譯的文檔 除此之外,互聯(lián)網(wǎng)上大多數(shù)有影響的網(wǎng)站都使用PHP作為它們后臺的語言或工具,諸如Facebook,Digg,維基百科,Wordpress,Drupal等等。我相信,對PHP有一個(gè)深入的掌握會使一個(gè)程序員打開更多的未知領(lǐng)域的大門。 如果你不贊同上面所說的,請留下評論,或email給我——我想聽聽你為什么不這么認(rèn)為。 事實(shí)上,我并不是一個(gè)PHP迷,我對語言沒有感覺。我使用PHP大多是因?yàn)椤悴碌搅恕腥嗽敢飧跺X給我。所以一切歸咎于此: 如果你希望在軟件設(shè)計(jì)上做出明智的決定,PHP是你開發(fā)Web應(yīng)用程序的最佳選擇。 順便說一下,如果你確信要使用PHP來開發(fā)下一個(gè)Web應(yīng)用,請?jiān)囈辉?A rel=nofollow target=_blank>CodeIgniter。它是一個(gè)輕量級的,普通的,超級快的PHP框架。對于CodeIgniter,我是個(gè)粉絲。 來源:外刊IT評論 該文章在 2012/4/18 23:28:10 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |