115 lines
3.5 KiB
Markdown
115 lines
3.5 KiB
Markdown
|
|
# 🌟 Nyash コンストラクタ名決定: birth() 採用
|
|||
|
|
|
|||
|
|
**決定日**: 2025-08-15
|
|||
|
|
**決定者**: Nyashプロジェクトチーム
|
|||
|
|
**ステータス**: 正式決定
|
|||
|
|
|
|||
|
|
## 🎯 **最終決定**
|
|||
|
|
|
|||
|
|
**`birth()` を唯一のコンストラクタ名として採用**
|
|||
|
|
|
|||
|
|
## 📋 **検討経過**
|
|||
|
|
|
|||
|
|
### 候補と評価
|
|||
|
|
|
|||
|
|
1. **constructor()** - 業界標準だが長い、Box哲学との親和性低い
|
|||
|
|
2. **pack()** - Box哲学完璧だが独自性強すぎ、混乱の元
|
|||
|
|
3. **init()** - initフィールドとの混乱、廃止済み
|
|||
|
|
4. **make()** - Go言語実績あり、短い、実用的
|
|||
|
|
5. **birth()** - 🌟 **採用決定** 🌟
|
|||
|
|
|
|||
|
|
### birth() 選定理由
|
|||
|
|
|
|||
|
|
**1. 哲学的完璧性**
|
|||
|
|
- 「Everything is Box」哲学との完璧な親和性
|
|||
|
|
- 「Boxに魂が宿る」生命感のある言語思想を体現
|
|||
|
|
- 「生命を誕生させる」直感的イメージ
|
|||
|
|
|
|||
|
|
**2. 強力なブランディング効果**
|
|||
|
|
- 圧倒的独自性で一度見たら忘れない
|
|||
|
|
- Nyashらしさを言語の核心で表現
|
|||
|
|
- 学習者がコンストラクタを使うたびに世界観を体感
|
|||
|
|
|
|||
|
|
**3. 実用性**
|
|||
|
|
- 短い(5文字)で覚えやすい
|
|||
|
|
- 学習コストは低い(初見で一瞬考えるだけ)
|
|||
|
|
- 明確で曖昧性がない
|
|||
|
|
|
|||
|
|
## 💡 **Geminiの専門的評価**
|
|||
|
|
|
|||
|
|
> 「`birth()` を採用することは、単なる名前選び以上の意味を持つ。それは、**Nyashの哲学を言語の根幹に据えるという宣言**である。学習者はコンストラクタを使うたびに、無意識にその世界観に触れることになる。これは非常に強力なブランディングです。」
|
|||
|
|
|
|||
|
|
**Gemini最終推奨**: `birth()` 採用
|
|||
|
|
|
|||
|
|
## 🌟 **構文例**
|
|||
|
|
|
|||
|
|
```nyash
|
|||
|
|
// 基本的な使用法
|
|||
|
|
box Life {
|
|||
|
|
init { name, energy }
|
|||
|
|
|
|||
|
|
birth(lifeName) { // 生命を誕生させる
|
|||
|
|
me.name = lifeName
|
|||
|
|
me.energy = 100
|
|||
|
|
print("🌟 " + lifeName + " が誕生しました!")
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// デリゲーション
|
|||
|
|
box Human from Life {
|
|||
|
|
init { intelligence }
|
|||
|
|
|
|||
|
|
birth(humanName) {
|
|||
|
|
from Life.birth(humanName) // 親から生命を受け継ぐ
|
|||
|
|
me.intelligence = 50
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 使用例
|
|||
|
|
local alice = new Human("Alice") // birth()が自動呼び出し
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔧 **実装要件**
|
|||
|
|
|
|||
|
|
### 1. トークナイザー修正
|
|||
|
|
```rust
|
|||
|
|
BIRTH, // birth (コンストラクタ)
|
|||
|
|
|
|||
|
|
"birth" => TokenType::BIRTH,
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. パーサー修正
|
|||
|
|
- `birth()` 構文パース対応
|
|||
|
|
- `init/pack/constructor` と同様の処理システム統合
|
|||
|
|
|
|||
|
|
### 3. インタープリター修正
|
|||
|
|
- `birth/引数数` キーでの検索対応
|
|||
|
|
- デリゲーション時の `from Parent.birth()` サポート
|
|||
|
|
|
|||
|
|
### 4. 優先順位システム
|
|||
|
|
```rust
|
|||
|
|
// 検索順序
|
|||
|
|
1. "birth/引数数" // 最優先
|
|||
|
|
2. "init/引数数" // 互換性
|
|||
|
|
3. "pack/引数数" // 互換性
|
|||
|
|
4. "Box名/引数数" // 互換性
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎉 **期待される効果**
|
|||
|
|
|
|||
|
|
- **哲学的一貫性**: Everything is Box思想の完璧な体現
|
|||
|
|
- **ブランド確立**: Nyash独自の世界観を言語レベルで表現
|
|||
|
|
- **学習体験向上**: コンストラクタ使用のたびに世界観を体感
|
|||
|
|
- **混乱解消**: initフィールドとの完全な区別
|
|||
|
|
- **統一性**: 全てのBoxで同一のbirth()構文
|
|||
|
|
|
|||
|
|
## 📝 **移行計画**
|
|||
|
|
|
|||
|
|
1. **Phase 1**: birth()実装(トークナイザー・パーサー・インタープリター)
|
|||
|
|
2. **Phase 2**: テスト作成・動作確認
|
|||
|
|
3. **Phase 3**: 既存コード段階的移行(互換性維持)
|
|||
|
|
4. **Phase 4**: ドキュメント更新(CLAUDE.md等)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**🌟 Nyashは `birth()` でBoxに生命を与える言語として、新たな進化を遂げる 🌟**
|