2009年11月1日 星期日

Scratch 和 Google App Inventor

一種為小孩子設計的語言:Scratch

這樣的語言,及發展環境,也是我的夢。

Google 的 App Inventor 也提供了類似 Scratch 的開發環境,但是內部使用的語言是 Scheme。

Kawa

以 Java 寫成的 Scheme,可以在 JVM 上執行。因此我忍不住將它和 plt-scheme 及 rhino 比較,以瞭解它的優劣定位。

相較於 rhino:
  1. 同樣可在 JVM 上執行。
  2. 援用 java 的 class 時,沒 rhino 那麼方便,必須定義要使用的 method,若使用某個 method 眾多的類別如 JOGL 時,會帶來一些困擾。
  3. 因為是 scheme,比 rhino 更適用於開發 Domain specific language (DSL)。
相較於 PLT-SCHEME
  1. 可在 JVM 上執行,因此,可以和使用 rhino 的程式整合在一起,提供 rhino 欠缺的 DSL 能力。
  2. 缺少 PLT-SCHEME 的龐大功能及其健康的社群。
Kawa 被用於 Google 的 App Inventor,被使用的原因就是因為 Scheme 的 DSL 能力。

依我的觀點,Scheme 的 DSL 能力最適合用在當 Domain specific language 尚未定型,正在成長時。

javascript 和 OpenGL

在學習使用 javascript 透過 java 執行 OpenGL 時,我採用 Wikipedia 中 "Java OpenGL" 這一條文的例子。但是執行時出現了以下錯誤訊息:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no gluegen-rt in java.library.path

參考網路上的說明,UnsatisfiedLinkError 意指少了某個 .so 檔,在此為 libgluegen-rt.so。查詢結果這檔案位於 /usr/lib/jni 中,在 java 命令後加上 -Djava.library.path=/usr/lib/jni 後問題得到了解決。