Jai lang as usual
https://github.com/BSVino/JaiPrimer/blob/master/JaiPrimer.md この記事がJaiの理念についてやさしく詳しい。
言語の特徴
- 好きな関数をcompile time 実行にすることができる。
- 配列の構造と構造の配列の間の自動変換
- 実行時に利用可能なすべての構造体の静的な型情報を提供する
- 関数レベルのポリモーフィズム(Multimethod みたいなのかな?)
- GC がなく、automatic ownership management (所有権の自動管理!?すごそう)
MACHINES THAT FILL MEMORY
GCやtemplated data streams、動的文字列クラスなどの言語機能は
- 速くコードを書くのには役立つが (
write code faster
) - 速いコードを書くのには役立たない (
write faster code
)
FRICTION REDUCTION
- Java ではすべてのオブジェクトがクラスである必要があるため、プログラマは必要なグローバル変数をグ> ローバル クラスに入れる必要があります。
- Haskell では、すべてのプロシージャが関数であり、副作用がないことが要求されます。
- C++ のラムダ関数構文は、クラス メソッド構文とは異なり、クラス メソッド構文自体もグローバル関数構文とは異なります。
Java、Haskell、および C++ は、 “big agenda” languages と呼べるものの例であり、言語の理想主義 (C++ の場合、一貫したビジョンの欠如) がプログラマの邪魔をします。Jai は、特に不必要な場合の friction に対する許容度が低くなるように設計されています。
DESIGN FOR GOOD PROGRAMMERS
優れていないプログラマでも事故りにくい言語、例えば Java などとは違って、優れたプログラマのための危険なツールも提供する、と。
PERFORMANCE AND DATA-ORIENTED PROGRAMMING
DATA-ORIENTED
は玉虫色な用語で何を指しているか慎重になる必要があるが https://www.youtube.com/watch?v=rX0ItVEVjHc がリンクされていることから、メモリ配置についての方の DATA-ORIENTED
。低レイヤも含めたゲームプログラミングもスコープにしている Jai なのでよく分かる。最近出版された Data-Oriented Programming: Reduce software complexity のほうの Data-Oriented とは全然違うやつなので注意。
https://onyxlang.io/ において、
Onyx はC言語ライクでJaiやOdinと似ている、と言及されているのを見て Jai を知った。
こちらも参考
C++、Rust、Haskell、Lisp などなどからアイデアを得ているが、ゲームプログラミング(ゲームエンジン開発なふどを含めた低レイヤのゲームプログラミング)を主眼においているのがやはり言語1番特徴づけているようだ。 Data-Oriented とかもそう。
Wikipedia に Jai の単体のページはなく、作者のページに節がある。
作者の Jonathan Blow さんは完全にゲーム畑の人。自分でカスタムゲームエンジニア作ってしまう。
Jai 言語で独自のゲームエンジンとさらにパズルゲームも作った。
所有権
new された example 構造体の2つのプロパティは ポインタ(*
)に !
マークを付いていることが分かる。
で example 構造体自体が delete されるときに2つのプロパティも一緒に削除される。
node :: struct {
owned_a : !* node = null;
owned_b : !* node = null;
}
example: node = new node;
example.owned_a = new node;
example.owned_b = new node;
delete example;
この例だけだと、オブジェクトの依存関係にメモリの開放を紐付けられる、くらいの感じのようだが。
作者によるこの動画がすごいわかりやすい。
Jai 言語に関する日本語の情報はあんまりないなー
JAI(Java Advanced Imaging API)
が引っかかりがち。 https://en.wikipedia.org/wiki/Java_Advanced_Imaging
Compilation keyword に #bake
ってあるのがゲーム開発者っぽい。この場合は言語機能だけど。
The Witness
Jai 言語の作者の JB が作ったシングルプレイパズルゲーム。500以上のパズルが用意されていて、それらを解きながら島を脱出し自分の家まで帰る。
日本人の実況プレイ動画もある。
Jai 言語のリポジトリがどこになるか分からない。ソースコードは公開されていない?
RAII: Resource Acquisition Is Initialization → https://youtu.be/TH9VCN6UkyQ?si=WI3Rd5Z8RXuByLXd&t=1834