2009年4月26日星期日

明日之星 - 小松鼠 Squirrel

(圖片來源:treehugger.com)

開始了把腳本語言加入遊戲引擎的工作,心目中的候選語言有 LuaPythonRubyJavascript V8 等等;最後選擇了這一隻小可愛 - Squirrel。小松鼠 Squirrel 由 Alberto Demichelis 所創立,他曾經是知名遊戲引擎公司 Crytek 的 System Architect,Far Cry/CRYEngine 裡的 Lua binding 庫都由他負責。就憑著他對 Lua 的透徹認識和深厚的編程功力,他決定打造一套比 Lua 更優秀的語言。

一向有使用 Lua 的我非常欣賞它的堆疊設計與小巧的機器碼,可惜它的語法對我來說不太自然,甚至未有對類別和標準字元編碼作直接支援。Squirrel 正好解決了這些已困擾我多時的問題,除此之外還加入了類似 C# 的 delegate 和 attribute。以下是 Squirrel 擁有的特色:
  • 動態型別檢查 - Dynamic typing
  • 委托模式 - Delegation
  • 類別與繼承 - Classes & inheritance
  • 類別属性 - Attribute
  • 運算元重載 - Operator overloading
  • 高階函數 - Higher order functions
  • 迭代發生器 - Generators
  • 協程 - Cooperative threads (coroutines)
  • 最佳化遞歸 - Tail recursion
  • 異常 - Exception handling
  • 實時自動內儲管理 - Automatic memory management (CPU bursts free; mixed approach ref counting/GC)
  • 弱引用 - Weak references
  • C/C++ 風格的語法
  • 可支援 16 bit 字串
  • 支援運行期即時編譯 - Just in time compilation
  • 支援 32 位和 64 位架構
  • 整個運行庫不用七千行源碼,200k byte 的機械
  • 遠程調試 - Remote debugging though TCP/IP
  • 與 Visual Studio 的整合

在技術層面來看,Squirrel 絕對適合用作遊戲腳本語言,現在還欠缺的是一群使用者。小弟也希望它能夠茁壯成長,正在為它開發一套模板式的 C++ 結合庫,下次再和大家分享。