Squirrel
出典: フリー百科事典『ウィキペディア(Wikipedia)』
| Squirrel | |
|---|---|
| パラダイム | マルチパラダイム |
| 設計者 | Alberto Demichelis |
| 最新リリース | 3.0.4 / 2012年11月10日 |
| 評価版リリース | 3.1 / 2011年03月13日 |
| プラットフォーム | クロスプラットフォーム |
| ライセンス | MIT License |
| ウェブサイト | squirrel-lang.org |
Squirrel(スクワール) は軽量な高級スクリプト言語である。手続き型言語、オブジェクト指向言語、関数型言語、データ駆動などの特性を併せ持つ。メモリ消費量やリアルタイム応答性の面で優れ、ゲームへの組み込み言語として採用が進んでいる。
目次 |
特徴 [編集]
C言語のホストプログラムに組み込まれることを目的に設計されており、高速な動作と、高い移植性、組み込みの容易さが特徴である。いったんバイトコードにコンパイルされ、仮想機械 (VM) で実行される。コンパイラと VM は共に6000行程度のC++で実装されている。ライブラリは C言語 からも利用できる。
その他に、以下の特徴を持つ。
- 動的型付け
- 高階関数
- 協調型スレッド (コルーチン)
- 末尾再帰の最適化
- 例外処理 (throw, try, catch)
- 参照カウント と ガベージコレクション を組み合わせた自動メモリ管理
- 弱い参照 (weak reference)
- 文字コードとしてマルチバイト文字とワイド文字 (UTF-16) を切り替えてビルド可能
Luaを強く意識して設計された言語であり、組み込みのためのライブラリの構文は Lua と類似性がある。ただし、以下のような差異がある。
- C/C++に似た構文を採用している。
- テーブルと配列が別のオブジェクトである。
- 整数と浮動小数点数が別のオブジェクトである。
- 配列のインデックスが 0 から始まる。
- クラスと継承を扱う構文を組み込みで持っている。
構文 [編集]
class BaseVector { constructor(...) { if (vargv.len() >= 3) { x = vargv[0] y = vargv[1] z = vargv[2] } } x = 0 y = 0 z = 0 } class Vector3 extends BaseVector { function _add(other) { if (other instanceof this.getclass()) return ::Vector3(x + other.x, y + other.y, z + other.z) else throw "wrong parameter" } function _tostring() { return x + "," + y + "," + z } } local v0 = Vector3(1, 2, 3) local v1 = Vector3(11, 12, 13) local v2 = v0 + v1 print(v2.tostring())
採用ソフトウェア [編集]
Squirrel は以下のソフトウェアで利用されている。
歴史 [編集]
2003年に開発され、zlib/libpng license として公開された。 開発とメンテナンスは Alberto Demichelis によって行われている。