11月です

自分が作っている言語の特徴について

1.C言語の人気な要素を取り出して一般化した式言語をベースに言語を構築します。
2.プログラムをプログラムで操作する事が出来る強力なマクロ機能を作成可能です。
3.簡単にパーサが作れます。
4.OSや言語を作成可能なC言語を置き換え可能です。
6.関数型言語で美しく実装しています。
7.C言語に似た関数型言語Scalaで記述しているので学習が容易です。

現時点で1〜3は90%, 4〜7は40%ほど完成しています。
開発が遅れている理由は、頭が悪いのと作り方自体を簡単にしようとしているためです。
仕様を決めてとにかくそれができればどういった作りでも良いという方針であればもっと早く完成していると思います。
しかし、それでは、美しい実装からはほど遠い物になってしまいます。
頭が悪いので、頭が悪い人が何処で分からないのかが分かります。
だからこそ、バカでも簡単に作る事が出来るようになる言語が作れるのです。
頭が悪いので、時間をかけてコツコツ作っていて完成が遅れている訳です。

必要な技術は以下の通りです。

字句解析では正規表現
構文解析では下降型の演算子順位法
コンパイラの作成はパターンマッチング
コード出力の為にアセンブラレジスタ割り付け
型をうまく扱えるようになるために、型推論、暗黙的型変換

です。
今年はレジスタ割り付け、型推論、暗黙的型変換について勉強してきました。
型理論を理解した上で、簡単に実装する方法を見つけてその説明を簡単にする。
実際に実装してどうすれば美しい実装になるかを試す中で最終的な文法も決まって行きます。

現在は複数の型について美しく扱うことが出来る方法を試行錯誤しながら模索しています。
幸いにして、JSXやTypeScript等が出て来て型を持った言語が複数あり、理解しやすい環境にあるとおもいます。
非常にありがたい事です。

今年中を目標にしていますが、もう少し遅れるかも知れません。
それでも、もう少しできちんと動く実装をリリースする事ができるはずです。

自分が今一番コンプレックスに感じているのが、複数の型を扱えない事です。
一通りの機能が出来上がったコンパイラに複数型を導入しようとすると辛いんです。
大きな物に良く知らない物を導入しようとするのは大変な作業だからです。


そこで、今計画しているのは
char,short,int,long,float,doubleの型を持った暗黙の型変換を行う、四則演算計算機です。
簡単な複数の型を扱える計算機をつくって複数の型について扱う自信をつける訳です。

出来上がったら、その計算機に、配列と構造体とポインタを導入していってみようと思っています。
通常の言語との違いは、関数が無いとか、変数がないとかになりそうです。
でも、そのままの勢いで拡張して行くと自然と汎用的な言語になってしまうかもしれません。

それだけでは、型推論を持った言語にならないかもしれません。
それはそれでよしとして、型推論を持った四則演算計算機を作って拡張出来るだけ拡張してみます。

それで、型推論と暗黙的型変換の自信をつけたら、ようやく両方を組み合わせる事を考える土台が出来上がると思います。
土台ができたら、組み合わせることを初めてうまい落としどころにたどり着ければ最終的な欲しい言語が作れるんじゃないかと考えています。