“Simple is best”――Lispのエレガントな魅力を知る1分ショートレビュー

Java一辺倒の世の中だが、古き良きプログラミング言語にも目を向けよう。抽象度が高くシンプルにプログラムを書けるLispの魅力をひとたび知れば、あなたも虜になるにちがいない。

» 2007年03月29日 08時30分 公開
[克元 亮,ITmedia]

ここで紹介する記事は、developerWorksの「境界を越える:Lispの美しさ」です。


 プログラミング言語の歴史をひもとけば、1950年代の手続き型言語であるCOBOLから始まり、C言語やSmalltalk、Javaへとつながっていく。この中でLispは、主に人工知能などの研究用途ながら、熱狂的な心奉者を生み出した。しかし残念なことに、Lispが主流となることはなかった。これは、言語が持つ魅力を考えると、マーケティングの失敗だったとしか言いようがない。

 現在では主流のJava、そして同じくオブジェクト指向言語であるSmalltalkは、抽象概念として、オブジェクトを取り扱えるのが特徴だ。Lispはそのはるか前から抽象化を志向し、関数からデータに至るまですべてをリストとして扱っている。

 本稿では、GNUが提供しているCommon Lispを使って、プログラミング言語の黄金郷であるLispの魅力を存分に紹介している。まずは、データや関数の定義といった基本編から、関数の組み合わせによるリストの処理方法、そして再帰や高階関数に至るまで、具体的なコードも交えて解説している。

 奇しくも、本稿の著者と同じ経験をしたのは、手続き型言語から関数型言語への頭の切り替えである。これを乗り越えるには、すべてはリストであることを身をもって知るしかない。しかし、それだけの価値はある。実際に、Lispでプログラムを組んでみると、特別な関数をたくさん覚える必要はなく、意識しなければならないのはリストの構造と括弧の対応だけであることがよく分かるはずだ。

 Lispは、元来、インタプリタで動作する。従って、サンプルコードをその場で入力して、すぐに結果を知ることができる。もちろん、コンパイラも付属しているため、それを使えば、実行形式を作成することも可能だ。

 中でも、Lispの最大の特徴は、高階関数にあるのかもしれない。高階関数とは、関数を引数にしたり、関数を戻り値としたりする関数を指す。Lispでは、オブジェクト指向よりも高次の抽象化を実現しているため、高階関数を実現するのも、ほかのやり方と何ら違いがなくシンプルに実現できる。少ないコード行でパフォーマンスを犠牲にすることなく、これを実現しているのだ。

 複雑な処理でもシンプルに実現できるのがLispの最大の魅力。考えてみれば、人間の頭の中も同じで、難しい問題でも抽象度を上げて解決している。Lispは、それをプログラミング言語として実現しているだけとも言える。

 “Simple is best.”これ以外に、Lispを称える言葉は見つからない。その根底には、ほかの言語にはない美しさがある。本稿は、Javaなど最新の言語に浮かれているエンジニアにこそ、読んでもらいたい。

ここで紹介した記事は、developerWorksの「境界を越える:Lispの美しさ」です。


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ