2006年11月29日 星期三

Ruby on Rails觀察(負面想法,非喜勿視)

Ruby on Rails實在很紅,而且它標誌本來就是紅的。

前一陣子花了好一陣子時間研究了目前紅透半邊天的Ruby on Rails(ROR)和CakePHP,這種目前稱之為敏捷式的開發的網站程式框架。

我只能說觀念很好,但可能對我來說太「高階」了,我是「低階」的網站程式設計師。我並不反對這樣的東西,程式框架的想法和實作出來的東西,都是強調程式設計師可以節省開發的時間和人力,開發創新的產品。 我有幾個不同的看法,對這些程式框架作一些反向的思考:

1.程式框架幾乎等同另一套程式語言
Ruby和PHP或Java(Ruby和Java比較接近)都是各自有各自邏輯和語法的程式語言,我們程式設計師其實花了很長的時間學習他們,然後用它們,要靈活運用需要花很長的時間研究和實作,這不容易。突然很多程式框架出現了,但每個程式框架有它設計的思維和邏輯,不見得是馬上可以理解或運用得好的。CakePHP是用PHP語言的,所以會PHP語言的設計師,還學得來學得快,那ROR呢?重學一套新程式語言和框架?另一個學習的曲線浮現了,又有新的玩意要學,等你花了不少的時間學到靈活運用之後,而接下來又是下一個問題。

2.程式框架要用在那?
獨立的一支小程式?一個有創意的專案?大型企業專案?
獨立的小程式,用你學過的ASP, PHP, JSP,加上一些現成的函式庫或類別庫,馬上就可以輕鬆解決。沒有物件導向化?沒有mvc?是啊,很直觀馬上三兩下寫完的小程式,需要花這麼多腦細胞嗎?

一個有創意的專案,那也得先有創意再說呢。千萬不要clone來clone去的,那一點創意都沒有。況且,你要找到和你一樣,對這個程式框架熟悉的工程師,那是一件比找對這個程式語言熟悉的人更難上十倍的事。要不然請個人,然後慢慢教他到會,教育訓練成本也是相當驚人的。

大型企業專案,同上。找不到會的人吧,除非你肯為了完成偉大的夢想,以一抵十抵百的來作。

3.時機未到,炒作過度
假使你的老板是聰明人,發現你開始號稱只要Java語言開發1/10的時間的ROR,來作你們公司的案子,他一定不會放過你多出來的9/10。把你的工作量慢慢調整成10倍,而薪水不太可能調整成10倍。以上可能純屬玩笑,我個人覺得應該大部份的老板看到炒作的新聞後,開始要求工程師自我學習之外,然後把工作量逐漸加倍的可能性,會是滿高的…

其實根據我這幾個月的觀察,媒體的炒作程度遠遠超過技術論壇中的熱烈程度。市場的環境還未成熟,全世界能裝ROR的主機商大概還不超過100家(100家是有些高估了…),台灣0家,中國1家(之前有2家,1家不想作了),以ROR開發的所謂ASP或Software as a Service(SaaS)的服務,扣掉37 Signals(Rails原創)之後,大概也沒剩幾家。

「Ruby on Rails = Web 2.0」其實有些穿鑿附會,也沒那麼神奇。像Flickr, Digg, Wikipedia, YouTube…那一個不是用LAMP搞起來的。

結語
其實我個人十分肯定網站程式框架的價值。在我專心實作過Ruby on Rails書上的例子「Agile Web Development with Rails」完成那個兩光而搞不太清楚許多細節的購物車,感覺非常的好,世界很美好…甚至連一句常常令人抓狂的SQL指令都沒有。

今天如果我是能在車庫裡面,然後作出核子反應爐的那種程度的國中生,或許我會考慮用組合語言來寫網頁,因為這樣非常低階,而且還沒有人幹過這檔子事。但我覺得我只會在車庫裡上網路找找合適的函式庫和類別庫的用法,看看大師寫的教學和經驗,或是爬爬技術討論區的文章。那我還是需要PHP程式語言+SQL+網路,這才是現實世界的美好…

8 則留言:

匿名 提到...

jimmy,

同意...
就一個framwork而言,或許不錯。

不過把framwork當成程式的基礎,這太弔軌了,畢竟樂趣和可能性,都建立在程式的基礎之上吧...

匿名 提到...

Joomla 裡面也是有自己的 FrameWork 啊
不知道站長批評別人時候
怎麼沒想想自己在用 Joomla 做生意
當別的人要改您們用 Joomla 做好的專案是多麼困難啊 ?

我並非諷刺
而是我要說 , 在於一個專案的開發若需要多個人力協同開發的時候 , 程式要如何寫的漂亮不是一個菜鳥能決定的
如果有 FrameWork , 至少在於大區塊上的結構是漂亮的 , 細節就看每個人寫的有所不同

啊叫人不要學 FrameWork .. 那現在一些寫 VC++ / BC++ / C# 的通通不要混了 ...
FrameWork 本來就是要學
學越多對本身越有價值 , 不要害怕學

如果不想學 , 那就要對自己寫程式能力及協同開發有絕對的自信

EddyChang 提到...

樓上的意見真是深得我心。
我有痛感才會寫下這篇意見。

Joomla裡面的Framework並沒有像ROR或CakePHP那麼完整,項多只是一些類別庫和函式庫而已。而這樣的所謂
Joomla "Framework"已經很難找到另一個可以學得好、學得會用的人了,更何況完整度那麼高的Framework。這篇感想只是從負面的想法角度來看Framework在企業應用層遇見的問題。

我並不反對學Framework,也沒叫別人不要學…而我自己也學CakePHP、Zend Framework或ROR,裡面的精神和設計的確是精彩及有可學之處。

Boss Yang 提到...

Eddy之言深切地點出框架的問題呀!!
好奇之下小弟也研究了一陣子的RoR,不過實際要做商務運用與推廣,確實還有很多功課要做,新的語言是門檻,新的框架也是另一個門檻,要熟悉框架的思考的確要花費相當多時間,但不可否認可以從中學到許多良好的設計想法。
如同Eddy一樣,看了書本的範例也是弄得懵懵懂懂,要達到目前正在運行的系統效果,似乎又還差了很多,有時還真教人洩氣。暫時只能當興趣研究吧!?

匿名 提到...

某種程度上, 我覺得台灣推廣 ror 的, 都是刻意炒作.

ror 強調的是開發速度, 效能完全不在乎...

效能... 你要變成大網站, 效能是最重要的呀...

開發速度, 管他去死, 又不是老闆來寫, 人工便宜得很...

我自己都用 c/c++ 寫 apache handler 搞網站, 速度.. 熟了, 速度還出不來嗎?

真的這樣的話, 我應該自己檢討, 是不是要改行去.

拿速度來推廣的人, 本身自信心應該不夠的吧...

gasolin 提到...

世界上除了以網頁開發維生的開發者之外, 也有很多以興趣為主的開發者喔, 這些人對開發速度的期望遠高於對網站效能的期望 :)

我寫了篇長回應在
http://inet6.blogspot.com/2006/12/ruby-on-rails.html

(也有些使用 RoR 上的負面想法,非喜勿視)

匿名 提到...

也有很多非本科出身的MIS,沒有受過訓練卻被要求開發系統

小白 提到...

新竹那些大廠很愛用所謂的framework 因為程式設計師多達數百人 來共同合作 沒有framework 很亂; 不過說真得 使用這些 framework寫出來的品質與花費的cost其實滿不值得 不過那些MIS主管很迷信這些framework . 一但一種很糟的framework進入很難趕走耶 ..