46 lines
2.0 KiB
Plaintext
46 lines
2.0 KiB
Plaintext
|
|
Nyashプログラミング言語の関数オーバーロード採用可否について言語設計の専門的観点から相談です。
|
|||
|
|
|
|||
|
|
【背景】
|
|||
|
|
Nyashは「Everything is Box」哲学で、明示性重視・初学者フレンドリー・メモリ安全性を重視する言語です。現在Phase 2でP2PBox実装中で、関数オーバーロード(引数数による分岐)を採用するか重要な決断が必要です。
|
|||
|
|
|
|||
|
|
【具体的争点】
|
|||
|
|
send(a) と send(a, b) のような関数オーバーロードを許すか?
|
|||
|
|
|
|||
|
|
例:
|
|||
|
|
```nyash
|
|||
|
|
// オーバーロードありの場合
|
|||
|
|
node.send("hello") // ブロードキャスト
|
|||
|
|
node.send("bob", "hello") // 個別送信
|
|||
|
|
node.send("bob", msg, options) // オプション付き
|
|||
|
|
|
|||
|
|
// オーバーロードなしの場合(現在)
|
|||
|
|
node.broadcast("hello") // 明示的メソッド名
|
|||
|
|
node.send("bob", "hello") // 必ず2引数
|
|||
|
|
node.sendWithOptions("bob", msg, options) // 明示的メソッド名
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
【メリット】
|
|||
|
|
1. API使いやすさ向上
|
|||
|
|
2. 他言語からの移行しやすさ
|
|||
|
|
3. 直感的な呼び出し
|
|||
|
|
|
|||
|
|
【デメリット】
|
|||
|
|
1. 間違った関数を呼ぶリスク
|
|||
|
|
2. デバッグ困難
|
|||
|
|
3. Nyashの明示性哲学と矛盾
|
|||
|
|
4. 初学者混乱
|
|||
|
|
5. 型推論複雑化
|
|||
|
|
|
|||
|
|
【Nyashの設計思想との照合】
|
|||
|
|
- 明示性重視: プログラマーが変数の宣言先を即座に特定可能
|
|||
|
|
- 初学者フレンドリー: 学習コストが低い
|
|||
|
|
- Everything is Box: 統一されたオブジェクトモデル
|
|||
|
|
|
|||
|
|
【質問】
|
|||
|
|
1. Nyashの設計思想から見て、関数オーバーロードは採用すべきか?
|
|||
|
|
2. 明示性 vs 利便性のトレードオフをどう判断すべきか?
|
|||
|
|
3. 初学者向け言語として適切な選択は?
|
|||
|
|
4. P2P通信APIにおける最良の設計は?
|
|||
|
|
5. 他の現代的言語設計トレンドとの整合性は?
|
|||
|
|
|
|||
|
|
プログラミング言語設計の専門的視点から、Nyashの将来を決めるアドバイスをお願いします。
|