1
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?

 みなさんこんにちは! tukinyanJP です。突然ですが私は、 BE-Lang という小さな RubyC を掛け合わせた微妙な(?)言語の作者です。1 言語を作るというのは楽しいですが、それなりの労力が必要ですし、モチベーションが続かないと作ることもできませんよね。で、結局私は何を言いたいか、正直いいますと、

モチベーションが続かない

はい。こういうことです。私は以前からただ単に 「便利な言語を完成させる」 という気持ちだけで開発してきましたが、さすがにそれではモチベーションが続きません。今回は、言語の実装について書くのではなく、私の言語作成記録(?) について書いていきます。

ある日

おととしの確か 12 月でした。私は Ruby という素晴らしいプログラミング言語を見つけました。私はその時 Python なども触っていましたが、やはり Ruby の構文は Python より 2倍、いや 3倍 以上覚えやすく、書きやすく、しかも 日本Matz こと まつもとゆきひろさんが作成した言語だったので、私はすっかり Rubyist になりました。 特に私が気に入った機能 は、 Mix-in でした。

module hoge
  def hoge1
    :hoge
  end
end

class huga
  include hoge
  # hoge のメソッドが使える。
end

Mix-in の良さは、やはり多重継承の欠点をうまく回避することができることです。多重継承を持っている言語 ( Python , C++ ..etc) では、クラスの継承関係がややこしくなりやすく、メソッド探索も複雑です。ですが、 RubyMix-in はどうでしょうか。 module はスーパークラスを持っていないことが保証されているので、そこまで継承・メソッド探索も複雑ではありません。 2

 そこから、 Ruby で色々作ってるうち、私はこう考えました。 「あれ、プログラミング言語、作れるんじゃ?」 そうです。これが私の言語作成の道が始まりました。最初に作ったプロトタイプは今とは全く違い、演算子の優先順位もなく、速度も遅く、ひどい有様でした。3 しかし、再帰下降構文解析を wikipedia で見て、( C 版の場合は Yacc を)導入してからというもの、実用性と速度が上がりデバッグも簡単になりました。特に記述量が 3000 行から 600 行で、半分以上も少なくなりました。で、現在に至ります。

終わりに

 めちゃくちゃ内容が薄い記事でしたね。これでも私は頑張って書いていますよ。私の言語が有名になったり転機があれば更新していきます。それではまた次回の記事で。さようなら!

  1. 「有名な言語を作った」みたいに聞こえますが気にしないでください。

  2. 多重継承を持っている言語と比べて

  3. あの時の Ruby のレベルは今とはくらべものにならないぐらいレベルが低かったです。

1
0
1

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
1
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?