2026/03/10 2:57
Show HN: The Mog Programming Language → **Show HN:The Mog プログラミング言語**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
概要
Mogは、AIエージェントと安全なI/Oのために設計された、意図的に最小限で埋め込み可能なプログラミング言語です。そのコアデザイン原則は以下の通りです。
- 明示型 – すべての値には型が宣言される必要があります。暗黙の変換はありません。
- フラットな演算子優先順位 – クリティカルパスでの微妙なバグを防止します。
- 値捕捉クロージャ – 関数が周囲の変数を値でキャプチャし、ハイオーダー関数と組み込み数学ユーティリティを可能にします。
コア言語機能
| 機能 | 何を提供するか |
|---|---|
| 関数 & クロージャ | 値捕捉のセマンティクス。構造体ロジック用の独立した関数(構造体はメソッドを持ちません)。 |
| 制御フロー | 、、複数の 形式(、、配列/マップイテレーション)、、強力な 式。 |
| データ構造 | 豊富な API を持つ不変 UTF‑8 文字列;名前付きフィールドのみの構造体;変更可能メソッド(、、)と関数型ヘルパー(、)を備えた配列とマップ。 |
| エラーハンドリング | と 型、 ブロック構文、および簡潔な 伝搬演算子。 |
| 非同期プログラミング | 関数、、、、、再試行/ファンアウトパターン。 |
| 能力モデル | スクリプトが必要またはオプションの能力(、)を宣言し、I/O をサンドボックス化します(例:、)とホスト定義リソース。 |
埋め込み & 実行時
- Mog は API 経由で埋め込むことができ、能力の登録、スクリプト要件の検証、
型を介したデータ交換、およびメモリ・CPU 時間などのリソース制限と割り込みサポートを強制します。MogValue - プラグイン はコンパイル済み Mog コードの動的ロードを可能にし、能力サンドボックス化とホスト相互作用用に定義された C API を提供します。
数値および高度機能
- テンソルサポート – N 次元配列、形状操作(
、reshape
)およびホスト推論能力へのフック。transpose - 高度なトピックには型エイリアス、
ブロック、SoA のパフォーマンス考慮、コンパイルバックエンド(rqbe)、割り込み処理、メモリ管理、および意図的に省略された機能の議論が含まれます。with
今後の作業
計画中の拡張は、より深い能力サンドボックス化、SoA パフォーマンス戦略の改善、推論タスク用ホスト定義能力の拡充、およびより洗練されたメモリ管理と割り込み処理メカニズムを含みます。
本文
目次
-
上へ戻る
-
Mog:AI エージェント向けプログラミング言語
-
概要
-
例示
-
エージェントフック
-
再試行付き非同期HTTP
-
テンソル上のFFT
-
なぜ Mog?
-
代替案
-
言語仕様
-
例
-
能力システム
-
コンパイラ
-
現状
-
Mog 言語ガイド
-
第 1章:初めての Mog プログラム
- Hello, World
- Mog プログラムはどのようにコンパイル・実行されるか
- プログラム構造
- コメント
- 出力関数
- より完全な例
- Mog が でないこと
- 次に何をするか
-
第 2章:変数とバインディング
を使ったバインディングの作成:=
による再代入=- 型注釈
- シェーディング(隠蔽)
- 実用例
- 2 値の交換
- フィボナッチ数列
- リスト処理
- 発生回数カウント
- 要約
-
第 3章:型と演算子
- スカラー型
- 整数
- 明示幅整数
- 浮動小数点数
- 真偽値
- 文字列
- 型変換
キーワードas- 文字列への変換
- 暗黙の型変換はない
- 演算子
- 算術演算子
- 比較演算子
- 論理演算子
- ビット演算子
- 文字列連結
- フラット演算子(優先順位なし)
– なぜ優先順位を設けないのか?
- よく使われるパターン
- 値のクリッピング
- 安全な除算
- 型感知型集計
- ビットフラグ権限
- 型変換付き結果構築
- 要約
- スカラー型
-
第 4章:制御フロー
- If/Else
- ネストされた条件
- 表現としての if
- While ループ
- 集計パターン
- 収束ループ
- 無限ループ
- For ループ
- For‑To(包摂的範囲)
- For‑In Range(終端を除く)
– どちらを使うべきか? - For‑In 配列
- For‑In インデックス付き
- For‑In マップ
- Break と Continue
- Break
- Continue
- ブレークとコンティニューの組み合わせ
- ネストループでのブレーク・コンティニュー
- Match
- 整数マッチング
- 文字列マッチング
- 複数文アーム
- 表現としての match
- Result と Option のマッチ
- 実用例
- フィボナッチ(反復)
- 平方和
- 線形探索
- バブルソート
- FizzBuzz
- GCD(ユークリッド法)
- 素数判定
- Match を使ったコマンドディスパッチ
- 要約
-
第 5章:関数
- 基本的な関数宣言
- Void 関数
- パラメータと戻り値の型
- 名前付き引数とデフォルト値
- 呼び出し規則
- 再帰
- 数学ビルトイン
- その他ビルトイン
- 出力関数
- 変換関数
- 完全な例
- 要約
-
第 6章:クロージャと高階関数
- クロージャ構文
- 変数のキャプチャ
- 値捕捉の意味論
- 関数型用エイリアス
- クロージャを関数へ渡す
- 関数からクロージャを返す
- 配列メソッドとのクロージャ使用
- filter
- map
- sort
- メソッドチェーン
- 要約
-
第 7章:文字列
- 文字列の基礎
- エスケープシーケンス
- 不変性
- UTF‑8 エンコード
- 文字列補間
- 連結
- 文字列メソッド
.len.contains(substr)
と.starts_with(prefix).ends_with(suffix)
と.upper().lower().trim().replace(old, new).split(delimiter).index_of(substr)
- メソッドチェーン
- 文字列スライシング
- 文字列比較
- 変換
- 文字列へ:
str() - 文字列から:パース
- 文字列へ:
- 出力関数
- 汎用プリント
- 型別バリアント
- 文字列構築
- ループ内での連結
- テーブルフォーマット
- メッセージ生成
- 検証付きパース
- 要約
-
第 8章:構造体
- 構造体宣言
- インスタンス作成
- フィールドアクセス
- フィールド変更
- 関数への構造体渡し
- メソッドは無い — 独立関数を使用
- コンストラクタ関数
- ネスト構造体
- 配列・マップ付き構造体
- 実用例
- RGB カラー操作
- 木構造
- 要約
-
第 9章:コレクション
- 配列
- 配列リテラル
- 繰り返し構文
- 型注釈
- インデックスアクセス
- イテレーション
と.push().pop().slice().contains().reverse().join().filter().map().sort()- 配列メソッドチェーン
- マップ
- マップ作成
- アクセスと変更
— キー存在確認.has()
,.len()
,.keys().values()
— エントリ削除.delete()- マップイテレーション
- 実用例:単語数カウント
- 実用例:データグルーピング
- SoA(Struct of Arrays)
- いつ SoA を使うか?
- 構築
- フィールドアクセス
- イテレーションパターン
- 実用例:粒子シミュレーション
- 実用例:列操作
- 全体統合
- データ処理パイプライン
- Filter‑Map‑Sort パイプライン
- 要約
- 配列
-
第 10章:エラー処理
Result<T>Optional ?T
プロパゲーション演算子?- try‑catch ブロック
- Result と Optional のマッチパターン
- 実用パターン
- バリデーションチェーン
- 安全なパース
- Result ↔︎ Option 変換
- オプショナルのデフォルト提供
- エラーメッセージ整形
- 結果集約
- ネスト結果
- 要約
-
第 11章:非同期プログラミング
- 非同期関数
- Await
- Spawn
— 全待ちall()
— 最初に完了したものを待つrace()- 非同期でのエラー処理
- 再試行パターン
- Fan‑out / Fan‑in
- 要約
-
第 12章:モジュールとパッケージ
- パッケージ宣言
- 公開 vs 非公開 —
キーワードpub - パッケージインポート
- 複数インポート構文
- 修飾付きアクセス
- モジュールファイル
- 循環インポート検出
- 実用例:プログラムをパッケージに分割
- 要約
-
第 13章:能力 — 安全な I/O
- 能力モデル
- 能力宣言:
とrequiresoptional - ビルトイン能力
— ファイルシステムfs
— プロセスと環境process
- 実用例
- ファイルコピー
- 設定読み込み
- タイムド操作
を使った簡易ログfs
- 伝統的能力
- カスタムホスト能力
ファイル.mogdecl- カスタム能力の使用
- パーツの結合方法
- 能力検証例
- 要約
-
第 14章:Mog をホストアプリに埋め込む
- 埋め込みライフサイクル
- 埋め込み API
- VM ライフサイクル
- 能力登録
- スクリプト要件の検証
- カスタム能力実装
- 手順 1:
ファイルを書く.mogdecl - 手順 2:ホスト関数を実装する
- 手順 3:登録テーブルを作成し登録する
- 手順 4:Mog から使用する
- 手順 1:
: ホストとスクリプト間のデータ交換MogValue- 値構築
- 引数抽出
- エラー返却
- 不透明ハンドル
- リソース制限とタイムアウト
- メモリ上限
- CPU 時間上限
- 手動タイムアウト起動
- ホスト開始の中断
- スタックオーバーフロー保護
- 完全なタイムアウト例
- 安全保証
- 実用例:ゲームサーバへの埋め込み
ファイル.mogdecl- ホスト実装(C)
- プレイヤースクリプト(Mog)
- ホストランナー
- 要約
-
第 15章:プラグイン — Mog コードの動的ロード
- プラグイン概要
- プラグイン作成
- コンパイルされたプラグイン
- プラグインのロードと呼び出し
- プラグイン C API 参照
- 能力サンドボックス化
- プラグインプロトコル(高度)
- Mog と他埋め込み言語との比較
-
第 16章:テンソル — N 次元配列
- テンソルとは?
- テンソル作成
- リテラルから
- 静的コンストラクタ
- 対応 dtype
- テンソル属性
- 要素アクセス
- 読み取り
- 書き込み
- 平坦インデックス計算
- 形状操作
- Reshape
- Transpose
- テンソルとホスト能力
- ホスト関数へテンソル渡し
- 操作の合成
- この設計の理由
- 実用例
- データバッチ作成
- モデル出力要素読み取り
- 入力テンソル準備
- エンドツーエンド推論スクリプト
- 要約
-
第 17章:高度なトピック
- 型エイリアス
- With ブロック
- SoA パフォーマンス
- コンパイルバックエンド:
rqbe - 割り込みシステム
- メモリ管理
- Mog に ない機能
-
第 18章:レシピ集 — 実用プログラム
- FizzBuzz
- フィボナッチ数列
- 再帰版
- 反復版
- 単語頻度カウンタ
- エラーハンドリング付き簡易計算機
- データ検証チェーン
- ソート&フィルタパイプライン
- 行列演算
- エージェントツール使用スクリプト
- 再帰的木探索
- 非同期パイプライン
- 要約
-