Guide / Glossary / Sanity Check

DungLang Federation 4.0 読み方ガイド

このページは、トップページに出てくる用語を説明するためのガイドです。 DungLang Federation 4.0 は、技術デモであり、ジョーク言語、文明シミュレーション風の展示でもあります。 そのため、普通のコンパイラ用語と、ゴリラ文明の内輪語が並んでいます。

一言でいうと

DungLang Federation 4.0 は、見た目の違う複数の言語を同じ中間表現に変換し、 同じ実行機構で動かし、その結果を「臭気」「外交」「憲法」「選挙」「歴史改変」「神話」として記録する統合デモです。

おかしな世界観を使っていますが、中心にある考えは比較的まじめです。 複数の入口から来たプログラムを、共通の内部表現にそろえ、同じ実行・検証・記録の仕組みに通す。 そのうえで、実行中に起きた出来事を文明のログとして扱います。

DungLang / ScatLang / SeaIR / YakiimoIR ↓ Odor IR ↓ CEK Cave Machine ↓ Odor events ↓ Civilization Stack ↓ constitution / elections / history rewrite / myth / metrics

これは何で、何ではないのか

このプロジェクトは、完成した実用コンパイラというより、複数のアイデアをつないで見せるプロトタイプです。 トップページの「プロトタイプ / デモ / ショーケース」という表現は、そのためのものです。

主要な流れ

1. フロントエンド

DungLangScatLangSeaIRYakiimoIR は、見た目や世界観の違う入口です。 普通の言語処理でいえば、書き方の違うソース言語にあたります。

ここで大事なのは、入口の見た目が違っても、内部では同じ形にそろえることです。 その同じ形が Odor IR です。

2. Odor IR

Odor IR は共通中間表現です。 IR は Intermediate Representation の略で、プログラムを機械が扱いやすい形にした内部表現です。

このデモでは、それが臭気ベースの名前になっています。 たとえば OdorZeroExprOdorSuccExprOdorAdd のような要素があり、 表面上は違う言語でも、内部では同じ部品に変換されます。

3. CEK Cave Machine

CEK Cave Machine は、変換されたIRを実行する機械です。 CEK はプログラムの評価方法を表す古典的なモデルの名前で、ここでは洞窟風に呼んでいます。

ざっくり言えば、プログラムが今どこを実行していて、どんな変数を持っていて、次に何をするかを追いかける実行エンジンです。

4. Civilization Stack

Civilization Stack は、プログラムの実行結果を文明の出来事として扱う後段の仕組みです。 普通なら実行結果やログで終わるところを、このデモでは憲法、選挙、歴史改変、神話生成へ流し込みます。

一言でいえば、コンパイラの後ろにくっついた文明ごっこエンジンです。

用語説明

臭気イベント

かなり雑に言えば、おならログです。 ただし、ただの冗談ではなく、実行中に起きた出来事を「臭い」として記録したイベントログでもあります。

たとえば、いつ起きたか、どのくらい強いか、誰に影響したか、外交問題になったか、 後から歴史から消されたか、といった情報を持つことがあります。

短く言うなら、実行中に起きた出来事を、発生時刻・強さ・影響先つきの「臭い」として記録するログです。

OdorSink / DiplomaticEvent

OdorSink は、臭気イベントを受け取ってためる場所です。 普通のプログラムでいうログ置き場やイベント収集器に近いものです。

DiplomaticEvent は、臭気が部族や派閥どうしの関係に影響したときの外交イベントです。 この文明では、臭いは個人の問題で終わりません。場合によっては外交問題になります。

つまり、実行中に起きた出来事を、文明イベントとして記録する層です。

Banana GC

GC は Garbage Collection の略で、普通は不要になったメモリを回収する仕組みです。 Banana GC はそのパロディで、不要になったバナナ、臭気、履歴イベントのようなものを回収するジョーク機能です。

技術的には「実行後に残ったものを片づける処理」と見れば十分です。 世界観上は、バナナを回収する文明的な清掃機構です。

Error Federation

見た目の違うフロントエンドから同じIRを作り、代表的な失敗例で同じエラーになるかを確認する仕組みです。

たとえば、存在しない変数を使う、0で割る、無限ループする、といった失敗例を流します。 入口が違っても、内部で同じIRに変換され、同じようなエラー構造に到達するかを見るわけです。

これは代表例による検証です。すべてのプログラムについて完全に証明した、という意味ではありません。

OdorOptimizer

臭気レベルの計算を、実行前にできる範囲で簡単にする最適化処理です。 コンパイラ用語では「定数畳み込み」に近いものです。

たとえば、実行しなくても最初から結果が分かる臭気計算があれば、先に片づけてしまいます。 「先に分かる臭さは、先に処理する」という考え方です。

zero_elimlocal_onlydiplomatic_violation_const は、そのための小さな最適化ルールの名前です。

Ghost Odor / BananaRewrite

Ghost Odor は、公式ログには残っていないけれど、裏側では存在していた臭気イベントのようなものです。 消えた履歴、秘密ログ、後から見つかった痕跡、というイメージです。

BananaRewrite は、バナナトークンを使って公式史を書き換える仕組みです。 バナナトークンは、履歴を書き換えるための支払い、コスト、燃料のようなものです。

「二相コミット」は、いきなり確定せず、まず準備してから確定する安全な更新手順です。 このデモでは、履歴を書き換える前に一段確認する仕組み、くらいに考えると分かりやすいです。

短く言うなら、公式史に残らなかった臭気イベントを掘り起こし、バナナトークンを払って歴史を書き換える仕組みです。

OdorTypeInference / WitnessCouncil

OdorTypeInference は、プログラムを実行する前に「このコードはどんな臭気を出しそうか」を推測する仕組みです。 普通の言語でいう型推論のパロディです。

普通の型推論なら、1 + 2 は数値、"hello" は文字列、というように値の種類を推測します。 ここでは、local な臭気、diplomatic な臭気、危険な臭気、といった種類を推測します。

WitnessCouncil は、成果物を評議会で確認する仕組みです。 「この成果物は正しいのか」「公開してよいのか」を証人たちが見る、という世界観上の審査会です。

哲学ゴリラは、議論が抽象的になりすぎて話が終わらなくなる存在として除外されています。

Constitution Federation

文明内のルールを定義し、違反が起きたら憲法違反イベントとして記録する仕組みです。

たとえば、危険な臭気を出しすぎてはいけない、外交的にまずい操作をしてはいけない、 歴史を勝手に改ざんしてはいけない、といったルールがあると考えると分かりやすいです。

ただ失敗するだけでなく、「憲法違反が起きた」という文明イベントとしてログに残すところがポイントです。

Election System

文明内の派閥が選挙を行い、その結果によって臭気イベントの扱いが変わる仕組みです。

同じゴースト臭気イベントでも、政権によって違反扱いになったり、許容されたりします。 政権が変われば、昨日の違反も今日は合法になるかもしれません。

技術的には、状態や設定によってイベント判定が変わるシミュレーション要素です。

CivilizationMetrics

文明が今どれくらい危ない状態かを数値で見る仕組みです。 普通のダッシュボードなら売上、アクセス数、エラー率、稼働率などを見ます。 この文明では、それが安定性、外交的緊張、哲学汚染、神話圧力になります。

  • 安定性: 文明がどれくらい落ち着いているか。
  • 外交的緊張: 部族や派閥の関係がどれくらい悪化しているか。
  • 哲学汚染: 話が抽象的になりすぎて、判断が壊れそうな度合い。
  • 神話圧力: 事件や改ざん履歴がたまりすぎて、神話として説明しないと収まらなくなる圧力。

短く言うなら、文明の安定性や混乱度を、外交・哲学・神話まわりの指標で見るダッシュボードです。

MythGenerator

消去された公式史や説明しにくい事件を、伝説、神話、宗教のような物語へ変換する仕組みです。

たとえば、なぜバナナが消えたのか、なぜ歴史が書き換えられたのか、なぜ特定の臭気イベントがなかったことになったのか。 そういう説明不能な出来事を、文明が後から物語として処理します。

トップページの文を読み替えるなら

トップページの短い説明文は、雰囲気を優先しているため、初見では分かりにくいものがあります。 読み替えるなら、次のような意味です。

Odor IR + CEK Cave Machine

複数の入口から来たプログラムを同じ内部表現に変換し、同じ実行機構で動かす中核部分。

OdorSink / DiplomaticEvent

実行中に起きた出来事を、臭気ログや外交イベントとして記録する層。

Error Federation

見た目の違うフロントエンドから同じIRを作り、代表的な失敗例で同じエラーになるかを確認する仕組み。

OdorOptimizer

臭気レベルの計算を、実行前にできる範囲で簡単にする最適化処理。

Ghost Odor / BananaRewrite

公式史に残らなかった臭気イベントを掘り起こし、バナナトークンを払って歴史を書き換える仕組み。

OdorTypeInference / WitnessCouncil

実行前にコードの臭気タイプを推測し、成果物を評議会で確認するデモ。哲学ゴリラは話が長くなるので除外。

Constitution Federation

文明内のルールを定義し、違反が起きたら憲法違反イベントとして記録する仕組み。

Election System

派閥ごとの選挙結果によって、臭気イベントの扱いが変わる仕組み。

CivilizationMetrics

文明の安定性や混乱度を、外交・哲学・神話まわりの指標で見るダッシュボード。

MythGenerator

消された履歴や説明しにくい事件を、伝説や神話として処理する仕組み。