2007-11-09

PHP vs. Ruby on Rails

因為工作的需要,必須在有限的時間內開發一個網站。這個網站需要具備使用者帳戶管理與認證的功能,並管理使用者上傳的資料,故與資料庫之間的關係密切。我也希望這個網站能盡量運用到 open source 的力量,所以基本的軟體平台將會以 Linux + Apache + MySQL 為主。網站開發工具方面,目前有三個選項:

  1. PHP (不使用 PHP framework)
  2. CakePHP (或其他 PHP framework)
  3. Ruby on Rails (RoR)
就我自己以往的 web development 經驗來說,我大多只是利用 PHP 寫一些網頁小工具,最多就是開發規模不大的小網站。對於開發一個中型的網站來說,只使用純 PHP 開發是相當辛苦的,除了人力有限之外,未來還要面臨維護與後續擴充的問題。因此,我需要一個 framework,而現在的問題就是該選擇 PHP 的 framework (目前以 CakePHP 為首選) 或是目前當紅的 Ruby on Rails?對我來說,這兩者各有優劣:(我必須再強調,這是根據我個人情況來說 :)

CakePHP 的優點
  1. 我比較熟悉 PHP 語言
  2. PHP 豐富的資源 (容易整合許多現有 PHP 的 open source 計畫)
  3. 成熟度高,品質已被廣為驗證 (許多之名網站都是用 PHP 打造的)
  4. 執行效率快 (相較之下,Ruby is slow!)
Ruby on Rails 的優點
  1. Ruby 語言優勢 (如 OO),以及學習新語言的樂趣。
  2. 可能是明日之星 (迅速崛起,目前很火紅的 framework)
  3. Rails framework 肇始者 (比較忠於原味?)
  4. Ruby 社群團結,只有一個 RoR (相對之下,PHP 選擇太多,容易缺乏向心力)
學習新語言固然很有趣,但總是需要時間才可以達到某種深度。雖然 CakePHP 可算是 RoR clone,但並非 clone 就會比較遜色。有時候非但不會比較遜色,反而能夠截長補短。CakePHP 以成熟的 PHP 技術為基礎,廣納 Rails 的設計哲學與精神 (MVC, ActiveRecord, 等等),應該具備相當的實力才是。Ruby 面臨到的最大問題之一就是效率,效率問題牽扯到的層面很廣,包含根本的基礎語言本身。David Heinemeier Hansson (RoR 之父) 也不穢言,為了解決效率問題,曾經將一段 Ruby 的程式法以 C 改寫。Twitter 可能是目前以 RoR 開發的網站中的最大者,其開發者也為 RoR 效率問題所苦

以此來看,CakePHP 似乎是比較符合我的需求。

1 comment:

Anonymous said...

借轉載 謝謝提供寶貴的經驗