51CTO觀察:PHP星星之火可燎原
2013年7月9日,Tiobe語言社區發布的新一期編程語言排行榜上,php位居第五,上升勢頭迅猛。不得不說,PHP正在崛起,這一點毫無疑問。正如Red Hat推動了Linux的發展,Zend也正努力將PHP帶入黃金時代 。
php:星火燎原之勢力
雅虎是PHP語言最早的使用者之一,隨著雅虎的興起,大量的站點開始學習雅虎背后的語言—PHP。此時,軟件開始從傳統模式向基于Web模式轉變,幾大勢力一一長成:Linux操作系統、Apache網絡服務器、MySQL服務器,以及以PHP語言為代表的“P”族語言(PHP、Perl、 Python)。而在前不久,因為收到開發者很多添加PHP支持的請求,谷歌宣布 Google App Engine 開始支計算機語言PHP ,讓用戶可以在上面運行以WordPress為平臺的博客,大公司也可以依賴這項服務運行他們企業級的“大數據”。面對記者,PHP之父安迪·古特曼斯說出了看似高傲卻信服話:“谷歌支持PHP一點都不奇怪!”。
小編在前段時間做了一個名為《php:草根出身成大樹》的技術專題。在專題里,以讀者所在公司的網站使用什么語言做了一個投票調查,結果php以54%占據一位。很明顯,國內現在的大多數公司都是php的忠實粉絲。
PHP成功的兩大秘訣,***條就是簡單。PHP簡單到讓喜歡賣弄技巧的程序員感到羞愧,但讓那些渴望進入Web開發領域的初學者欣喜若狂。 PHP像是一條鯰魚,與XML、Web Services融合無間。即使歷次的版本升級,也無需擔心PHP會喪失這種簡單的特性。無疑,這個特點給需要快速開發、交互應用的Web2.0潮流極大 的帶來了方便,有超過半數的Ajax-enabled和Web2.0站點都選擇了PHP。
PHP的第二個秘訣,就是“Community(強大的社區)”。不像其他的開發者需要從零開始,大量的PHP程序都有開放源代碼可供學習,后人站在前人的肩膀上加以改進,又將這種知識積累的結果回饋給社區。這曾被比喻為“大教堂和集市”,在集市中,知識得到了***化的利用,效率提高、錯誤減少、成本降低。而大教堂只能越壘越高,不斷延遲發布時間。
PHPer草根,才讓PHP顯得草根
長期以來,PHPer(PHP Programmers)被認為是處于草根階層的程序員,被認為是技術含量少,層次低的程序員。盡管在應用范圍上,PHP擁有廣泛的使用者。這點在國內尤其突出,
為什么PHPer會被看成草根階層,根本原因是PHPer所作的事情(通過代碼實現)的絕大部分都是表現層的東西,這個熟悉PHP的人都知道。當然也會有 PHP會說他用MVC結構編寫的某某框架具備的如何如何的功能。但是這些還是表現層。所以只會處理表現層的程序員就被看成草根階層了。事實上也是如此,因為這種情況下PHP確實很難構造大型的應用。
PHPer被扣上了數據庫使用者的帽子,他總是在操作數據庫,而不是在做程序。一個最簡單的PHP腳本就是,連接數據庫,把數據取出來,然后用命令輸出到瀏覽器。整個過程不超過10行代碼。給人的感覺就是太簡單了。沒有任何技術含量。為什么了,因為數據處理部分都已經被數據庫做完了。尤其是 MySQL的使用。MySQL是免費的,所以大多數程序員可以自由地使用它,另外MySQL的速度夠快了,所以做個PHP應用程序非常的簡單。這就相當于給你槍以后你覺得沒有必要學習武功一樣。當然,我不是說槍沒有武功好。而是說,槍的出現,小孩都可以輕松便捷地殺人了。
我們再詳細說說為什么是數據庫。這里我說一個例子。我去過北京一家非常著名的網站,當時我們還有一個比較資深的PHP程序員在那說些系統架構的事情。我記得當時那個程序員問大家一個數據結構中的算法問題的時候,全場沒有一個人能答得出來(包括我)。然后那個程序員就開始給大家講些很基礎的數據結構的東西了。讓我一下子回想到大學時候學的數據結構課。而這些基礎的數據排序、查找、傳遞的問題在其他高級語言(比如C)是非常普遍的。但是在PHP沒有。 PHPchina.com的論壇也有個板塊叫PHP的數據結構和算法。這個板塊的帖子也是***。
說到這里,大家明白了吧?大部分PHPer僅僅處理表現層的東西,而在MySQL的便捷使用下,PHPer幾乎不用觸及任何數據結構與算法的情況下完成大部分開發任務,所以一個才有上面的,沒有一個PHP程序員能夠回答出那道數據結構的問題,換成是C等語言,情況可能就大不相同了。是PHPer草根,才讓PHP顯得草根。
說到這里,我想大家都已經回憶了不少自己平時用PHP做開發的經歷了吧,是否發現大家確實都在操作數據庫呢。
把數據存放在數據庫,然后數據庫只起到備份的作用。然后你用自己的中間層來處理分析數據,效果是90% 以上的用戶不訪問數據庫。有人就會說了,這不就類似連接池的東西嗎?是的,因為數據庫的瓶頸是無法解決的,我們只能在Web服務器和數據庫中間加個中間層來做緩沖。
可能大家會說了,切,這個我們早就知道了。那好,這里我要說的是它引發的兩點思考:
***,有些語言已經有連接池技術的基礎上,那些程序員可以方便地使用連接池而構建大型應用。那么如果他們認為 PHPer只會是用數據庫,那么我們是不是可以說他們只會是用連接池呢?連接池和數據庫在這個概念上有何區別?
第二,當PHPer開始構建自己的緩存系統的時候,他是不是突破了PHPer只會是用數據庫的層次?因為他參與了數據邏輯的處理工作。那么他還是草根嗎?
***,懂得獨立思考的PHPer不是草根,什么事情都丟給數據庫去做的才是。當然,如此備受矚目的PHP也不是!