來源|極客時間《賣桃者說》
作者|池建強
在程序員扎堆的地方,如果你要引起爭論,只需要說,某某編程語言是最好的,就行了,肯定吵作一團。不過,如果說哪個語言是最具爭議性的,那 PHP 肯定當仁不讓。
年初的時候,Hired 網站發佈了《2019 年軟件開發者現狀》報告,報告中 PHP“榮獲”開發者最討厭的編程語言的第一名,但與此同時,在 TIOBE、RedMonk 等各個編程語言排行榜中,PHP 的排名也從來沒有掉出過前十。可見,PHP 就跟當紅的明星一樣,粉多黑也多,任你腥風血雨,我自巋然不動。
今天,我就跟你聊聊編程語言中的爭議明星 PHP 的創造者,PHP 之父 Rasmus Lerdorf,為了方便,接下來我就都稱呼他為勒多夫了。
勒多夫跟其他編程語言之父、系統之父不同,比如我之前在賣桃者說裡跟你分享過的 Linux 之父林納斯、Python 之父範羅蘇姆等,對他們來講,雖然創造語言或系統之初是為了解決某個問題,但他們本身對技術、對編程都有著超乎想象的興趣和追求,甚至視之為快樂來源乃至人生信仰。但勒多夫不同,他在多次採訪中都表示自己真心討厭編程,寫代碼和寫程序非常枯燥和無聊,也不理解有些人為什麼會那麼喜歡編程,對他來講,解決問題才是最重要的,他真正享受的是解決問題後的成就感,而編程只是他解決問題的工具和手段。
我不是一個真正的程序員,我會把東西扔到一塊兒,直到它能工作,然後就繼續前進。真正的程序員會說,“是的,雖然它可以工作,但你洩露了內存,我們應該解決這個內存洩露問題。”而我,只會每隔 10 個請求就重新啟動 Apache。
這是勒多夫在一次訪談中的回答,是不是聽起來特別“PHP”。果然,有什麼樣的創造者就有什麼樣的編程語言,創始人的理念和氣質會深深影響到語言本身。
勒多夫出生于丹麥格陵蘭,在加拿大長大,1993 年畢業於滑鐵盧大學,並獲得系統設計工程學的學士學位。在學生時代,他並沒有展露出他對編程的興趣和天賦。畢業後,勒多夫在一家小公司做程序員,做一些開發工作,他和互聯網的緣分,就是從那時開始的。
閒暇之餘,勒多夫給自己寫了一個個人網站,很自然的,他想對自己網站的流量、留言等信息進行統計和維護,但當時並沒有很好的工具能提供類似的功能。程序員嘛,沒有工具就自己創造工具,1994 年,勒多夫用 Perl 語言簡單編寫了一個程序軟件,能用來統計網站的訪問者,後來又用 C 語言重新編寫了這個軟件工具,添加了訪問數據庫的功能。
勒多夫越用越覺得這個工具好用,到了 1995 年,他以 Personal Home Page Tools (PHP Tools) 的名字對外發布了第一個版本的 PHP,直譯過來就是“個人主頁工具”。是的,PHP 並不是以一個編程語言的姿態誕生的,最開始,它只是一個工具,一個“用 C 寫的小型緊湊的 CGI 可執行程序集合”,估計勒多夫自己都沒想到他隨意寫的這個工具,會對之後的網絡發展產生那麼大的影響。
他曾在採訪中說過:
最初我並沒有想要創建一種新的語言,我只是需要一個方法來解決 Web 服務器中的已知問題,我不需要 Perl 中的那麼多東西,也不想像 C 那樣對所有內存進行管理,我需要的是一個精簡版的 C,也不能很 Perl,可以很容易的嵌入到網頁中。
無心插柳,PHP 1.0 提供的訪客留言本、訪客計數器等簡單但實用的功能恰好戳中了當時網站開發者們的痛點,很快就流行了起來。越來越多的網站開始使用 PHP,並且強烈要求增加一些新的特性,比如循環語句、數組變量等。隨後,在同一年(1995 年),PHP 2.0 發佈,定名為 PHP/FI(Form Interpreter),加入了對 MySQL 的支持。這個功能大受好評,一下子建立了 PHP 在動態網頁開發上的地位。
其實,PHP 的成功也有點時勢造英雄的意思。PHP 1.0 和 2.0 兩個版本都在 1995 年的上半年發佈,而直到當年 8 月份 IE 1.0 才發佈首個版本,到 11 月份,HTML 2.0 才正式發佈,HTTP 1.0 也要到次年的五月份才出現。當時,NCSA HTTPd 是使用最廣泛的網絡服務器,而網景的 Navigator 則是最流行的網絡瀏覽器。換句話說,PHP 的開端剛好撞上了瀏覽器戰爭的前夜。
到了 1996 年底,全球就有 15000 個網站使用 PHP 2.0,而到了 1997 年,使用 PHP 2.0 的網站數字已經超過了五萬個。當時 PC 互聯網起步不久,總共才多少網站,幾乎一多半都使用了 PHP 來進行開發。1999 年中國的阿里巴巴成立,第一代淘寶網也是用 PHP 寫的。
而接下來數十年,整個互聯網都是 PC 端的天下,瀏覽器作為 PC 互聯網的重要入口,地位舉足輕重,全世界的網站數量急速擴張,而當時最好用的 Web 開發語言就是 PHP,PHP 的地盤也隨之不斷擴大,被更多的程序員接受。即便到今天,依舊有大量網站和 Web 服務是用 PHP 開發的,地位無可撼動。
到了 1997 年,兩個以色列工程師 Zeev Suraski 和 Andi Gutmans 加入進來,和勒多夫一起組成了 PHP 的核心開發小組。Suraski(蘇拉斯基)和 Gutmans(古特曼斯)重寫了 PHP 的解析器,成為 PHP 3 的基礎,PHP 也在這個時候正式改名為 PHP:Hypertext Preprocessor,洗去了原本的工具烙印,開始以語言的姿態發展。在這之後,PHP 的核心開發團隊穩定了下來,和開源社區一起,推進著 PHP 的開發和迭代。
可以說,PHP 是一個在實踐中不斷迭代和完善的語言,立足於幫助程序員更快的解決問題,但這一發展模式,再加上本身是工具出身,語言設計就沒有那麼精巧,也缺乏一些前瞻性,造成了 PHP 的很多遺留問題,比如語法不夠嚴謹、代碼混亂、功能缺失、Bug 頻出等等,常年被程序員們吐槽。
當然,設計時考慮得不夠長遠,很大程度上也源於勒多夫本身的理念,他通常只規劃半年內的事情,也痛恨要幫未來考慮太多。在他看來,互聯網變化太快,現在決定半年以後的事情,可能會做出錯誤的決策,反而讓事情更糟。
如果你沒有解決當下的問題,就去想象未來會發生的事情,這並不值得,我寧可解決眼前看得到的問題,真正聚焦在當下需要的產品上。
值得一提的是,在 1999 年,蘇拉斯基和古特曼斯,也就是另外兩個小組成員,成立了公司 Zend Technologies 來管理 PHP 的開發和商業化發展。勒多夫雖然依舊深度參與 PHP 的開發,但卻並沒有加入 Zend 公司,而是加入了雅虎擔任架構師。正如他所說的:“相比對編程的追求,解決問題才是他的興趣所在。”
勒多夫是一個典型的實用主義者,在他看來,程序不需要寫得完美,而是要簡單有效,這才是最重要也是最困難的事情。同時要根據不同的工作來選擇不同的語言和工具,即使是 Web 開發者,嘗試用 PHP 解決所有問題也是不科學的,還會浪費時間。所以,當 PHP 玩不轉的時候,果斷去嘗試其他語言吧。
另外,勒多夫對於“快”的追求也是貫穿始終,他希望 PHP 的代碼能夠足夠簡單,同時在遇到問題時,不需要花費太多時間在寫代碼這個動作本身上,就能解決問題。而這恰恰是 PHP 吸引開發人員的一大法寶,為什麼大家吐槽 PHP 吐槽得那麼厲害,還是會選擇它來開發程序呢,就是因為它寫起來實在是太快了,真是唯快不破。所以,在需要快速開發的時候,PHP 就成了第一選擇。
你用過 PHP 語言做過實際項目開發嗎?你最喜歡和最常用的編程語言是什麼?歡迎大家到評論區進行交流哦~
點擊鏈接,閱讀更多文章!
閱讀更多 極客時間官方 的文章