with 日本語化プロジェクト
Gravity はパワフル、動的型付け、軽量、組み込み可能なプログラミング言語です。C言語で記述されていますが外部ライブラリの依存性はありません (stdlib を除く)。 Swift 風の現代的なシンタックスを採用したクラスベースの並列スクリプト言語です
Gravity は手続き型プログラミング、オブジェクト指向プログラミング、関数型プログラミング、およびデータ駆動プログラミングをサポートしています。 特別な組み込みメソッドにより、プロトタイプベースのプログラミング言語としても使えます。
Gravity は Creo プロジェクトにおいて iOS および Android プラットフォームで移植性のあるコードを気軽に書く手段として白紙段階から開発しました。 移植性のあるC言語コードで記述してあるため C99 コンパイラが動作するプラットフォームでコンパイルできます。仮想マシン (VM) コードのステップ数は 4,000 行、マルチパスコンパイラ は 7,000 行、共有コードは 3,000 行です。コンパイラと仮想マシンを合わせても 64-bit システム用の実行可能ファイルの増加サイズは 200KB 以下です。
class Vector {
// インスタンス変数
var x = 0;
var y = 0;
var z = 0;
// コンストラクタ
func init (a = 0, b = 0, c = 0) {
x = a; y = b; z = c;
}
// インスタンスメソッド (組み込み演算子のオーバーライド)
func + (v) {
if (v is Int) return Vector(x+v, y+v, z+v);
else if (v is Vector) return Vector(x+v.x, y+v.y, z+v.z);
return null;
}
// インスタンスメソッド (組み込み String 変換のオーバーライド)
func String() {
// 文字列補間のサポート
return "[\(x),\(y),\(z)]";
}
}
func main() {
// 新規 vector オブジェクトの初期化
var v1 = Vector(1,2,3);
// 新規 vector オブジェクトの初期化
var v2 = Vector(4,5,6);
// vector オブジェクトで + 関数の呼び出し
var v3 = v1 + v2;
// 文字列 "[1,2,3] + [4,5,6] = [5,7,9]" を返す
return "\(v1) + \(v2) = \(v3)";
}- マルチパスコンパイラ
- 動的型付け (マニュフェスト型付けは近日実装予定)
- クラスと継承
- 高階関数とクラス
- レキシカルスコープ
- コルーチン (ファイバーによる)
- 入れ子クラス
- クロージャ
- ガベージコレクション
- 演算子のオーバーライド
- パワフルな組み込み API
- 組み込みユニットテスト
- 組み込み JSON シリアライザとデシリアライザ
- セミコロンの省略可能
Gravity はいくつかのオープンソースプロジェクトによる支援を受けています。クロージャーに関する着想はエレガントな Lua プログラミング言語から得たものです。特に Closures in Lua (Lua におけるクロージャー ) のドキュメントに影響を受けています。ファイバーにおいて、 upvalue の処理方法とガベージコレクターの一部は、 Bob Nystrom (ボブ・ナイストローム) と彼の素晴らしい作品である Wren プログラミング言語に深く感謝します。また、様々な面で Gravity 言語のデバッグとテストを支援していただいた Andrea Donetti (アンドレア・ドネッティ) にも大変感謝しております。
導入方法のページでは Gravity 言語に関するダウンロードとコンパイル方法について解説しています。より詳しい解説は言語仕様書にあります。なお、公式 wiki の用途は関連プロジェクトとツールに関する情報収集です。
- Gravity は Creo (https://creolabs.com) に組み込まれているコア言語です。
- Gravity は Untold ゲームエンジン (https://youtu.be/OGrWq8jpK14?t=58) のスクリプト言語です。
Gravity に関する議論を不特定多数が行う上でグループチャットを開設するのは良い発想であると思います。
Gravity 関連の寄贈は歓迎と奨励します!
詳細情報は公式資料である CONTRIBUTING ファイルに記載されています。
- 議論をはじめる:
- 援助が必要なとき
- バグを見つけたとき
- 機能要望があるとき
- 一般的な質問をするとき
- プルリクエストの申請:
- 寄贈したいとき
Gravity は寛容な MIT ライセンスで利用可能です。
