11/02/2006

簡單的回應 JeffHung 的文章

偶然看到JeffHung 一篇文章
我還是不了解 RoR 好在哪裡。Web application 的問題一直都在套版與 scaling。套版問題將會隨著 CSS 的普及,以及如 ZK 這類 framework 的出現,而得到解決;而 scaling 則要看工程師們所施展出來的種種藝術。但我認為 RoR 根本沒有解決這些重要的事。
Ruby on Rails 的好處在於開發時間的大幅度縮短,以及程式碼的量大幅度減少,關於這兩點我想我 COSUP 講得很清楚了。至於套版的問題?老實說我無法抓到這個點。或者說,我根本不知道目前 Web Application 有啥樣板的問題,所以就不回應了。

Scaling 的問題很重要,但是這不是 Ruby on Rails 或是 PHP 應該作的事情,這是 Web Server ,DB Server ,Application Server 要作的事情。沒有任何一個大網站可以只用一個語言就可以 Handle 所有的 request ,一切都還是要歸功於 CIO/MIS 背後架構規劃,軟硬體設定的功力,這是任何一家公司躲不掉的付出。如果你希望一個框架就可以解決 Scaling 問題,不如先去問小叮噹比較快。

你所選用的框架或是語言能夠為 Scaling 所做出的付出,就是隨時保留 Scale 的彈性,這點 Ruby on Rails 可以使用 Mongrel ,Memcache Client,Capistrano ,View Cache ,Multi DB 等等 Solution ,都賦予Ruby on Rails 相當大的彈性去作到 Scale。如果你想看範例圖的話,proc.net 這一篇文章裡面圖的部份就很清楚,或是使用 Reverse Proxy 的動作來作 Scale 的議題。這次 COSUP 的 Talk ,我將重點鎖定在開發時間,但是並不代表 Ruby on Rails 只有開發時間強。很多東西要講真的可以講的很細很繁瑣,如果真的要花時間講出來,相信大家也覺得很無味,所以我選擇不討論。

RoR 可以大幅簡短開發時間?任何一個資深的 PHP programmer 大都早已自己實做了一套自用的 RoR,以應付那些層出不窮的小型資訊系統專案,差的只是包裝好壞罷了。
究竟有那套 PHP 寫出來的東西,或是那個資深 PHP Programmer 寫出來的 Framework ,開發時間可以媲美 Ruby on Rails ,請拿出來,我很想看看。Framework市面上一堆,但是開發時間像 Ruby on Rails 那麼神奇的,抱歉,我認為目前沒有。(個人用過 Symfony 跟 CakePHP ,對於他的優缺點都略有了解)如果 PHP 真的已經有那麼好的框架,那那麼多人一窩蜂花時間去學名不見經傳的 Ruby 是嫌時間太多嗎?
在理想上,若 rails 做得好的話,可以在內部搞定。但這是理想,rails 還這麼「年輕」,我不認為可以搞定 Complex/optimized SQL statement construction from object-oriented context 這件事。
基本上,如果這個 Framework 是針對 MySQL 或是特定一個 DB,這是有可能做到的。但是 Ruby on Rails 身為一個跨 DB 平台的 Framework ,他本身設計上,就不應該存在著 Complex/optimized SQL statement 的概念,因為每個 DB 對於 SQL optimize 的方式都有相當大的不同。但是 Ruby on Rails 在設計上面就已經有optimized SQL statement 容許的彈性 。如果單純是用在 retrive 上面的話,find_by_sql 加上 Active Record 去處理 Bottleneck SQL 已經相當夠用。如果是其他 SQL ,在 Ruby on Rails 裡面,我們還是可以做到針對特定 DB 進行內部 SQL 實做的 Optimize ,而且因為 Ruby 語法 Open Class 的關係,很容易實做出來。

我絕對不反對有人提出質疑,討論時白刀子進紅刀子出比較容易跑出更好的結論。所以,你可以在這個 Talk 過程中 Challenge 我,我很喜歡這樣,因為通常會激出一些新的火花。或許你也可以私底下問我,寫信給我討論,如果是 Web Design 或是 Ruby on Rails ,我最起碼還回答得出一些東西。但是如果你不問我,也不去試著去了解 Ruby on Rails,就因為rails 還這麼「年輕」這個理由,就給予『我覺得RoR作不到...』這樣的批評。這不是一個很好的方式,也不是一個很好的求知態度。

沒有留言: