Web Development 的學習之旅

2007/05/11

初探 RoR 的想法

寫在前面:
其實接觸 Ruby, Ruby on rails(RoR) 不久, 還沒辦法寫出什麼內容. 不過因為自己也對架構設計/發展相當感興趣, 因此或多或少有點想法.

最近在研究RoR, 也因此接觸到了 ActiveRecord. 在初步瞭解之後, 發現其實 RoR 提供許多一直以來都是我想要(或想要實作)的功能, 相信許多人也應該有這種感覺. 既然如此, 那為什麼在其他語言一直都沒有看到這樣的作品呢 ? (或是其實我不知道而已 ?)

各領域都是高手如雲, 但我卻沒有看到這樣完整的作品(也或許有, 是我孤陋寡聞, 但起碼我相信 Delphi 領域那麼久以來是沒有). 不說我荒廢的這幾年不知道變化, Rails 這樣的架構也該在好幾年前就出現了才對, 我不相信只有 Ruby 才做得出來, 即使 Ruby 語言特性很佳, 但各語言在發展上也相當完備, 就算沒 Ruby 那麼簡潔, 那麼動態, 也應該有辦法依該語言的特性實作出類似 RoR 的架構才對. (像 PHP 的 CakePHP, 是一個類似 RoR 的架構, 可見 RoR 影響力其實已經超越Language的界限了. 就一個 coding 人來說, 應該是種福氣吧)

我想關鍵點在於架構實作者心中的 View. 在自己所熟悉的 Delphi 領域裡, CRUD 的架構其實不難實作, 要將 Table 封裝成 Class 的架構, 也可以找得到, 我也一直認為像 RemObjects 的 DataAbstract 是個不錯的架構產品. 但是要找到像 RoR 那麼"完整"的架構(相對的比較來看), 卻找不到了. 這裡不是指單項最高分, 而是各項平均得分應該是最高的.

我發現可能的原因是架構實作者專注在軟體開發的目的(我以前幾乎都是這麼想), 有時可能因此忽略了過程. 像 test, scaffold, migration...等都不是軟體結果(客戶)所需要的, 但卻是軟體過程(開發團隊)需要. 軟體過程所需要的功能與環境, 並不是沒有 solution, 但一直以來自己也感覺到整合相當的困難, 不久就容易被束之高閣成為所謂書中的理論. RoR 把這些納入架構之內, 視之為一個整體, 對我來說簡直是太棒了.

RoR 其實填補了多數開發者在開發過程上的需要, 我想它帶來的不是只有令人側目的宣揚(ex: 十倍速開發等...), 它帶來的啟示我想給了所有架構設計者更寬廣的思維, 相信會對所有語言的架構產生影響, 進而帶來全面性的改變.

也有許多地方是週邊帶來的附加價值, 不是 RoR 本身. 像 gem, 在使用 gem 之前很難想像取得/安裝/更新一個程式庫竟然可以這麼簡單. 例如安裝 RoR, 勢必須要一起安裝其他有引用到的程式庫, 但是 gem 可以幫你自動將其需要的程式庫一同抓下來, dependency 的問題少了很多, 版本也考慮到了. 光這點就造福 programmer 節省多少時間, 能運用在正常的工作上.

另一個是 rake...待續

沒有留言: