python-ruby-or-node-js-for-a-phper

PHP 開發者: 我應該轉用 Python, Ruby 還是 Node.js?

對於開發人員來說,在面對選擇程式語言的時候,就會馬上選擇困難,猶疑不決,可能還有些強迫症,症狀諸如:

  • 不停在 Google 搜尋「Top Web Programming Language 2015」、「Which language should I choose for Web Programming」、「(Instagram / Facebook / Twitter 或其他大型網站) Technology Stack」、「PHP vs Python vs Ruby vs Node.js vs …」等等。
  • 為每種語言搜尋一堆權威教本,由第一個章節開始看起,連編者序也完整的讀一篇(為了奇怪的滿足感),了解當中的語法和高級用法等,但通常讀不到書的一半就放棄了,繼續讀另一門語言的教本。讀完以後,回到工作岡位,由於各種因素(客戶要求、案件很趕、伺服器環境限制等等),還是用回自己最熟練的那門語言工作,新學習的語言知識又被慢慢丟淡了。
  • 看見一些「成功的網站」使用某種技術,就想模仿他們整個 Technology Stack,相信只要用上同樣的技術,必能大大增加自己的成功機會。
  • 在看到某些大神吐槽 PHP 是一門「低級語言」時,就立刻有股「棄暗投明」的衝動,趕緊找另一門語言學習去。
  • 強迫自己學習最新最流行的語言。

而通常在這個時候,我們會過份地美化其他語言的好處,過份地強調 PHP 的不足。

但這裡要強調一點,多學一門語言絕對不是壞事,而且對於加強自身編程能力有很大益處。筆者自己就大部份時間都是以 PHP 作為後端語言開發網站的,對於轉用其他語言這個問題,個人有以下看法:

  • 對於工作而言,必須要選擇一門自己最熟練的語言,儘管那種語言會有設計得不好的地方。哪種語言會是完美的呢?
  • 如果網頁開發是你的職業,選擇一門在你當地能容易找到工作的語言。打個比喻,如果你很懂 Scala,但你身處的地方並不流行這門語言,工作岡位寥寥可數,顯然這對於找工作或轉職都有影響。
  • 不必過份追求寫出「完美的代碼」,沒有一份代碼是完美的,只有不斷的改造、重構、優化、維護,才是應該追求的目標。
  • 如果你準備建立一個 Startup,你比較有自由決定整個 Technology Stack 該使用什麼,但同樣的問題是:在你 Startup 的據點,哪種人才較易找?畢竟找人才也是個頭痛的問題呢。
  • 你選用的那種語言,容易部署 (Deploy) 嗎?維護成本高嗎?以 LAMP (Linux, Apache, MySQL, PHP) 為基礎的網頁寄存服務很好找也比較便宜,即使是建構自己的伺服器,部署這個環境都相對簡單。
  • 如果你正準備開發一個產品,應率先考慮你最熟習的語言,是否已經足夠實現開發這個產品。如果是的話,請不要猶疑,就選用你最熟習的語言來開發,趕快做一個 MVP(最低可行產品)測試市場反應。因為除了技術外,一個產品的成功還包括諸如界面及用戶體驗設計 (UI/UX Design)、商業模式 (Business Model)、市場規劃 (Marketing Plan) 、盈利模式 (Revenue Model) 等等各方面的配合,所以若你熟習的語言足以實現產品開發,就不要太糾結於語言選擇這個部份。當日後產品發展起來,就會有更多人才幫忙重構、優化產品。

筆者就曾經在 Python、Ruby、Node.js 的學習間兜兜轉轉,但直至現在還是以 PHP 作為主要的網頁後端開發語言。原因是大部份需要維護的案件都是以 PHP 編寫,而當 PHP 成為你接觸最多而且最熟練的網頁語言時,順理成章地新的案件也會以 PHP 編寫。

PHP 確有其不足之處,其中高併發和高 I/O 並不是 PHP 擅長的方面,所以筆者會以 Node.js 處理這些情況。至目前為止,PHP + Node.js 已足夠解決我所面對的所有難題了。

最後還有一點建議,就是無論選擇哪門語言,都建議選用一些 Framework,正所謂「Don’t Reinvent the Wheel」,從零開始編寫程式對於學習階段來說是好,但對於實際開發,選用 Framework 為基礎可以提高開發效率又增強安全性。筆者就以 Laravel 作為主要的 PHP Framework,日後會與大家分享一些 Laravel 的開發心得。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *