標籤:

PHP勸退指南(番外)

(哎呀好糾結題圖該用什麼(算了還是留空吧;

我也不知道咋突然就成了一個PHP黑了。

沒錯雖然之前也有做過類似的事情:

  • JavaScript 和 PHP 兩種編程語言哪個設計得更好(差)一點?
  • 如果每人最多只能學習5門編程語言,你會選擇哪5門,為什麼?

@shell von 老師也是比較真心地給諸位提一個建議,可能說上來有很多地方表達的並不是很到位。但是講道理,如果你真的好好對比一下投入/產出比和職業規劃,PHP並不是一個適合的語言。所以shell von說「都別學PHP了」這句話是沒毛病的。

一般來說勸退指南大概會講這麼幾點,1. 為什麼不應該這樣做,2. 應該怎麼去做,3. 為什麼應該那樣做。

但是請注意,我真的不是來黑PHP的。

為什麼你不應該PHP?

  • 不適合的場景。作為簡單的Web端應用,比如CMS、簡單的論壇或者管理系統,PHP可能現在還是有非常強的優勢,畢竟,快又臟。但PHP並不太適合應用於高性能服務、中間件和批處理程序,也不太適合簡單直接的RESTful API。另外,PHP的缺陷導致更不可能應用於系統級編程。至於自動化和數據分析什麼的,算了還是別多想了。
  • 有更好的選擇的時候。兩種原因會導致團隊不希望替換掉PHP,第一,遺留系統的遷移很難做,畢竟把PHP完全替換成別的語言是非常困難的;第二,團隊的學習成本非常高:PHP這種四不像而且又很少有跟其他語言集成的生態,很少有別的語言能夠跟其比較契合變得容易上手。畢竟Hack的嘗試都失敗了。
  • 個人的發展規劃。我不知道這一點諸位是如何考慮的,但是,作為一門語言,PHP在推進上面其實並不算快,很多時候來自其他平台的理念和思路都進入了應用期了,PHP這邊大概還在試用或者尚未實現。這樣其實讓開發者很容易在思路和理念上都落後於其他人一個時代。這也是為啥我一直會建議諸君要廣泛涉獵而不是專註在一個語言/平台上的重要原因,這一點上,PHP並不是個明智的選擇。

為什麼你不應該PHP?

  • PHP的「優勢」並不是初學者友好的。這也是為啥我寧肯推薦一個人去學習Python web開發或者Rails而不是PHP的原因。無論在什麼時候都要面臨PHP是一個「模板語言」這樣一個很現實的問題,而難以理解現代Web框架的整體思路。當然你可以選擇從某個設計還算可以的框架入門,那樣的話學習成本幾乎和Python等價。
  • PHP並沒有什麼「最佳實踐」是值得開發人員去學習的。當然,除非你鐵了心想去到一個PHP技術棧的公司上班。
  • PHP坑很多,而且大多數都是PHP-specific的。(比如shell von那篇文章里的左結合三目運算符。

那你應該用(學)什麼?

  • Web開發入門,我建議從一些輕量的Python Web框架(比如Flask)入手,或者艹Ruby on Rails。知乎就能提供足夠多的資源。
  • Web應用,前後端分離已然是絕對的趨勢,所以可以看看一個如何快速構建一個RESTful API或者類似的服務的,然後從現代的SPA框架裡面選擇一個上手(當然這是另外一個問題了 - Jamie W. Zawinski)。
  • 大規模Web服務架構實戰,對不起,這個只能看你自己了。而且當你考慮到這個的時候,那麼你肯定會發現PHP已經不足以勝任這堆工作了。

提前回復某些評論:

  • PHP至今屹立不倒,你看看其他的語言和框架!是啊,Ruby/Rails社區的人覺得性能不夠然後在BeamVM上搞了Elixir和Phoenix,Python從來沒見過怎麼消退過,ASP(dot)NET(fucking stupid 知乎編輯器)現在有(dot)net core加持,Java嘛,有錢人都在用啊。
  • 你肯定是一行代碼沒寫過,全靠自己YY來黑PHP的。別的證據因為安全和保密原因我就不貼了,至少寫過 Hello World 的語言。
  • 明明自己就在用PHP吃飯還來黑PHP。首先,認識到自身和自己工具的問題,才能夠更好的改進和發展,這是亘古不變的真理。
  • PHP現在已經做得很好了啊。Hack是2014年出現的,在這之前的hhvm是2011年出現的,PHP 6從2005年開始設計然後一步步的Adopt才拖了10年左右出現PHP 7。PHP Framework Interop Group的效率連wg21那群人都不如。如果你只是乾等有人實現新的feature,真的就是在浪費自己。
  • 有那麼特定的一群人垃圾不代表整個PHP社區都不行啊。是是是,你說的對。

另外,我是非常期待 @shell von 老師的續作的。畢竟一個awesome-php給了大家勸退效果不夠明顯,還容易被看成低級黑。

以上。

推薦閱讀:

Sublime Text 2如何讓ejs模板語法高亮?

TAG:PHP |