程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP入門知識 >> 獻給PHPer:一言難盡話PHP 兼談我的編程經歷

獻給PHPer:一言難盡話PHP 兼談我的編程經歷

編輯:PHP入門知識

有一個人,這個人我已經不記得他的相貌和姓名,但是他曾經影響了我。

99年的春天,聯想開始做公共網站,我雖然主要工作是做設計,但其實我的興趣在技術上,喜歡自己找些Perl(當年的CGI程序多數是Perl的,自己在學校學到的那不足千行的C還不知道怎麼用在Web上)的留言版或聊天室程序改改代碼和界面,用在一個叫“幸福之家”的土得掉渣兒的網站上。

大約在秋天或年底的時候,這個據說是北大(也可能是清華)的學生來幫忙做兼職開發新聞系統。我經常正事兒不干,看著他寫代碼。他的主要開發方式就是連接到服務器上打開Vi開始寫。那時我雖然也在Solaris用過VI,但還只會移動光標和保存之類的簡單操作,而且並不習慣。這樣完全用VI開發還覺得比較新奇。那是我第一次接觸PHP,那時的版本是3.0,所以他寫的文件擴展名全是.php3。我負責前台的界面和樣式,偶爾打打下手寫點兒代碼。這樣邊寫邊測試(完全正式線上服務器環境,現在想想那時真無畏),大概用了一周時間,一個基本的新聞管理系統就上線了。就這樣,我也就開始了我的PHP生涯。

這個新聞管理系統運行了不到半年後,就被聯想研究院的同事完全用Java重寫。我也在合作期間偷偷學了點兒Java語言和EJB的皮毛。而這位年長於我一兩歲的同學,就此失去了聯系,不知道他現在在做什麼。問題是,我真不記得他叫什麼,也沒有聯系方式,好像我倆都很內向,不問彼此,真是一對奇怪的年輕人。

在離開聯想之前,我用PHP寫過幾個小項目,我現在還記得有一個廣告維護和更新系統,主要功能是廣告管理、圖片上傳、和html文本塊編輯等。由於之前有研究過Perl的代碼,加上一些C的基礎,讓我對PHP這個腳本語言真真的喜愛有加。你想想看,那個年月,有哪個Web腳本有如此豐富的擴展又有這麼簡單易學的代碼。什麼數據庫操作啊、圖像生成啊——我甚至用它的GD庫實現了餅圖顯示投票的結果(當然餅圖的生成算法是抄來的)——、文本操作什麼的,好多的擴展,包括數不清的和風格不一的命名,它實在太容易學了,也太好用了,語法自由,又沒有像Java那樣的強類型約束,我對它實在是愛不釋手,這可如何是好哇。後來的幾年也確實是PHP高速普及的時期。

聯想當年做的那個網站,用的數據庫幾乎全是Oracle,而且跑在Sun的服務器上,據說還有光纖陣列啥的。多年後有人告訴我,由於無人打理,域名被人搶注了,我記得當時我的心情平靜的。據說搶注 FM365.com 的人後來做了個叫 265 的網站。

02年和同樣是聯想出來的兩個朋友去了北大附中網校。當時在線的是ASP環境。那之前還沒用過ASP,寫了一些模塊,發現和PHP差距較大,如果不用Com,很多想法較難實現。這裡再啰嗦兩句,ASP支持兩種語言:VBScript和JScript,我實在是不喜歡VB的語法,後期寫的模塊我都盡量用JScript實現。而且,JScript支持一種類似Hashtable的Dictionary對象,操作字典類數據很方便。不過,總得說來,ASP還是太弱了,如果PHP是把多功能軍刀,ASP只能算是生銹的水果刀。

人的思想是會變的,人又總不滿足於現狀。約一年後就將整個系統逐步升級到.Net。第一次用C#發現和Java很像,也是第一次開始試著用分層的概念設計系統架構。在這期間的同事有霍炬和戴飛。經常在去飯館的路上還在和火炬討論是分三層好還是四層好。

霍炬對我的幫助和影響又更多些,他還送了我兩本書《設計模式》和《C++Primer》(前者到是時常翻閱,後者較厚,沒怎麼看,幾次搬家都想扔了)。

坦率的講,C#真是門集眾家之所長的好的語言,相較於PHP這類腳本語言,又足夠OO和足夠完善。PHP和它相比,實在是太土妞了。加上剛接觸到設計模式——這個東西就像火炬說的手裡有把錘子就會發現到處都是釘子——這麼個超級大錘子。所以我那段時間像同時沉迷兩樣東西,一個是WoW(還在公測貌似),一個就是C#。我能從寫大段腳本和無數子過程學習並過渡到對象開發和多層架構的設計,這得感謝C#和.Net。

在網校做的最後一個項目是個多用戶Blog系統,基於b2的開源改造,又重回到了PHP的懷抱。雖然從個人角度我非常喜歡C#語言,但我仍對Windows平台沒有信心(那時Mono還是個實驗項目)。

大約04年的時候,或許是受Java的影響,PHP社區也出現了一些開發框架,如CakePHP、Zend Framework、CodeIgniter、Symfony……。但是,在看了這些框架並做了些測試之後,我限入了糾結之中。Cake和其他幾位還稍好,最變態的就是Zend,幾乎完全模擬強類型語言(如Java),完全的用OO方法設計模塊和類。方向和龐雜度直奔Java的屁股而去。

PHP真的要這麼寫嗎?這和Java和.Net有什麼區別?這還有PHP的優勢麼?看煩了各個論壇各種框架之間的口水戰。為了防止可能繼續誤入歧途,我逃離了這些豪華巨輪。但是我限入了迷惘,我要再怎麼寫的PHP呢,我似乎失去了方向。我各類在各類開源項目和書裡尋找答案。隨著幾次失敗的項目和工作單位的變動,思想也有較大的變化。後來的兩年多時間,較少關注社區的動向,按照自己對Web開發和結構分層的理解,寫一些適合自己用的基礎庫,談不上框架,用著倒也趁手。

我也有接觸和學習其他的新的語言和框架,例如Python、Django、Ruby。其中Python的語言特性讓我很著迷,這是我見過的第一個把清晰(或者說整潔)度作為語法規則一部分的編程語言。也許是我本人愛干淨,也許是我的想法變了,我甚至覺得Python的語言哲學:“There should be one– and preferably only one –obvious way to do it.”(有且僅有一種明確的實現方法),是非常完美且正確的理念。我回過頭再審視PHP滿身的傷疤和陷阱,不禁要問:PHP是不是進步的太慢和太不思進取了。為什麼會這樣呢?

這裡又要感謝一位同學,幾年前某天在西南三環某處租房裡,郝培強送了我一本Python入門(也可能是我拿在手裡一直不放下的原因),那時他還單身,還很純情,大家在聊著對未來的憧憬和各種的夢想。

就一種語言來說,PHP易學易用,幾乎不需要什麼基礎和背景,適合各類人群(比如被大家臭罵的北大青島的畢業生),只是代碼的質量差距較大而已。然而,人不可能永遠在初級狀態,人是會成長的,用得越久,越是能感受到它的局限。

前段時間看到有人說PHP很爛,雖然這話難聽且觀點很武斷,但他文中所說的PHP特性包括引用幾位老外的觀點又都是事實。比如這個,還有這個。

我的朋友老王說,“語言不重要,重要的是思想”,這話不錯。但思想的獲得何其難,它需要一段時間積累加上一些天分甚至還需要有一點點機緣才能灌輸到人的腦子裡面。為了實現高質量和可控的代碼,我需要寫幾十頁紙的約定和規范,並且還要定期Review,要不然就等著數不清的地雷哪天突然被踩中吧。影響生產力因素有多種,有人的因素,也有語言和工具(包括平台)的因素。如果一種語言可以很容易的實現清晰、明確和嚴謹的高質量代碼,而另一種語言則需要數年經驗且小心小心再小心才能達到同樣的質量要求,孰優孰劣,似乎不難判斷。

其實俺又是個重感情的人(:D),這麼多年一路陪俺走過一個溝又一個坎兒,今兒使勁說嫌棄的話,心裡怪不是滋味的(:S)。

現實會給人一些安慰。有數量眾多的人用PHP,也有大量的網站運行其上,PHP在實事上占有一席之地。一切在變化中,結局還未可知。

作者:liut 原文:http://liut.cc/blog/2010/04/all-about-php.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved