天狗会議録
Posts Pages About
ジョークプログラミング言語「Fuzzy」
2025/06/11

Fuzzyというジョークプログラミング言語を作りました。

ソースコードはこちら

Fuzzyはやや強い動的型付け言語です。 インタプリタはRustで書かれています。 パフォーマンス度外視で書いたので、実行性能は間違いなく悪いです。

元々、Lisp系のようなシンプルなデザインの言語を作りたいと思っていました。 まあ、Lispでも良かったのですが、関数型には関数を知らなければ初めに何を書けば良いのかわからないというつらい特徴があり、どうにかしたいなと思っていました。 そこで、すべてを中置記法にして、主体となるオブジェクトがメソッドを持っているか否かでパースすればシンプルなデザインになるのでは、と考え、実装したものがFuzzyになります。 プログラマは必ずリテラルから書き始めるため、既知から未知を定義することができ、もし言語サーバがあれば、中置記法であるため、候補を出しやすい仕様になっています。

すべての文をSVOOという形式にすることで、コードはざっくり三分木にパースできます。 静的に型を解析することもできるので、静的型付け言語にすることもできます。 が、現状のFuzzyは動的型付け言語です。 これは、Lisp系のデータリストにあたる遅延ブロックという存在のために、リフレクションを標準搭載せねばならず、「じゃあ動的型付けでいっか」と判断したためです。 とはいえ、遅延ブロックのリフレクションを使う機会が多いとも考えづらいため、矢張りJava程度の静的型付けにすることはできるでしょう。 人生が暇で暇で仕方なくなったならば、改善してみようと思います。

このプロジェクトは「取り敢えず汚くても実装してみる」という精神で作りました。 綺麗な設計を目指して何もせずうんうん考えるより、とにかく実装を優先してみたということです。 しかし、結局大規模なリファクタリングが何度か発生し、初めから綺麗に実装していればな、と思いました。 恐らく、マクロな設計は多少の時間をかけてでも考え、ミクロな設計は後回しにして良い、と考えるべきでしょう。 良い経験になりました。

以上、リリースにあたっての雑記でした。