初會Flapjax, a better-than-JavaScript programming language
在 developerWorks 上看到《Flip for Flapjax》介紹 Flapjax ,聲稱是比 JavaScript 更好的 Web 應用程式語言 (better-than-JavaScript programming language for modern Web applications) 。官方網站上提到 Flapjax 的特色為:
- Event-driven, reactive evaluation
- Persistent data saved on a data store we provide
- Convenient data sharing
- Access-control for shared data
- Interfaces to external Web services
- Optional templating syntax
乍看之下這些功能似乎跟「程式語言」無關,更像是一套 library 或 framework 所提供的。但 Flapjax 確實是一套程式語言,它是一套特定用途的語言,亦即 DSL (Domain-specific programming language) 。 Flapjax 藉此提供比 JavaScript 更直覺的表達力以幫助程序員開發 Web 應用程式。
Flapjax 的實踐方式是實作一個編譯器 (或者該說是翻譯器呢?) ,這編譯器是 JavaScript 的 front-end ,它將程序員以 Flapjax 語法撰寫的程式內容譯為 JavaScript 程式碼,我們再將編譯結果上傳至伺服器供使用者瀏覽。因為編譯結果是 JavaScript 程式碼,所以支援 JavaScript 的瀏覽器就能正常處理。
我們不妨看看 Flapjax Demo Code::Where is the mouse 的示範。這是一個簡單的應用,在此可以很清楚地看到 Flapjax 的使用方式。首先,程序員以 Flapjax 在網頁中撰寫程式,如 the unobtrusive Flapjax version 所示。接著將此網頁內容交給 Flapjax 編譯,目前只提供線上編譯器:Flapjax Online Compiler (雖然網站中提供一個以 Python 撰寫的命令列編譯工具,但它實際上還是把程式內容上傳給 Flapjax Online Compiler 編譯)。 Flapjax 編譯器會網頁內容中的 Flapjax 程式碼轉譯成 JavaScript 程式碼,如 the unobtrusive JavaScript version with Flapjax library 所示。我們將此結果儲存並上傳到伺服器,才算完成一個開發動作。
Flapjax 的設計概念還算有趣。然而目前不提供下載單獨使用的編譯器,這點倒讓我猜不透用意。按照它的開發流程,必然要跑一遍:撰寫 source code → 編譯 → 上傳 target code 的過程。線上編譯的緩慢回應速度,勢必考驗程序員的耐心。另一方面,從 Python, PHP, Ruby 等程式語言的開發過程來看,公開編譯器的源碼,結合 FS/OSS 的力量,將有助其迅速發展成熟。 Flapjax 不提供編譯器源碼,似乎不是個好主意。
樂多舊回應