Lisp は構文規則が非常に少ないので実装は簡単でした。この意味で Java は Lisp と比較して面倒です。 次に Java には予約語というものがあります。例えば、class という語句はクラス定義を宣言する予約語の一つです。 これも一般的な言語では予約語の概念はあります。これにより、例えば class class {} // クラス class の定義。中身はなし。--> エラー のようにクラス名 class のクラスを作成することはできません。 プログラマから見れば、これは強い制限です。予約語には class や public など 一般的な語句が多くありますので、それらは名前として使えません。 group や category は使えるのに class が使えないというのは、普通に考えて非常に不自然です。 一方、言語処理系の実装者から考えれば、この予約語の情報を使うことにより、