はじめに

プログラミング言語Lispには長い歴史があり,いろいろな意味づけが可能だ.理論的面では,関数型のプログラミング言語であるとともに,プログラム意味論の研究対象となった.実践面では,高速化のためのコンパイラもあるものの概念的にはインタプリタベースであり,人間の思考を強化する強力なツールであると言える.
ここでは,理論的な問題や実践面の弱点があることを記したうえで,人間の思考の強化のためのツールとして掘り下げることとする.
【著者註】理論的な問題と実践的な弱点 については後日述べる.

Lispはその歴史の長さからいろいろな「方言」が作られてきたが,思考のツールとして最も強力なものはCommon Lispであると言える.Common Lispは,Ansi標準であり,本格的な教科書や解説書が容易に入手できる.
【著者註】Common LispのWikipediaエントリーは《こちら》へどうぞ.
【著者註】本格的な教科書や 解説書のリストは後日作成.
処理系としては,ここでは入手の容易さからGnu Common Lispを使うことにする.
【著者註】以下は,後日きちんと書く.
Common Lispは本来インタープリタ系の言語であり,Windows系のマシンが手許にあれば,一瞬でインストールでき,ほとんど一瞬でHello Worldを表示できる.プログラム開発も~数千行くらいなら簡単にできる.欠点は,商用の処理系がAllegro Common Lispくらいしかないこと.また,Gnu Common Lispを使う場合は,頑張らない限りテキスト入力,テキスト出力しかできない.利点は,先にも述べたが無数にある.そのなかのいくつかを紹介すると,

  • インタープリタ系なのでコンパイルをしなくてもプログラムコードを書いて即実行できる.
  • 実行時のデバッグができるので,デバッグしながらプログラムコーディングができる.
  • 動的なデータ構造としてのリストは強力であり,簡単な構造は大抵これで間に合う.
  • 一見,括弧だらけでわかりにくいと言われているが,カジュアルプログラマにはその逆.微妙なコンマとか,1+みたいな特殊な構文を覚えなくても,「いも」プログラムが書ける.思考のツールとしてはこれで十分.hello worldは瞬間的.簡単なアルゴリズム演習なら数時間で,ちょっとしたプログラムなら数日で書ける.
  • 奥が深い.オブジェクト指向,GUI,ネットワークプログラミングも可能.ゲームやロボットの行動管理にも適している.
  • コンパイラもちゃんとある.コンパイラにかけるとコードが高速化する.