我的PHP退役了
對于我的個人業余項目和未來的編程創收活動,PHP作為我的一種編程語言的選擇,已經從此退役了。作出這個決定并不容易,但是對于我熱愛的編程事業的延續,這是必要的。你知道,我可不是僅僅因為熱愛編程才做程序員,因為我不會干其它的。
歷史一切都開始于1999年,我8年級。互聯網真正開始顯示出魅力,我想編程。學習了基本的HTML,我可以做出網頁,但我想讓這些網頁有更多的交互功 能。Perl成為了選擇,嵌入Apache里作為CGI。Perl最初不是做這個的,對于一個對Unix,Linux,Apache和HTTP是如何工作 的一無所知的孩子,我不可能配置它們、讓它們跑起來。
最終我找了一個web主機,上面所有的東西都已經配置好了,我就這樣可以神奇的使用了。算是吧。我花了數月琢磨Perl,但這個東西實在讓人困惑。有誰還記得那些正則表達式和大堆的代碼來解析請求變量、獲得一個$POST 和 $GET數組?對我來說絕對是天書,我拷貝粘貼,假裝知道自己在干什么。有誰還記得恐怖的Matt’s Script Archive這個腳本嗎?
# From Matt’s Script Archive if ($ENV{’REQUEST_METHOD’} eq ’GET’) { @pairs = split(/&/, $ENV{’QUERY_STRING’});} elsif ($ENV{’REQUEST_METHOD’} eq ’POST’) { read(STDIN, $buffer, $ENV{’CONTENT_LENGTH’}); @pairs = split(/&/, $buffer);} foreach $pair (@pairs) { local($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1))/eg; $name =~ tr/0//d; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1))/eg; $value =~ tr/0//d; # Build a hash with $name and $value}
數月后,我風聞有一種語言叫PHP。你只需要向服務器上傳一個.PHP文件,一切都搞定了。你直接能訪問表單域里的變量,它們可以跟在URL后面提交。不須用正則表達式分析環境變量。相當的迷人。
不僅訪問GET 和 POST 變量是如此的容易,連接數據庫也是要命的簡單。所有的都是在Windows上?!愿望很快就成了現實。有人不久寫出了WAMP的安裝包——因為安裝 Apache和MySQL仍然不是一個很輕松的事。感覺就像是在天堂里了。最終,我開始編寫能把數據存入數據庫,取出數據,并操作它們的web應用了。
當然,現在知道的什么SQL注入攻擊,XSS攻擊,CSRF攻擊,session注入攻擊或其它的流行的安全漏洞問題,當時一無所知(公平的說,我肯定,當時整個行業都不太清楚這些東西)。
但我很快的就開始編程了,瘋了似的。我開發論壇,我開發基礎的網站生成器,日志和內容管理系統。我喜歡這些。總有一些新的東西要學,總有一些新的東 西要做。爸爸的公司給了我很多便利,特別是他們的軟件開發組。那是一個在休斯敦的小web開發公司,我有機會在里面和很多比我年長的程序員一起工作,之后 我開始能獨自承擔大的網站開發。整個大學期間都在做這個,甚至開發了一個總共有16862行代碼的PHP系統,提供給一個非盈利組織使用(在那時,我已經 知道了常見的網站漏洞,并進行了修補)。
Rails和Django并沒有吸引走我。我非常了解PHP,我有自己的框架,能夠很快的讓東西開發完成并跑起來。
就這樣,我經歷了MVC框架變革過程。作為一個PHP開發者,我的工作情況越來越好(更好的待遇,更好的職位),但慢慢的我發現,在我自己的業余時 間里,寫出的代碼非常的好,可是在工作時間接觸那些公司的代碼卻很糟糕。不是一般的糟。沒法再糟了。做這些業余項目讓我保持清醒,因為公司的那些程序在提 醒我,讓我痛苦不堪。
熱情枯竭這就是為什么PHP從我的業余項目和新的創收活動中退役的原因。我疲倦了PHP。熱情耗盡了。我感覺對這種語言已經達到了最高水平,如果不轉向新的語言,對這種語言我就沒什么可做的了,我可不想落入這種狀態。
我作為一個職業PHP開發人員掙了很多錢,我計劃繼續下去。但我的業余項目和個人業務創收上將會使用其它的語言和框架。
此外,PHP并不強調好的整潔的編碼規范。有很多地方它實際是違背好的編碼規范的。結果,你就看到了到處都是大堆的恐怖的PHP程序,跟這些程序打 交道簡直就是噩夢。新程序員可以通過閱讀一些過時的速成教程很快學會這種語言,他們寫出的很爛的代碼,打包到產品里,這樣的水平一年就能掙到6.5萬美 元。我親眼看到過這種事情發生。PHP的易用和流行就像吸引蒼蠅一樣吸引了大量的初級開發人員。
初級的程序員會認為他們把代碼格式化一下,加一些注釋,他們的代碼就整潔了。他們錯了,他們格式化的恰恰是些爛代碼。我在工作上整天遇到這樣的代碼。
我作為PHP熱愛者的日子結束了。那么,下一步怎么辦?
Scala一年前,當以JVM為基礎的語言(Clojure,Groovy,Scala,等等)開始流行的時候,我注意到了Scala。看起來很有趣,但我很 擔心從PHP轉向一種不熟悉的語言。在過去的12年里,我知道所有的PHP的特征和妙處,而對于新語言我不掌握任何情況。現在,我不再顧慮這種擔心了,因 為我對學習新的東西更感興趣。
我懷疑我是否有足夠的智慧掌握這種新語言。并發?PHP上從來不擔心這種事情,Apache處理了所有類型的線程。Actors?靜態類型?變量上的不可變值?真正的命令式編程?使用PHP從來不需要考慮這些東西。
我買了一本這種語言的創始人Martin Odersky,Lex Spoon 和 Bill Venners 寫的《Scala編程(Programming in Scala)》。極好的書,我饒有興趣的讀著這本書。我的編程的熱情又回來了。
業余項目那么,我的下一個業余項目會發生怎樣的變化?對于任何一個決定學新語言的人,這可是個不幸的消息,從金錢上從時間上都是不幸的。下一個項目將會暫 停,直到我感覺能像使用PHP那樣使用這種新語言后,我才會重新啟動。現在不是時候。我本來計劃是在六月完成Kwolla 2,七月初上線。現在這個時間計劃是不能遵守了。
我還有另外一個項目打算使用Scala。我在評估各種框架,發現Thrift 不可思議的有意思的東西。進入這個未知的領域同樣讓我產生了驚恐,但同時也有興奮。
英文原文:I’m Retiring from PHP
相關文章:
1. AJAX實現省市縣三級聯動效果2. Java基于redis和mysql實現簡單的秒殺(附demo)3. 如何用python識別滑塊驗證碼中的缺口4. IntelliJ IDEA設置編碼格式的方法5. Kotlin + Flow 實現Android 應用初始化任務啟動庫6. SpringBoot+SpringCache實現兩級緩存(Redis+Caffeine)7. php讀取xml中某個元素的內容(PHP5以上才支持)8. IDEA SpringBoot 項目配置Swagger2的詳細教程9. Docker究竟是什么 為什么這么流行 它的優點和缺陷有哪些?10. ASP.NET MVC視圖頁使用jQuery傳遞異步數據的幾種方式詳解
