2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【試験的】C で作ってる BE-Lang から派生した Ruby で作る BE-Lang をさらに C で実装して強化しよう(?)

2
Posted at

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!")
  1. 探索: Object(クラス)の中から puts というメソッドを動的探索する。
  2. 送信: 見つかったメソッドへメッセージを送る。
  3. 実行: メッセージを受け取ったオブジェクトが処理を実行する。

💡 まとめ

「一方的に命令する」のではなく、「オブジェクトたちがメッセージをやり取りして助け合う」。これが BE-Lang (Rubihuru) が大切にしている世界観です。

最後に

とても短くなりましたが、次回もよろしくお願いします。それでは皆さんさようなら!

2
0
14

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?