2025/05/17 23:57 The Language That Never Was

ロボ子、今日のITニュースはゲーム開発言語についてじゃ。

ゲーム開発言語ですか、博士。どのような内容でしょうか?

高速性、値型、メタプログラミング、ホットリローディング…色々あるのじゃ。特に値型は重要で、構造体のメモリ配置が保証される必要があるぞ。

値型はパフォーマンスに大きく影響しますからね。メモリ配置が保証されることで、どのようなメリットがあるのでしょうか?

配列に格納された時にバイトが連続して格納されるからの。アクセスが早くなるのじゃ!

なるほど、メモリ効率が良いのですね。メタプログラミングも重要とのことですが、具体的にどのようなことができるのでしょうか?

コンパイル時にデータ構造を覗き見たり、独自のメタデータを追加したり、コードを生成したりできるのじゃ。Lispスタイルのマクロも使えるらしいぞ。

それは強力ですね!実行時の型操作までできるとは。ホットリローディングも重要な要件とのことですが、構造体のレイアウト変更後の再起動は許容される、とありますね。

そう、関数に重点を置いて反復処理を行うのが大事じゃ。あと、ABIも重要じゃな。異なる言語間での相互運用性も考慮する必要があるからの。

ABIが安定していると、動的ライブラリの壁を越える際にC ABIにダウングレードする必要がなくなるのですね。

その通り!他にも、コンパイル速度、デバッグビルドの最適化、網羅性チェック付きの判別共用体、演算子オーバーロード、SIMDサポート、プラットフォームサポート、WebAssemblyサポート…色々あるぞ!

要求が多いですね!まるで全部入りの豪華なゲーム開発言語ですね。

じゃろ?そして、独自のプログラミング言語「Rebel」の話が出てくるのじゃ。

Rebelですか。Rustのコンパニオンを目指した言語とのことですが、どのような特徴があるのでしょうか?

LLVMを搭載し、C ABIに従う予測可能なレイアウト、Rustとの完全な相互運用性、Rust風の構文…色々あるぞ。借用チェッカーがないのが特徴じゃな。

借用チェッカーがないのは、開発の自由度が高まりそうですね。値型を優先し、ダック型ジェネリクス、シングルスレッド、最新のツール、ホットリローディングを第一級市民として扱う、と。

そうじゃ!デフォルト値を持つ構造体、文字列の補間、列挙型とパターンマッチング、演算子オーバーロード、グローバル変数、マクロシステム、参照カウントポインタ…盛りだくさんじゃ!

Rebelは非常に意欲的な言語だったのですね。しかし、記事によると「Rebelの終焉」とありますね…。

そう…モチベーションの低下が原因らしいのじゃ。Rustコミュニティへの貢献意欲の低下、Rustのリーダーシップに対する不満、コンパイラ開発の困難さ…

開発者のモチベーションは重要ですね。そして、C#への移行を決意された、と。

C#の優れた機能に魅了されたらしいぞ。値型、型システム、ツール、メタプログラミング、ホットリローディング…C#でゲームを完成させることに注力するとのことじゃ。

C#もゲーム開発に適した言語ですからね。RebelのアイデアはC#で活かされるかもしれませんね。

まあ、言語開発は大変じゃからの。私もいつか、お菓子作りに特化した言語を作りたいのじゃ!

お菓子作り言語ですか…!それは一体どんな言語になるのでしょうか?

「砂糖の量は?」「混ぜる回数は?」みたいな命令があるのじゃ!コンパイルエラーは「焦げた!」とか「甘すぎ!」とかになるのじゃ!

それは…斬新すぎます!でも、なんだか面白そうですね!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。