前置き
私がかねてより開発している教育用プログラミング言語「Simple」がある程度安定して来たので、ここで開発経緯をまとめてみたいと思います。
プログラミング教育や自作言語に興味がある方への参考になれば幸いです。
Simpleプログラミング言語
概要
コンピュータの動作原理を学ぶ事を目的とした教育用プログラミング言語で、実行過程やロジックなどを表示しているので、コンピュータがどういう風に動いているのかが理解できる様になっている。
アルゴリズムを学ばせる為、最低限のシンプルな機能だけで実装するという設計哲学がある。
分類
インタプリタ式、手続き型、動的型付け
開発言語/環境
Rust / Windows
影響を受けた言語
- Ruby (自由な文法)
- C 言語 (ポインタ)
- Visual Basic (文法)
開発の道のり
私がSimpleプログラミング言語を開発した道のりを紹介します。
そうだ!言語を作ろう(9月始め)
私は現状の教育用プログラミング言語に強い不満が抱えていました。子ども向けに優しくしすぎてコンピュータの動作原理を学ぶことができないからです。
そこで、全く新しい教育用プログラミング言語を作ればいいんだ!と思い、以前に作った逆ポーランド記法計算機にログ表示と変数の機能をつけて教育用プログラミング言語Simpleとしました。
制御構文の実装(9月中盤~後半)
コンピュータの動作原理を学ぶをする為には制御構文が必須なので実装を始めました。その前に条件の評価の為に論理演算子が必要になるのでまずそれを開発し、if文やfor文、while文、else文を実装しました。さらに関数も実装しました(引数がなしでサブルーチンみたいなものですが)。
Simpleを私が通っている電気通信大学プログラミング教室で発表しました。
Githubに公開したのもこの頃からです。
文字列型を実装しようと思い、NCodelaboを始めました。
リファクタリング(10月始め~中盤)
NCodeLaboの先生に度重なる仕様拡大でぐちゃぐちゃになったコードを指摘され、リファクタリングして改善することにしました。それまで関数だったのが構造体で実行を管理できるようになりました。
関数やポインタ、文字列型の実装(10月後半)
次に関数の引数の開発を始めました。引数と戻り値を実装し、ポインタも参照の概念を教えるために実装しました。ハロウィンの日、風邪に苦しめられながらも頑張って文字列型を実装しました。
オンライン実行環境の開発(11月初め)
Web版のオンライン実行環境の開発に取り掛かりました。サーバーの開発言語はPythonで、Simpleプログラミング言語のインタプリタと連携して実行しています。
リスト型の実装(11月中盤)
リスト型を実装し、複数のデータをまとめて扱える様になりました。
更に文字列もリストと同様にシーケンス型にしてスライスで指定できる様にしました。
Simpleプログラミング言語の公式ホームページをGithubPageに公開しました。
仮想マシンの開発(11月後半)
コンピュータの動作原理をより深く学ぶため、スタック指向の仮想マシンを開発しました。
アセンブリでプログラムを開発する事で、コンピュータの動作原理を深く学ぶ事ができます。
エラー処理の実装(12月)
これまではエラーが起きたらデフォルト値で続行していましたが、
エラー処理のtry
~catch
文を実装しました。
これから
Simpleの知名度と実績を高める為、応募してみることにしました。
まとめ
今回はSimpleプログラミング言語の開発経緯をまとめてみました。
もし何かアイデアがあれば是非、Simpleプログラミング言語に貢献して頂けると幸いです。