BE-Lang (Rubihuru)
こんにちは、tukinyanJP です。
今回は、現在試験的に開発している新しい言語 BE-Lang(コードネーム:Rubihuru)について書いていきます。
豆知識
BE-Lang は開発用の名前で、本名は Rubihuru といいます。
🚀 BE-Lang の 5 つの特徴
この言語は、主に以下の特徴を持っています。
- モンキーパッチング: 既存のクラスを後から自由に拡張できる
- 純粋オブジェクト指向: ほぼすべての機能が「オブジェクト」
- 単一継承: シンプルで分かりやすい継承構造
-
do~end: ブロック構文による直感的な記述 - Ruby 互換の文法: Ruby ユーザーならすぐに書ける親和性
1. モンキーパッチング
モンキーパッチングとは、**「既にあるクラスに、まるで最初からあったかのようにメソッドを追加したり、上書きしたりすること」**です。
例えば、標準の String(文字列)クラスに、新しい機能を追加してみましょう。
# class クラス名 < 継承クラス名 と書くが、省略すると Object を継承する
class String
def plus_string(str)
self + str # self は自分自身の文字列を指す
# return を書かなくても最後に評価された値が返り値になる
end
end
# 実行例
"Hello, ".plus_string("World!") # => "Hello, World!"
2. すべては「メッセージ送信」
BE-Lang は、元祖オブジェクト指向言語 Smalltalk の思想を強く引き継いでいます。
最大の特徴は、あらゆる操作を**「オブジェクトへのメッセージ送信」**と考える点です。
計算も「お願い」のひとつ
例えば 1 + 1 という式。これは単なる算術演算ではなく、内部では以下のような「やり取り」が行われています。
-
考え方:
1というオブジェクトに、「1を加算して!」というメッセージを送る。 -
内部的な姿:
1.+(1)という形で表現できます。
メソッドの動的探索
puts のような画面出力も、仕組みは同じです。
puts("Hello, World!")
-
探索:
Object(クラス)の中からputsというメソッドを動的探索する。 - 送信: 見つかったメソッドへメッセージを送る。
- 実行: メッセージを受け取ったオブジェクトが処理を実行する。
💡 まとめ
「一方的に命令する」のではなく、「オブジェクトたちがメッセージをやり取りして助け合う」。これが BE-Lang (Rubihuru) が大切にしている世界観です。
最後に
とても短くなりましたが、次回もよろしくお願いします。それでは皆さんさようなら!