本年から小学校でもプログラミングが必須となったようです。内容はほとんど知りません。私はC言語とその周辺ならどれでも良いと思っています。
ただ、私が小学生だったら、画面でのゲームだけで無く、ぜひロボットとかを操縦したい訳で、組み込み用プログラムの一端は知らせる方が良いと思います。少なくとも、小学生用の解説書は欲しいです。
組み込みプログラミングの肝は、タイマと割り込みです。これが無いと、リモコン一つ作れません。が、今のところは、プログラム理論とはかけ離れた技術的事項です。
PROLOGもプログラミング言語の一種です。現存するほぼ唯一の論理型言語です。というのは、私の理解では論理型言語は普通に作るととても効率が悪い中、プログラム言語としても実用水準にあるからだ、と思います。
一階述語論理が背景にあって、つまり述語(真か偽かが特定できる言説)のand∧、or∨、not¬とともに、全称∀と存在∃が加わっている論理の数学モデルです。
なのですが、一階述語論理からPROLOGに持って行くやり方の解説が結構難しくって、さっき読み返そうとしましたが、途中で挫折してしまいました。私は電子回路の論理回路からの類推で、非常にお気楽な理解をしていたような気がします。つまり、命題論理が普通のand、or、notの組み合わせ回路(加算機など)で、述語論理が記憶素子、つまりDフリップフロップ経由でフィードバック部分のある、いわゆる順序回路です。
なので、文献紹介でお許しください。
Prologプログラミング。S.F. Clocksin, C.S. Mellish。マイクロソフトウェア、1983
は、第五世代コンピュータ計画の当時にPrologに関心のある人々がほとんど必ず読んでいた本だと思います。私が読んだのはその邦訳。
実は、当時、この本を読んでも私はPrologが分かったとは言い難い状況でした。お試しプログラムは作れますが、BASICの様に軽々とは扱えなかったからです。しかし、これでPrologが理解できた人も多かったみたいです。
現在は普通には手に入らないと思います。当時は有名だったので、大抵の大学図書館にはあると思います。
インターフェース増刊、archive no.9、no.10。CQ出版、1988、1989
なので、悶々としていたところに出たのが、この2冊のmookです。Prologの実用面を解説したもので、副題が「道具としてのProlog」で、no.9が入門編、no.10が応用&仕組み編です。私は大助かりでしたが、こちらは現在はまったく手に入らないというか、大学図書館にも無いと思います。なので、このエッセンスを紹介したくなった訳です。
Prologの技芸。L. Sterling、E Shapiro。共立出版、1988
Prologって、こんなに使える言語なのか、と改めて分かったのがこの本。これも有名なので、大学図書館レベルの図書館で見られると思います。最も役立ったのは第15章の差分リストの部分で、いわゆるappend述語がProlog標準の書き方で効率よく処理できる、その具体的な書き方が丁寧に解説されています。
Lispにもappend関数があって、これはリストを連結する関数です。しかし、ポインタの付け替えで無く、リストをコピーしてしまうので効率が悪いです。Prologのappend述語も同様。なので、LISPではnconcとかsetfというのを使ってポインタを付け加えてコピーではなく、元のリストに連結します。が、ポインタの付け替えなので、さらに操作するときに思わぬ副作用が起こりうる、危険な関数でもあります。
ところが、Prologでは(遅延評価の一種の)差分リストの技法で、Prologの本来の文法内で効率の良い接続が可能です。私の意見では、LISPに対するPrologの優位性はここだけです。ですが、この部分はとても大きな意味があって、第五世代コンピュータ計画の後期の並列論理言語のGHCでは非常にキーとなる部分となっています。
なので、差分リストの技法の解説は、何としてでも現在でも知ってもらう必要があると思います。
An Abstract Prolog Instruction Set。D.H.D. Warren。1983
論文かな(?)。現在はネットで無料で手に入るはずです。いわゆる、Warren Abstract Machine (WAM)の解説書。現在のProlog処理系はほぼこの仮想マシンを使っているはずです。私の印象では、あまりに決定版だったので、その後の研究が滞ってしまったように思います。