初めてのプログラミング言語(の思い出)


あくまで自作プログラミング言語を作った時の思い出なのですが。あの頃の私は…とちょっとした黒歴史(?)なのでそのまとめ
今となってはいい思い出だったり

思いつき

学生の身だった私、いつも思いつきでプログラミングをしてました。
その時に学校の授業で授業日数がオーバーしていたためBASICでなんか作ってみようということがありまして、普段C#を使っていた私にはすごい衝撃的でした。

まずオブジェクト指向ではないこと。ただ簡単な命令をずらずらっと書くだけ。インターフェースは固定。
基本文字を扱うだけでグラフィック機能はおまけなんですね

そこで私は「BASIC」ぐらいなら自作でインタープリタ作れるんじゃないか?とBrainfuckの感覚で思いついたわけです。

※自画自賛的なところありますが、自虐的なところもあります。
お説教臭いところもありますが。ほとんど過去への自分宛てです

ついでにこの記事も黒歴史

プログラミング言語に対する”無知”

これが酷いものでした。プログラミング言語の仕組みを全く知らないのです。しかも調べようともせずただ「動くだけ」のインタープリタの制作でした。
おかげで可読性もへったくれもないわ。作りづらいわバグ多いわと悲惨なものでした。

むしろ今となってはそこが笑えるところで、構文解析は1文字ずつです。トークンなんて概念は存在しません。
処理できる命令はその場で解析してました。こんなのでも計算ぐらいはできる。逆にすごい

あと何でもかんでも処理してしまうゲリラ仕様で、BASICの仕組み上の問題もあるのかも知れませんが、未知なメンバーがあったらその場で作る…えっ
存在しない変数はとりあえず0を突っ込む。
誰が使うんだこんな言語状態です。

なのに案外動く

1年近く前のプロジェクトでもう動作の仕様も忘れたのですが、完成品を動かしてみると案外動くんですよね。なぜかすごい悔しい

じゃあまず計算式。普通に動いた
basic-inpr1

じゃあ次、関数は動くのかな?動いた
basic-inpr2
sin45°だと1/sqrt(2)だったかな。たぶん合ってる

そういえばバイナリが入ってるフォルダにサンプルコードとかったな。なになに、どんなコードだろう

sinの波を描画するものなのかな。すごいな。そしてちゃんと動く。最後にエラーが起きるのがちょっと残念かな
basic-inpr3

 

基本機能はしっかりしてた。構文関係はどうなんだろう

IF文は…動作しない
というより実装してないのか
basic-inpr4

それならサブルーチンは…動作しない
というよりも1行ずつ解析して実行する糞言語なのでそんな機能実装することすら想定してない
なんだこれ

思い出した。IF文は条件式が実装できずに投げ出したんだった。
計算はできるのに…?

ソースコードを覗いてみる

あれ、処理部分が見つからない。どこだ。Manager.csにもない。Commands.csにない…

探してようやく発見。えっとForm1.cs
どういうこっちゃ

そしてもうソースコードを覗く気力すらなくなるのであった

 

途中で投げ出したプロジェクト

自分の飽き性はかなり酷いもので中途半端に投げ出してました。IFを実装してない。とか
サブルーチンすらろくに動作しないとか。ほんと誰が使うこと想定して作ったんだろう

ただ2週間近く作ってた記憶が。しかも開発時間は70時間近くあったと思います。こんなのに…

この記事の言いたいこと

自画自賛ばっかする記事じゃないです。言いたいのはこの世の中にある無数の言語がどれだけしっかり作られていて機能が多いかということ。
こんなものに数十時間もかける時間があったら使ってる言語を使うのを極めろとか勉強しろとか言いたくなる

逆にプログラミング言語を今自作している方がいたら、初めから大量の機能をつけることを想定して作ってあげてください。
それが簡単なスクリプト言語だったとしても適当な作りだとあとで後悔することになると思います。

というよりどんなプロジェクトでも作るときは計画性あったほうがいいです。そのプロジェクトのため、何より自分のためです。