Files
hakorune/PHILOSOPHY.md
Moe Charm 0bed0c0271 🎉 initial commit: Nyash Programming Language完成版
🚀 主要機能:
• Everything is Box哲学による革新的アーキテクチャ
• WebAssemblyブラウザー対応プレイグラウンド
• アーティスト協同制作デモ - 複数Boxインスタンス実証
• 視覚的デバッグシステム - DebugBox完全統合
• static box Mainパターン - メモリ安全設計

 言語機能:
• NOT/AND/OR/除算演算子完全実装
• ジェネリクス/テンプレートシステム
• 非同期処理(nowait/await)
• try/catchエラーハンドリング
• Canvas統合グラフィックス

🎨 ブラウザー体験:
• 9種類のインタラクティブデモ
• リアルタイムコード実行
• WebCanvas/WebConsole/WebDisplay
• モバイル対応完了

🤖 Built with Claude Code collaboration
Ready for public release!
2025-08-09 15:14:44 +09:00

3.6 KiB
Raw Blame History

🌟 Nyash - Everything is Box 哲学

核心原則(絶対に忘れてはならない)

1. すべてはBox

// データもBox
name = new StringBox("Alice")
age = new IntegerBox(30)
items = new ArrayBox()

// 関数もBox革命的発見
add = new FunctionBox("add", ["a", "b"], {
    return a + b
})

// クラスもBox
Person = new ClassBox("Person", {
    fields: ["name", "age"],
    methods: { greet: ... }
})

// 制御構造もBoxwhileは使わない
myLoop = new LoopBox({
    condition: i < 10,
    body: { print(i) }
})

// 条件分岐もBox
check = new IfBox({
    test: score > 80,
    then: { print("Excellent!") },
    else: { print("Keep trying!") }
})

// エラーもBox
error = new ErrorBox("Something went wrong")

// コンパイラ自体もBox
tokenizer = new TokenizerBox()
parser = new ParserBox()
interpreter = new InterpreterBox()

2. すべての操作はBox間通信

// 統一されたインターフェース
(caller >> functionBox).execute(args)
(executor >> loopBox).run()
(evaluator >> ifBox).check()
(factory >> classBox).create()

// P2P通信
(alice >> bob).sendMessage("Hello!")
(source >> processor >> sink).pipeline()

// 非同期もBox通信
nowait (async >> operation).execute()

3. 重要な言語設計決定

使わない構文

  • while ループ(代わりに loop を使う)
  • 従来の関数定義(代わりに FunctionBox を使う)
  • 生のデータ型すべてBoxでラップ

使う構文

  • loop(condition) { ... } - LoopBox
  • new FunctionBox(...) - 関数定義
  • (sender >> receiver).method() - P2P通信
  • nowait - 非同期実行

4. 革命的スコープ設計2025年8月7日 大発見!)

🌟 すべての変数はBoxのフィールド

// もう関数スコープという概念は存在しない!
box GameEngine {
    init {
        player,      // すべてフィールドとして宣言
        enemies,
        currentLevel
    }
    
    createPlayer(name) {
        me.player = new Player(name)  // Boxが管理
        return me.player              // 完全に安全!
    }
}

localキーワード - 唯一の例外

// 一時変数だけは明示的にlocal
box Algorithm {
    init { result }
    
    process() {
        local i, temp  // 関数終了で自動解放
        
        loop(i = 0; i < 100; i++) {
            temp = calculate(i)
            me.result = me.result + temp
        }
    }
}

哲学的意味

  • Boxがすべてを管理する究極の統一性
  • 変数の寿命が明確で予測可能
  • メモリ管理の完全な透明性

歴史的洞察

「もしかして 関数も ボックスじゃないか???」

この一言がNyashを革命的な言語に変えた。関数がBoxであることで

  • 統一されたライフサイクル管理init/fini
  • 関数の動的生成と操作
  • メタプログラミングの自然な実現
  • セルフホスティングへの道

セルフホスティングの証明

Nyashの究極の証明は、Nyash自身でNyashを実装できること

// NyashでNyashを実装
compiler = new CompilerBox({
    tokenizer: new TokenizerBox(),
    parser: new ParserBox(),
    interpreter: new InterpreterBox()
})

// セルフホスティング実行
result = (sourceCode >> compiler).compile()

忘れてはならない真実

  1. Everything means EVERYTHING - 例外なし
  2. Boxは対等 - 階層ではなくP2P
  3. 統一インターフェース - 学習曲線最小化
  4. 無限の組み合わせ - BoxとBoxは自由に接続

"Where Everything is Box, and Every Box is Everything!"