kiyokaのブログアーカイブ

Archive of old blog posts

そろそろオレ言語でもやっておくか(2)

オレ言語(いわゆるプログラミング言語を自作すること)構想の続き。 でも、いま育児真っ只中なので、実際に手を動かして何かを作る時間なんか無いのっ。 いまは片っ端から必要っぽい資料を読んでいるところ。 赤ちゃんは抱っこを止めた途端に泣くのでコンピュータに触ることはできない。 でも、本を読むだけなら赤ちゃんをだっこ紐でぶら下げたままでもできるもんね。 Webの資料も印刷すれば読める。 (そういえば小学校に置いてあった二宮金次郎の銅像を思いだした) というわけで、今回は完成イメージを紹介する。今後も変わっていくと思うけど。

完成イメージ

自分の頭にイメージしている言語のイメージは簡単にいうとRubyとDylanを足して2で割ったようなもの。 その言語のソースコードをパッと見た程度ではたぶんRubyに見えるだろうと思う。 式もinfix notationで記述でき、メソッドチェーンもRubyの様に自然に書けるとうれしいだろう。 Dylanが失敗した道筋をもういちどたどることになるかも知れないが、何事もやってみないと分からないし、その過程自体が楽しいのならやってみても言いんじゃないかと思える。 ベースとなるシステムとしてはGaucheを使うことを想定している。 Cでは書かず、ArcのようにSchemeで書く。Gaucheのライブラリとして実装するのがいいかな。

読んだもの

問題点

今気づいているだけでも沢山の問題点がある 例えば、

  • ’-‘ ‘+’ 演算子とシンボルの関係 Schemeでは ‘-‘ ‘+’がシンボルに使用可能。すなわち’a-b’のような変数名や関数名が定義可能。 Dylanでは ‘-‘ や ‘+’演算子をinfixで書けると同時にSchemeと同様’-‘ ‘+’をシンボルに使用可能。 よって’-‘演算子の前後にスペースを開けないといけない。 例) symbol-a から symbol-b を引き算する
     symbol-a - symbol-b 
    

    これはひどいよ。すぐに事故が起きそう。

  • classベースのオブジェクト指向とgeneric関数ベースのオブジェクト指向の折合いのつけかた これは、言語デザインのポリシーとしてはDylanのようにgeneric関数ベースの考えかたで問題ないと思うが、 構文がRubyに似ている分、Rubyから来た人は驚くだろう。

コメント歓迎

『多分それうまくいかないよ』とか『こうすれば』とか色々御意見おねがいします。