Open12

Jai lang as usual

hatahata

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 とは全然違うやつなので注意。

参考: データ指向設計 | Cygames Engineers' Blog

hatahata

C++、Rust、Haskell、Lisp などなどからアイデアを得ているが、ゲームプログラミング(ゲームエンジン開発なふどを含めた低レイヤのゲームプログラミング)を主眼においているのがやはり言語1番特徴づけているようだ。 Data-Oriented とかもそう。

hatahata

所有権

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;

この例だけだと、オブジェクトの依存関係にメモリの開放を紐付けられる、くらいの感じのようだが。

hatahata

Compilation keyword に #bake ってあるのがゲーム開発者っぽい。この場合は言語機能だけど。

hatahata

The Witness

Jai 言語の作者の JB が作ったシングルプレイパズルゲーム。500以上のパズルが用意されていて、それらを解きながら島を脱出し自分の家まで帰る。

日本人の実況プレイ動画もある。

https://www.youtube.com/watch?v=p6AM51qYqZk

hatahata

Jai 言語のリポジトリがどこになるか分からない。ソースコードは公開されていない?