2005 網絡技術回顧

Friday, December 30, 2005

又再來一個回顧了。在這一年,有三項令我比較注目的技術名詞 :Ajax, Ruby on Rails, Web 2.0,三者又互有關係。

GMailGoogle Maps 面世,大家都對 Ajax 有了很大興趣,結果在今年有很多不同的 Ajax library 出世,如 Prototype , Dojo 等等,也研究出很多做 Ajax 的方法,好處壞處等等。人們也開始希望使用 Ajax 創造出更加 Desktop-like 的 Web Application,所以連帶一些特效 library 如 script.aculo.us 也紅起來了。在 Server-side, MS 有 ASP.NET 的支持,Java 有很多library 如 DWR ,而新的 Ruby on Rails 本身已有 Native 的 Ajax Support 了。下一年的 Ajax 技術將會更加成熟。

Ruby on Rails 是一個 Fast Development 的 Web Framework,幫你做了很多東西,讓開發者可以專注於 Business Layer。 Convention over Configuration 、Code generation 工具等等使開發速度加快了很多。而使用的語言 Ruby 也是非常簡潔有力,受到開發者的歡迎。配合 Active Records 使存取 Database record 更 OO 更方便。有很多 Web 2.0 的服務,也使用了 Ruby on Rails 作為開發的 Framework。不過,始終 Ruby on Rails 還是相當新的玩意兒,到廣範應用還是有很遠的路要走。首先要解決的,還是 i18N 的問題。

Web 2.0 本來只是一個頗為技術性的名詞,但在這一年越來越得到廣泛談論。隨著 Wiki, Blog, RSS, Tagging, Social Network 等東西的興起,我們已走入 Web 2.0 的時候,甚至連消費性質的電腦雜誌也大字標題地介紹了。其實對於用戶來說, Web 是什麼版本並不重要,也無關係。用戶只管使用這些網絡服務就好了,而且會網絡越來越方便,越來越好用,越來越與生活連上關係。現在的互聯網,在泡沫過後,才是真正的黃金時期。而對於互聯網公司和開發者來說,了解並掌握 Web 2.0 的特質,是最重要的事情。

下一年,網絡將必更加精彩~

Cake - 寫 PHP 化煩為簡

Saturday, June 25, 2005

cake

Cake 是一個 PHP 的 Web Framework,他的設計理念自越來越熱門的 Ruby on Rails ,不過用了 PHP 來實作。如果大家參看一下其 Demo ,就知道一樣也是 Conventions over Configurations 的概念,讓 Web Framework 替你做好大部份煩人的設定工作,而令開發者可以直接地寫 Business Logic。程式碼也不過只是寥寥數句,就可以寫出簡單的應用了,開發工作就是 A piece of Cake。而 Cake 的好處是,PHP 比起 Ruby 更流行,在一般的 Web Host 上都已經可以支援了。

這些 Web Framework 的確令開發者少了很多煩腦,也大大地令開發 Web Application 的門檻降低了,不過也間接少了一層理解。除非你是由舊過渡到新的,否則對於一個新手來說,如果第一個學會寫的 Web Application 是由這些便利的 Web Framework 所支持,除非自己研究,否則都不太會知道底下的 Request 怎樣交送,每個動作的 Life Cycle 等等。正如一些比較有經驗的電腦用家,從 DOS 年代轉到 Windows 年代,會比一般用戶更了解系統的運作一樣。

當然,這也正正是 Web Framework 的目的,簡化開化流程,加快效率,專注於程序處理邏輯,而不是技術問題。不過,對於開發者來說,了解運作原理,則可以更有彈性地應付各種不同的要求了。

簡潔對彈性 - Ruby VS Java

Monday, March 21, 2005

最近 Ruby on Rails 出了一篇blog,講的是一個 Java vs Ruby 例子。事源有 Java Programmer Geert Bevin,為了看看 Java 寫出來的 Web Application 是否比起 Ruby 要多出很多行,所以寫了一個妨照 Ta-da listBla-bla list ,用了 Java RIFE Web Framework 和 Laszlo 技術。

Ruby on Rails 的開發者則回應了,並拿兩組同樣功能的 Code 來比較,結果當然是 Ruby on Rails 那一篇的 code 少許多。

這篇帶來了兩個陣形的激烈討論,有人認為 Code 太少反而不能知道真正的 Program 在做什麼,也有人認為 Ruby 的 Code 直達核心,讓 Rails 做了一些資料庫連接、限制等等設定,讓工作簡單了許多。

這就是 Flexibility 與 terseness 的限制。想寫得越 Flexible,就會變得 複雜。想寫得Terse,就會變得沒有那麼 Flexible。當然,這也得看Framework設計上有沒有考慮這兩點。

而實際上,沒有什麼誰對誰錯,只是大家喜歡以什麼方法去做事。有人喜歡 Java 夠嚴謹,一切都可以在自己的掌握之中,儘管那是複雜。有人喜歡 Ruby 的簡單潔有力,不過就會很依賴 Framework 去為你做事,少了彈性。

我自己則比較喜歡 Ruby on Rails 的理念:Do not re-invent the wheel,直接想解決的辦法,而不是糾纏於架設環境之上。這種思考模式,也比較靠向Business Layer,也正是懶懶 Programmer 不想應付繁複工作的籍口 LOL。當然,Flexibility 和 Terseness 兩者蒹得最好,我想「中庸之道」才是王道。

相關討論的小總結: Ruby vs. Java: A matter of taste

Ruby on Rails 快靚正

Sunday, March 6, 2005

Ruby on Rails 最近一個開始熱鬧起來的新 Web Application Framework,用的程式語言是 Ruby — 一種極之簡潔有力的語言,而 Ruby on Rails 這個 Framework 則完全很有效地運用這個語言的特質,令到開發 Web Application 的速度快十倍!

我本來也對此一無所知,但拜讀過 ONLamp 兩篇 Rolling with Ruby on Rails Part 1Part 2 ,實在是很驚嘆。在例子中,只要 47 行程式碼,就可以做出一個簡單的 Cookbook 管理系統。而實際上, Ruby on Rails 本身已有不少的 Helper 可以用來 Generate program code,所以寫的會更少。不過,這只是算 Ruby 本身的程式碼,而一些 Html 的 Layout/View 檔案,應該未計算在內。

可以做到這樣少的程式碼,是因為 Framework 本身運用大量的設定動作,定好一系列的 Conventions,只要跟著 Conventions 來做,就可以用多本身已寫好的東西了。在例子中,先要建好一個 Recipes 的 database table,然後用 Helper 建做 名叫 Recipe 的 Controller 和 Model,這樣 Model 就會自動地連駁好 table 中的每一個 field ,而 Controller 只要設定為預先寫好的 Scaffold,就已經完成普通常見的 Table Maintenace 的 CRUD 功能。完全不用寫 SQL,也不用處理 Request 的走向和做 Data binding ,一切都是自動的,只要好好地跟著 Conventions 就可以了。

這是 Ruby on Rails 的其中一個特色: Conventions over configuration 。我自己曾經用過 Struts 和 Spring 這兩個 Web Framework,他們都各有好處,不過兩者都要寫很多的 XML Configuration file 去定義,例如 URL-Controller、Model-Form Mapping等等。這樣的 Configuration 當然是讓開發者可以自己做特別的定義,但事實上很多人用的方法來來去去都是那幾個。 Ruby on Rails 自己定義了一套 Web Application Grammar (可以這樣說吧?),合符文法就可以用一些既有的東西,而不用重新做起。

當然,我只看過這兩篇簡介,並未深入去看,所以也不能說這個 Conventions over Configuration 是不是好東西。 Ruby on Rails 本身也是很新的,出來的時間不夠一年,所以還有待成熟,不過已經有很多應用了: Basecamp43 ThingsTa-da ListsSnow Devil 等等。

有時間的話值得深入研究一下…

相關連結: