LISPを眺めていて、これはJSONで書けば、LISPの処理をJavaScriptで書けるのではないかと言うアイデアが浮かび、AI使ってコーディングしてみました。
動作例はこちら
https://www.yachiyo.tech/tool/JSLisp/
Gitはこちらになります。
https://github.com/ChaosReadman/JSLisp
描画命令でfillRectも実装し、マンデルブロ描画も出来るようにしました。
わたしはスーファミのプログラムをしていた時、HAL研究所のC言語コンパイラに助けられました。
スーファミのアセンブラは少しクセがあったのと、わたしは当時そこまでアセンブラに明るいわけではなかったのですが、そのコンパイラはC言語からアセンブラへ変換してくれて、アセンブルする事でスーファミのバイナリが出来上がりました。
聞けば、コアはLISPだそうで、どんなCPUにでもアセンブラが出力可能とのことでした。
当時わたしはEmacsを使い、LISPは知らない訳ではなかったのですが、その話を聞いてもさっぱりわかりませんでした。
今回、自分でLISP関数を作っていて実感し始めた事があります。
C言語からS式が作れたら、LISP関数の世界になります。その関数からアセンブラコードなどを吐き出せば、、、
C→S式→LISP関数→アセンブラコードと言う事が出来そうです。
最近のプログラマは、動画、検索、AIなどで途中に覚えるべきことを全部飛ばしている事を危惧していましたが、わたし自身がLISPの自作をすると言うことを飛ばしていたため、ずっとHAL研コンパイラが理解できないままでした。
今回、本当に作ってみてよかったです。
そして、もっと大事なことにも気がつきました。
実はCからアセンブラだけの話ではありません。
他の言語から、他の言語への変換がかなり楽になると言う事です。
実は、ある特殊な言語を、GoやSwiftに変換したいと思い、LEXとBISON、Boost Spirit、ANTLRをずっと研究していたのですが、実はその言語、S式にかなり近い物です。
他のどの方式よりも、今回の方式の方が最短距離です。




