獻給PHPer:一言難盡話PHP 兼談我的編程經(jīng)歷
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
有一個人,這個人我已經(jīng)不記得他的相貌和姓名,但是他曾經(jīng)影響了我。99年的春天,聯(lián)想開始做公共網(wǎng)站,我雖然主要工作是做設計,但其實我的興趣在技術上,喜歡自己找些Perl(當年的CGI程序多數(shù)是Perl的,自己在學校學到的那不足千行的C還不知道怎么用在Web上)的留言版或聊天室程序改改代碼和界面,用在一個叫“幸福之家”的土得掉渣兒的網(wǎng)站上。 大約在秋天或年底的時候,這個據(jù)說是北大(也可能是清華)的學生來幫忙做兼職開發(fā)新聞系統(tǒng)。我經(jīng)常正事兒不干,看著他寫代碼。他的主要開發(fā)方式就是連接到服務器上打開Vi開始寫。那時我雖然也在Solaris用過VI,但還只會移動光標和保存之類的簡單操作,而且并不習慣。這樣完全用VI開發(fā)還覺得比較新奇。那是我第一次接觸PHP,那時的版本是3.0,所以他寫的文件擴展名全是.php3。我負責前臺的界面和樣式,偶爾打打下手寫點兒代碼。這樣邊寫邊測試(完全正式線上服務器環(huán)境,現(xiàn)在想想那時真無畏),大概用了一周時間,一個基本的新聞管理系統(tǒng)就上線了。就這樣,我也就開始了我的PHP生涯。
在離開聯(lián)想之前,我用PHP寫過幾個小項目,我現(xiàn)在還記得有一個廣告維護和更新系統(tǒng),主要功能是廣告管理、圖片上傳、和html文本塊編輯等。由于之前有研究過Perl的代碼,加上一些C的基礎,讓我對PHP這個腳本語言真真的喜愛有加。你想想看,那個年月,有哪個Web腳本有如此豐富的擴展又有這么簡單易學的代碼。什么數(shù)據(jù)庫操作啊、圖像生成啊——我甚至用它的GD庫實現(xiàn)了餅圖顯示投票的結(jié)果(當然餅圖的生成算法是抄來的)——、文本操作什么的,好多的擴展,包括數(shù)不清的和風格不一的命名,它實在太容易學了,也太好用了,語法自由,又沒有像Java那樣的強類型約束,我對它實在是愛不釋手,這可如何是好哇。后來的幾年也確實是PHP高速普及的時期。
02年和同樣是聯(lián)想出來的兩個朋友去了北大附中網(wǎng)校。當時在線的是ASP環(huán)境。那之前還沒用過ASP,寫了一些模塊,發(fā)現(xiàn)和PHP差距較大,如果不用Com,很多想法較難實現(xiàn)。這里再啰嗦兩句,ASP支持兩種語言:VBScript和JScript,我實在是不喜歡VB的語法,后期寫的模塊我都盡量用JScript實現(xiàn)。而且,JScript支持一種類似Hashtable的Dictionary對象,操作字典類數(shù)據(jù)很方便。不過,總得說來,ASP還是太弱了,如果PHP是把多功能軍刀,ASP只能算是生銹的水果刀。 人的思想是會變的,人又總不滿足于現(xiàn)狀。約一年后就將整個系統(tǒng)逐步升級到.Net。第一次用C#發(fā)現(xiàn)和Java很像,也是第一次開始試著用分層的概念設計系統(tǒng)架構(gòu)。在這期間的同事有霍炬和戴飛。經(jīng)常在去飯館的路上還在和火炬討論是分三層好還是四層好。
坦率的講,C#真是門集眾家之所長的好的語言,相較于PHP這類腳本語言,又足夠Mono還是個實驗項目)。 大約04年的時候,或許是受Java的影響,PHP社區(qū)也出現(xiàn)了一些開發(fā)框架,如CakePHP、Zend Framework、CodeIgniter、Symfony…。但是,在看了這些框架并做了些測試之后,我限入了糾結(jié)之中。Cake和其他幾位還稍好,最變態(tài)的就是Zend,幾乎完全模擬強類型語言(如Java),完全的用OO方法設計模塊和類。方向和龐雜度直奔Java的屁股而去。 PHP真的要這么寫嗎?這和Java和.Net有什么區(qū)別?這還有PHP的優(yōu)勢么?看煩了各個論壇各種框架之間的口水戰(zhàn)。為了防止可能繼續(xù)誤入歧途,我逃離了這些豪華巨輪。但是我限入了迷惘,我要再怎么寫的PHP呢,我似乎失去了方向。我各類在各類開源項目和書里尋找答案。隨著幾次失敗的項目和工作單位的變動,思想也有較大的變化。后來的兩年多時間,較少關注社區(qū)的動向,按照自己對Web開發(fā)和結(jié)構(gòu)分層的理解,寫一些適合自己用的基礎庫,談不上框架,用著倒也趁手。 我也有接觸和學習其他的新的語言和框架,例如Python、Django、Ruby。其中Python的語言特性讓我很著迷,這是我見過的第一個把清晰(或者說整潔)度作為語法規(guī)則一部分的編程語言。也許是我本人愛干凈,也許是我的想法變了,我甚至覺得Python的語言哲學:“There should be one– and preferably only one –obvious way to do it.”(有且僅有一種明確的實現(xiàn)方法),是非常完美且正確的理念。我回過頭再審視PHP滿身的傷疤和陷阱,不禁要問:PHP是不是進步的太慢和太不思進取了。為什么會這樣呢?
就一種語言來說,PHP易學易用,幾乎不需要什么基礎和背景,適合各類人群(比如被大家臭罵的北大青島的畢業(yè)生),只是代碼的質(zhì)量差距較大而已。然而,人不可能永遠在初級狀態(tài),人是會成長的,用得越久,越是能感受到它的局限。 前段時間看到有人說PHP很爛,雖然這話難聽且觀點很武斷,但他文中所說的PHP特性包括引用幾位老外的觀點又都是事實。比如這個,還有這個。 我的朋友老王說,“語言不重要,重要的是思想”,這話不錯。但思想的獲得何其難,它需要一段時間積累加上一些天分甚至還需要有一點點機緣才能灌輸?shù)饺说哪X子里面。為了實現(xiàn)高質(zhì)量和可控的代碼,我需要寫幾十頁紙的約定和規(guī)范,并且還要定期Review,要不然就等著數(shù)不清的地雷哪天突然被踩中吧。影響生產(chǎn)力因素有多種,有人的因素,也有語言和工具(包括平臺)的因素。如果一種語言可以很容易的實現(xiàn)清晰、明確和嚴謹?shù)母哔|(zhì)量代碼,而另一種語言則需要數(shù)年經(jīng)驗且小心小心再小心才能達到同樣的質(zhì)量要求,孰優(yōu)孰劣,似乎不難判斷。
現(xiàn)實會給人一些安慰。有數(shù)量眾多的人用PHP,也有大量的網(wǎng)站運行其上,PHP在實事上占有一席之地。一切在變化中,結(jié)局還未可知。 Update: 作者:liut 原文:http://liut.cc/blog/2010/04/all-about-php.html 該文章在 2012/4/4 2:02:56 編輯過 |
相關文章
正在查詢... |