AIに頼って自作プログラミング言語を作る 第0回
どうも、Kannuki_sanというものです。
今回からプログラミング言語を自作していきたいと思います。
このシリーズはプログラミング言語の作り方についての解説ではなく、個人的な備忘録的なものです。
(これからの記事には有識者の方にとって間違っていることや、そんなわけねぇだろってことが山のように出てくると思いますが、それらに関してはコメント欄などで優しく教えて下さい。もしもこの記事を読んだらですが。私はまだ学習途中の身ですので、わからんがとりあえずやってみるってことが多々あります。)
何をするの?
ChatGPTと偉大なる先人の記録に頼りながら、プログラミング言語の自作を行っていきます。
このサイトはその実装段階で学んだことや実装の記録を忘れないように残しておくための場所でもあるので、このサイトを作ったのもその一環です。いずれ、サイト自体もその言語で作れればいいなって…。
本当にできるのかは知らん。
あと、最近はAIが進化していて、身の回りでもよく使うようになってきましたが、どこまでがっつり使い込めるんだろうなと思ったので、ChatGPTメインで作っていきたいと思います。もちろん、ChatGPTに頼って間違ったまま作業を進めることも多いと思うので、その時はコメントで優しく教えてくれると助かります。
なぜそんなことを?
思いついたからです。ふと、思いつきました。「あ~プログラミング言語つくってみてぇなぁ~」って。思いついちゃったら仕方がないよね。あと、ロマン。自分で開発環境を作って、そのうえでなんか動いてたらかっこいいよね。そう思ってしまいました。
私は普段pythonやらjavaやらを使ってアプリなどをアプリやらなんやらを作っているのですが、まあわからんものが山のようにあります。こういうものを作りたいって思って、それを実装するための機能やアルゴリズムを調べますが、なぜそうなるのか分からんまま、これをすればこうなるっていうことで実装しています。まあ、研究者でもなければ大抵の人はそうなのではないでしょうか?求めるものは完成品なので。ただ、そのたびにちょっともやっとして分からないまま使っているのが癪に障ります。
結果、じゃあ自分で一から十まで調べながら実装してみればどういう仕組みで動いているのか理解できるのではないかと思いました。はい、これが後付けの理由です。
コンセプト
じゃあ、どんなプログラミング言語を作るの?ということですが、とりあえずChatGPTと話し合った結果、一旦は以下のような感じになりました。
- Python風の文法(a = 1、if a = b:などのような)
- とにかく見た目のわかりやすい構文
- 動的型付け
- 最初は四則演算や代入、printが基本出来る程度
- 言語処理系はコンパイラ形式
- Pythonを使って開発
開発言語はPythonがいいとChatGPTが押してきたので、まあ最近よく使ってる言語ってことでそのようにしました。基本はRubyやC言語を使う内容が多いのでそういうもんかと思っていましたが、せっかくChatGPTに頼るので、pythonでの開発にチャレンジもありかと思ってとりあえずやってみます。
あとは、言語処理系ですが、インタプリタのほうが動作テストがわかりやすいのかな?あとは動作までの手順が少ない?そんなことをChatGPTが言っていましたが、コンパイラで作ってみたかったのでそうしました。まあ、こちとらその辺の基礎知識を持っていない状態で始めるので好みで行きます。
今後の進め方について
字句解析から順に書いていって、一つ作っていくにつき一つの記事にしていきたいと思います。ChatGPTはいずれ自己ホストもできるようになればいいね。なんてことを言ってきますが、それがどれだけ大変なのかもまだよくわかっていません。それがどれくらいの難易度でいつまでかかるかも知りませんが、最終的にはGUIのアプリを簡単にでも作れるくらいまでできればいいなと思っています。モチベが続くかはわかりません。まあ、この記事は作り方解説ではないので、自分のペースでじっくりやっていきたいと思います。
今回のところは自分自身での簡単なコンセプトの確認とこれからの記事についてだったのでここで終わりにしたいと思います。これからもよろしくお願いします。