ポール・グレアム「LispのFAQ」を翻訳しました。原題は Lisp FAQ で、原文はココです。なお翻訳にあたり、sawada様のアドバイスをいただいております。英語に強い皆さま、コメント欄でのアドバイスをよろしくお願いいたします。


LispのFAQ
Lisp FAQ


Lispって何ですか?
What is Lisp?

Lispとは1950年代末にジョン・マッカーシーが発明した(より正確に言うと発見された)プログラミング言語の系統をひくプログラミング言語の一族だ。現在の主な方言にはCommon LispとSchemeの2つがある。私たちはArcという新たな方言に取り組んでいる。
Lisp is a family of programming languages descended from a language John McCarthy invented (or more accurately, discovered) in the late 1950s. The two main dialects now are Common Lisp and Scheme. We're working on a new dialect called Arc.


Lispをどう勉強すればいいですか?
How can I learn Lisp?

どんな言語であれ、勉強するにはその言語でプログラムを書くことだ。主な2つの方言から選べる。SchemeとCommon Lispだ。それぞれ長所と欠点があるが、SchemeやCommon Lispと他の言語の差に比べれば、SchemeとCommon Lispの差は小さい。だからLispを学びたいのなら、どっちを選んでも問題ない。
The way to learn any language is to write programs in it. You have two main dialects to choose between: Scheme and Common Lisp. They each have advantages and disadvantages, but the differences between them are tiny compared to the differences between them and other languages, so if you want to start learning Lisp, it doesn't matter which you choose.

どちらの方言にも、良い本とフリーの実行環境がたくさんある。だから本と実行環境を手に入れ、プログラミングをしてほしい。既存のソースコードを読み、Lispの書き方を把んで欲しい。困ったらcomp.lang.lispで質問しよう。そこの人たちは、いつでも喜んで初心者を助けてくれる。
There are good books about both dialects, and many good free implementations. So get a book and an implementation, and start trying to write programs. Read existing source code to get an idea of Lisp style. If you run into trouble, ask on comp.lang.lisp. People there are always willing to help newbies.


Common LispとSchemeのどちらを学べばいいですか? どう違うのですか?
Which should I learn, Common Lisp or Scheme? What's the difference?

Common Lispは強力だが汚い。Schemeは小さくてクリーンだが、標準では言語の中核しか定義していない。私がソフトを作るなら、たぶんCommon Lispを使うだろう。大学で教えるならSchemeを(ただしCommon Lispのマクロもいっしょに)選ぶだろう。
Common Lisp is powerful but ugly. Scheme is small and clean, but the standard only defines the inner core of the language. If I had to deliver an application I'd probably use Common Lisp; if I were teaching a course I might use Scheme (but with Common Lisp macros).


良くてフリーの、Lispの実行環境はありますか?
Do you know a good, free Lisp implementation?

いくつかある。私が使っているCommon Lispの実行環境はClispだが、CMUCLも良いと思う。SchemeのハックにはScheme48PLT Schemeを使っている。
There are several. The Common Lisp implementation I use is Clisp, but CMUCL is also well-regarded. For Scheme hacking I use Scheme 48 and PLT Scheme.


Lispを学ぶ人にオススメの本は?
Can you recommend a book for someone who wants to learn Lisp?

この本がいいかも。
You might like this one.


ネットの良いLisp入門はありますか?
Is there a good online tutorial for Lisp?

Ansi Common Lispの第2章から始めよう。(Ansi Common LispはLispプログラミングへの簡単な序論だ)。その他の詳細については、Common Lispの文献マニュアルを読んでほしい。
Start with Chapter 2 of Ansi Common Lisp, which is a brief introduction to Lisp programming. For more detail, see the Common Lisp reference manual.


Lispがそんなにすごいなら、どうしてもっとたくさんの人が使わないんですか?
If Lisp is so great, why don't more people use it?

おそらく根本的な理由は、Lispは難しく見えるからだ。だが大きなライブラリを持つ方言があれば、助けになるだろう。
The root cause is probably that it looks hard, but it would help if there were a dialect with extensive libraries.


「On Lisp」のファイルを入手できますか?
Where can I get a copy of On Lisp?

Chip Coldwellのおかげで、現在、On LispのPostscriptファイルをネットからダウンロードできる。
Thanks to Chip Coldwell, you can now get a Postscript file of it online.

すぐ再版されると思うが、なんとしてでも貴重な初版を欲しいというのなら、アマゾンで中古の本も手に入る。
It looks as if the book is going to be in print again soon, but if you are determined to have a valuable first edition, you can get a used copy at Amazon.


ANSI Common Lispの第2版はありますか?
Is there a second edition of ANSI Common Lisp?

いくつかのデータベースでは「ある」と表示されるようだが、ない。少なくとも今のところは。
Some databases say that there is, but there isn't; not yet at least.


ANSI Common Lispにある一連の問題に対する解答はありますか?
Is there a set of solutions to the problems in ANSI Common Lisp?

残念ながらない。解答を書こうと思ったのだが、本を印刷に回した直後、Viaweb社を起業し、その後、まったく時間が取れなくなってしまった。
Unfortunately not. I was supposed to write one, but we started Viaweb right after the book went to press, and I never got around to it.


Lispをハックする仕事に、どこで就くことができますか?
Where can I get a job hacking Lisp?

Lispアプリの会社はどうだろう。あるいは自分で起業するとか。
Try the companies with Lisp applications. Or you could start your own.


私はLispを使いたいのですが、会社はダメって言います。どうしたらいいですか?
I like Lisp but my company won't let me use it. What should I do?

Pythonを使わせてくれと頼もう。雇用者がLispを禁止するのは、しばしば(表向きの理由がなんであれ)、自分の部署の上司がLispのプログラムの見た目を恐れたからだ。Pythonは普通のバカな言語と見た目は似ているが、中身はLispとの共通点が多いし、ますますLispに近づいている
Try to get them to let you use Python. Often when your employer won't let you use Lisp it's because (whatever the official reason) the guy in charge of your department is afraid of the way Lisp source code looks. Python looks like an ordinary dumb language, but semantically it has a lot in common with Lisp, and has been getting closer to Lisp over time.

上司はRubyの使用さえ許可する可能性があるが、RubyはPython以上にLispらしい。
They might even let you use Ruby, which is even more Lisp-like.


MLとML系の言語をどう思いますか?
What do you think of ML and its derivatives?

私が知っているほとんどのハッカーは、ML系の言語に失望した。プログラミングが「事前の想定通りのものを、単にコードに翻訳するだけ」というものなら、静的型付けの言語のほうがいいだろう。だがプログラムは、そんな風に書くものじゃない。
Most hackers I know have been disappointed by the ML family. Languages with static typing would be more suitable if programs were something you thought of in advance, and then merely translated into code. But that's not how programs get written.

mixed型のリストを持つことができないという制約は、特に致命的だ。それは探索的プログラミングでは障害となり(初期のうちから何もかもリストで表現できれば便利だ)、そしてその制約は、MLは真のマクロを持てないということを意味する。
The inability to have lists of mixed types is a particularly crippling restriction. It gets in the way of exploratory programming (it's convenient early on to represent everything as lists), and it means you can't have real macros.


AutoLispのコンサルをする人を知りませんか?
Do you know anyone who does AutoLisp consulting?

私は知らないがググってみたら。
No, but Google does.