はじめに
この文書では、F/L というオリジナル言語の設計・実装を通じて思ったことや感じたことのうち、プログラミングもしくはプログラムをする人=プログラマに関するものをまとめたものです。
もう少し技術よりの部分は別の記事「メイキングオブ・プログラミング言語 F/L」にまとめてありますので、そちらもご覧になっていただければ幸いです。
楽しかったところ
- 自分の言語による世界(オレオレ言語ワールド)が徐々に広がっていく様子を実感できたこと
- 開発を通じて、記述言語である Lua について色々学ぶことができた
- F/L は Forth をベースとする言語でしたので、Forth 系言語について勉強するきっかけになった
辛かったところ
- 説明のための文章を書かなければならないところ
- ダウンロードできる環境を準備すること(ファイルの清書や github の準備など)
- Lua でソースコードレベルデバッギングできなかったところ(print 文を武器に念力デバッグしたところ)
全体としての評価
全体的には、どちらかと言えば楽しい部分が多いように感じました。総合的な評価としては「楽しかった」と思います。
言語設計という行為(=実装や言語のデザイン)は、「学ぶものが多い」と実感しました。既に多くの人が語っているようにも思いますが、少々辛くてもオレオレ言語は作ってみるべきだと私も思いました。
コーディングにおける学び
言語のデザインに関しては、その言語の思想というか、その言語らしさとは何か?等に答えていかなければなりません。これは「(現在構築中の)世界を、どのように見るか」ということに他ならず、「どのような世界を実現したいのか」ということだと思います。
今回の F/L は Forth を基としていますが、このような状況です。全く新しい言語を作る場合は、非常にエキサイティングな体験になるのではないかと想像します。
実務的なシステムやアプリケーションを作っているときよりも、より純粋に「(今作っているシステムにとって)ふさわしいプログラムとは何か?」という問題に対峙できる気がしました。
文書作成の機会として
新しく生まれた言語に関する入門書やリファレンスは、その言語の開発者が作成しなければなりません(他に書いてくれる人がいないので…)。結果として、文章作成に迫られるという状況が生まれます。私も(本当に)最低限の文書しか作成できていませんが、それでも、その言語に関する解説なりリファレンスを書くという行為は良い文章修行になると感じました。
表現としての言語設計・言語製作
絵画や写真、小説など、今この瞬間にも多くの芸術作品が制作されていることかと思います。これらの中にプログラミング言語も入るのではないでしょうか。少なくとも、ソースコードというテキストにより、ひとつの世界を表現するものとして「オレオレ言語」は捉えることが可能ですし、かなり複合的な芸術なのではないかと思う次第です。
その他
言語処理系については、既存の言語について実装を試みた・実装した経験があります(C に関してはフェードアウト、RIB についてはそこそこ上手く行っている状況)。これらはすでに誰かが確定した文法を持つものについての処理系となります。一方、オリジナル言語を設計する場合、文法とその意味ならびに実装を行わなければなりません。
他の人がどのようにして言語をデザインし、言語処理系を作成しているのか、それをもう少し知りたくなりました。まつもとゆきひろさんの本「言語のしくみ」をざっと読んだ程度ですが、このようなテキストをもっと読んでみたいです。何かオススメのものがありましたら教えて下さい。