紫藤のWiki

最近の更新履歴

初心者の為のLisp環境

初心者に対してのCommon Lispの問題点

初心者に対してのCommon Lispの敷居の高さの一つに、

「開発環境をどうやって整えるのか?」

と言う問題があります。
これは極めて重要なんですが、あまり多くが語られる事が無いトピックでもあります。

一つの理由に、

プログラミング初心者はLispを選ばない

と言うことがあると思います。
一般的にLisp系言語は大学等で「理論的な談話」として「学ばされる」ものであって、「個人が積極的にチョイスする」言語じゃない、と言う哀しい現実があります。
あるいは、求道者的にプログラミング言語を学んでいる人たちが「究極奥義を極めよう」として選択する言語であって、そう言う人たちは既に開発環境に対して「何らかの」知識を持っていて、「環境を整える」事が苦になりません。
よってLispの入門書に「開発環境」に対しての記述が殆ど無い、と言う状況になってしまってるのです。

どうして猫も杓子もMicrosoft系言語なのか?


面白い事に、プログラミング言語を学びたい、と言う人たち(サンデープログラマ予備軍)は、まず最初に「C言語」を学ぼうとするケースが圧倒的に多いんです。
C言語なんかは明らかに「初心者向け言語」じゃないんですが、どう言うわけか「C言語から」始めようとする。
「初心者向け」を考える際、C言語なんかのコンパイラより、Lispのようなインタプリタを備えた言語の方が適してる筈なのに、です(もっともLispは必ずしもインタプリタ言語ではありません)。
一体どう言う基準で「C言語」なんでしょうか?
これには色々な理由が考えられます。一つは「C言語」の言語としてのネームヴァリューでしょうし、あるいは本屋のプログラミング書籍コーナーにある「C言語関連書籍」の数の多さが魅惑的なのかもしれません。確かに本屋なんかに行けば「C言語関係」の書籍が一番多く、それに比べればあらゆる「その他の言語」関連の書籍なんてカスみたいな分量しかありません。
しかし、恐らく一番大きい理由は「Microsoftが提供しているから」なんだと思います。恐らくMicrosoftが「Visual Lisp」なんて処理系をリリースしたら一気にLispはブレークする事でしょう。

何故Microsoft系言語が優勢なんでしょうか?誰でも彼でも「Microsoft」と言うネームヴァリューに惹かれるのでしょうか?
それは絶対無いです。ただし、MicrosoftはMicrosoftと言うネームヴァリューに恥じない開発環境を提供している、と言う事は言えるでしょう。
要するにMicrosoft系言語のウリはMicrosoftの統合開発環境なんです。

Microsoft Visual Studioの例


もう見たからに使いやすそうですね。
実際、Windows系プログラマには極めて評価の高い開発環境ならしいんですが(ライブラリ検索等に優れているそうです)、本質的には「環境」は「環境」であって言語自体の能力とは何も関係がありません。
が、評価の基本はまずは何より「見た目」、そして「オールインワンで起動したらすぐにプログラミングをはじめられる環境」ってのが大事なのです。いちいちメンド臭い設定なんてやりたくない。

オープンソース系言語の愛用者は絶対に意見が違うでしょうが、デフォルトのIDEってのは極めて大事なのです。「ビルトインですぐはじめられる」と言うのは初心者には抗いづらい魅力があるのです。
その証拠に、恐らく現時点のWindowsでは、EMBARCADEROC++BuilderのフリーエディションよりMicrosoftのVisual Studioのダウンロード数が上回っている、と思います。前者は剥き出しのC++コンパイラ、後者はIDE付き、となれば結果は明白ですよね。
特にMicrosoftはWindowsの提供元ですし、Windowsの環境と親和性のある「どこを触れば何がある」とWindowsユーザーに対して直感的に分かりやすいインターフェース/デザインを採用して、「さすがMicrosoftだ」と思われる環境作りに気を使っている。結果、プログラミング言語のメーカーとしても信頼度が上がっていく、と言う好循環が起きてる、と思われます。

「いや、別々の言語で別々のIDEがあったらダメだよ。言語を変える度にIDEを別々に学ばなくてはならないから効率が悪い。」

と言う意見はもっともだと思います。しかし、これはやっぱり「プロの意見」なんですよね。
初心者は「色々な言語を」既に覚えているわけじゃありません(だからこそ"初心者"なのです)。また、言語を覚える前に環境の設定をする(もしくは環境の設定方法を学ぶ)、と言うのは大変な苦痛です。
学校でフォーマルに習うならいざ知らず、サンデープログラマ予備軍が欲しいのは「インストール→即実行」と言う環境であるのは間違い無いのです。環境に関する設定を学ぶのは後々で構わない。そこをMicrosoftは良く分かっている、のです。

例えばEmacsなんかでも使用しているアドオンでキーバインドが変わる、なんて事はしばしば起こり得るので、そうなると「見た目Emacs」なんですが、事実上「中身が違う」と言う事もあり得る、んです。
つまり、実際は「全然別の環境を使ってる」事になりかねません。この様に、「Emacsであるこだわり」ってのが何なのか、突き詰めていくとしばしば意味が分からなくなります。
これはEmacsのニュアンスが登場した1970年代ですと、Emacsはどっちかと言うと今現在で言うGNOMEとかKDEのニュアンスを含んでいた事を考えても明白でしょう。別々のプログラムを「走らせる」環境をEmacsが備えていた、と言う事ですから当然なのです。

いずれにせよ、Common Lispも本来なら「インストール→即実行」と言う環境がある事に越した事がありません。さもなければポール・グレアムのハッカーと画家を読んで感銘を受けたは良いけど、同著者のANSI Common Lispを読んで「開発環境の設定の記述無し」で玉砕、って事になりかねないのです。

2つの解決策

一応断っておきますが、この記事は原則「Windowsユーザー向け」です。
上の方でMicrosoftを持ち上げているような書き方していますが、ぶっちゃけて言えば「Lispでの開発環境設定」はWindowsだから難しい、と言うのが本当のトコロです。反面、Linux辺りでは実はそこまで難しく無いのです。
一般に、プログラミング言語を走らせる環境としてはWindowsはあまり優秀ではありません。要するにエンドユーザー向け、なのがWindowsなのです。端的に言うと、プログラムを「走らせる為の」環境であるのがWindowsの本懐で、プログラムを「作る為の」環境ではない、ってのがミソなんですね。
だからMicrosoftのプログラミング言語環境じゃないと「どーしようも無くなる」ってのがある種事実なんです。反面、Linuxはプログラミング言語全体としても比較的、「インストール即実行」が得やすい環境になっています。
かと言って、「ちょっとLispをやってみたい」だけの人が、いきなり「Linuxをインストールしなさい」なんて言われても困るだけ、です。Emacsの難しさなんて論外になっちゃいます。

そこで解決策を2つ提示しておきます。

まず、古典的でポピュラーな手としてはxyzzyを使う、と言う方法があります。他に処理系を用意せずにxyzzy一本槍で過ごすのです。
と言うのも、xyzzyにはxyzzy Lispと呼ばれるCommon Lispのサブセットが入っています。よって、ある程度の事はxyzzyだけでこなせるでしょう。
これはM.Hiroi's Home PageCommon Lisp 入門や、あるいは入門Common Lisp―関数型4つの特徴とλ(ラムダ)計算と言う書籍でも使われている方法です。
xyzzy自体が軽くて高機能なエディタですし、「入門用」を考えれば処理系をどうするか悩むよりは、大概の事をxyzzyでやってのけた方が効率的だ、と言う事は言えると思います。

もう一つの方法がLispboxと言う「オールインワン」の開発環境を入手する、と言う方法です。現在ではこれがイチオシ、ですね。

Lispbox

Common Lispのオールインワン統合開発環境。
その実態はEmacs21+SLIME+asdfである。 これを導入すれば一々Lispのプログラミング開発環境設定に悩む必要もなくなる。


LispboxはWindows版だけではなく、Mac OSX版やLinux版も用意されている。
「Windows型」のインストール方式となっていて、1フォルダ(ディレクトリ)に全てが導入されていて、既存のEmacsやMeadow、他のCommon Lisp処理系と競合する事が無いように設計されている。


Windows版は自動インストーラが付いていて、Program Files内に展開される。一方、Linux版はHOMEディレクトリ内に展開されるようになっている。
Windows版はアンインストーラでアンインストールする。Linux版ではディレクトリを丸ごと消去すれば良い。


LispboxはOS別、処理系別に数種類用意されています。
とは言っても、Windows版は実質CLISPヴァージョンしか選択肢が無いとは思います。また、「初心者用」としてはアレコレ悩む必要も無いでしょう。
一方、Linuxユーザー、Macユーザー向けには「ちょっとは選ぶ楽しみが」用意されています。


OS X

(10.4/PPC)

OS X

(10.4/Intel)

GNU/Linux

x86

GNU/Linux

x86-64

Windows

Allegro 8.1 8.1 8.1 8.1 8.1
SBCL 0.9.7 0.9.7
Clozure CL 1.0 1.0
CLISP 2.35 2.36 2.37

全てのOSに対してAllegro Common Lisp 8.1 Free Express Editionが用意されています。

ただし、Allegro CLはオープンソースではないれっきとした商用の処理系なので、提供元のFranz inc.から無料のライセンスを得ないといけません。

またこのライセンスは1年更新らしく、少々煩わしいです。

Windowsの利用者はCLISPで充分なんじゃないかな、と思います。

註:Clozure CLとは旧Macintosh Common Lispです。

Lispboxの起動

Windows版の場合はインストーラのインストラクションに従ってインストールしたら、デスクトップ上にLispboxの起動アイコン(図柄はBATファイルのもの)が出来ている筈です。それをダブルクリックする事でLispboxが起動します。
Linux版の場合、HOMEディレクトリ内に展開されたLispboxのディレクトリ内にlispbox.shと言うシェルスクリプトがある筈です。
それを端末で指定してLispboxを起動します。
註:lispbox.shをテキストエディタで開いてみると分かりますが、デフォルトでこのシェバングは
#! /bin/sh
とUNIXスタイルで記述されています。
一方、現代のPC UNIXでは、シェルがshである事は殆ど無いでしょう。
従って、これは
#! /bin/bash
と書き換えれば良い筈です。 それにより端末から、
lispbox-ヴァージョン番号/lispbox.sh
Lispboxが起動出来る筈です。

Lispboxの使い方

Lispboxは非常に使いやすいオールインワンのCommon Lispの統合開発環境です。WindowsではじめてLispに触れる「プログラミング初心者」にもお奨めです。
しかしながら、フロントエンドがEmacsであり、見た目としては「地味」ですし、特にWindows環境に慣れた人には取っつきづらく「ユーザーフレンドリーに見えない」のも事実だと思います。
が、本当にこれはフリーのLispプログラミング開発環境としては最強ですし、Emacsへの批判の代表とも言える「ややこしいキーバインド」にせよ、数種類覚えるだけでかなりの事が可能です。少なくとも、初心者が覚えるべきキーバインドはほんの数種類であるべきですし、あとはマウスでプルダウンメニューに頼れば良い、のです。 よってここでは「最小限のキーバインド」だけ紹介しておきます。 そしてその「数種類のキーバインドだけ」で快適なLispプログラミングが行えること間違い無し、です。
ここでは実際にLispプログラムを書く事は避けておいて、紫藤のページCommon Lispのセクションの関数電卓のスクリプトを利用してLispboxの使い方を紹介していきます。

関数電卓スクリプトはここからダウンロードして展開します。
すると、次の3種類のファイルが含まれているのが分かると思います。
  • smartcalcconsoleini.lisp
  • smartcalcconsole.lisp
  • smartcalcconsole.bat
この中で今回使うのはsmartcalcconsoleini.lispだけ、です。
と言うのも、この関数電卓スクリプトの本体はこれだけ、だからです。他の2つは、一つはWindows用の環境変数設定絡みのもので、デスクトップのアイコンをダブルクリックしたと同時にCommon Lisp処理系を起動させる為のもの(smartcalcconsole.bat)、もう一つは自動でスクリプト本体を起動させる為のもの(smartcalcconsole.lisp)で、実はこの2つは計算そのものには何も関係が無い、のです。
そこで、今回の実験ではsmartcalcconsoleini.lispだけに焦点を絞って、Lispboxの操作を記述して行きます。
まずはsmartcalcconsoleini.lispをProgram Files内のLispBoxフォルダ内に入れてください。これで準備は完了です。
(あるいはこのページの最下段にあるAttachmentsからsmartcalcconsoleini.lisp.txtをダウンロードする事も可能です。その場合、ダウンロード後に拡張子の.txtを消去して下さい。)

さて、キーバインドですが、LispboxのショートカットではCtrlキーとAltキーを多用します。例えばCtrlキーとcキーを同時に押す事を文書中ではC-cと表現するのが習わしとなっています。同様に、Altキーとqキーを同時に押す事をM-q等と表現します。これらは習慣ですね。
また、この手の作業を二回続けて行うのも「良くある」ショートカットになっています。例えばC-c M-qと書かれた場合は「Ctrlキーとcキーを同時に押した後、Altキーとqキーを同時に押す」と言う意味です。

それではやって行ってみましょう。まずはLispboxを起動して下さい。

まずはLispBoxを起動した状態でC-x C-fとします。

これは「ファイルを開く」為のショートカットコマンドです。

自分で今から作るプログラムファイルだろうが既存のファイルだろうが、作業をはじめる前特定のファイルが欲しい時は常にC-x C-fからはじめる、と覚えておいて良いでしょう。

これを打つと、Windows版の場合はLispboxの最下段に

Find file : c:\Program Files\LispBox\
と言う表示が現れる筈です。

そこに目的とするファイル名を記述していきます。

そのファイルが存在しない場合は、Lispboxが新たなファイルを生成してくれます(正確には作業場=バッファを生成するんですが、細かい話はまあ良いでしょう)。


今、開くべきファイル名はsmartcalcconsoleini.lispです。が、かなり長いファイル名ですね。これを全部打つのは大変です。

そこで。冒頭3文字のsma辺りまで打って止めちゃいましょう。

つまり、この状況ではLispboxの最下段では

    Find file : c:\Program Files\LispBox\sma
と言う入力状況になっていて、ここでTabキーを押します。

Lispboxには入力補完機能が備わっていて、馬鹿正直に全部打たなくてもLispboxが「ファイル名候補」を表示してくれるんで何も心配いりません。

Lispboxがファイル名を補完してくれたら、後はEnterキーを押せば目的のファイルがLispboxにロードされる筈です。

smartcalcconsoleini.lispがLispboxに読み込まれました。

今回は既存のファイルを読み込ませる方法を取りましたが、あなたがLispのプログラムを書くにせよ、こう言う形(拡張子が.lisp)のファイルを作成する事となります。

ここで次に行うべき事はC-c C-kを実行する事、です。

これにより、Lispプログラムのセーブ→コンパイル→Lispインタプリタ(REPLと呼びます)へのコンパイル済みファイル(faslと呼びます)のロードが一気に行われます。

全く新規のファイルを作って未保存でコンパイルしようとした場合、Lispboxは最下部で

    Save file c:\Program Files\LispBox\***.lisp? (y or n)
と尋ねて来るので、yと答えると.lispファイルの保存をしてくれます。

C-c C-kが完了するとLispboxは上下2段に分割されて、上段はlispファイルの編集領域、下段はコンパイルしたファイルがロードされた状態のREPLになります。

実は、Common Lispの入門書にはこのファイル(あるいは関数)のコンパイル→インタプリタへのロードと言う作業が解説されていないか、あるいは解説されていても本の後半に「余談として」しか掲載されていないケースが多いのです。

色々な理由が考えられますが、一つは一連の手順が面倒くさく、また、開発環境側の方での作業を全自動化する設定方法が複雑であるか、ないしは共通の方法が無いので書籍側の方では概論しか書けない、と言った理由が考えられます。

一方、LispboxではC-c C-kで一発なので、Common Lispに触りはじめた当初からこのようにファイルのコンパイルと付き合う事が可能なのです。

さて、マウスを使って下段のREPLへとカーソルを移動させましょう。

関数電卓SmartCalcConsoleの本体はcalc、と言う名前の関数です。

Lispbox下段のREPLのプロンプト(CL-USER> )に

(calc)
と入力すれば関数電卓SmartCalcConsoleが起動します。

後はSmartCalcConsole の使い方のインストラクションに従って、

2 [Enter] 3 [Enter] 4 [Enter] + [Enter]
と打っていけばページの解説通りにSmartCalcConsoleが動いてくれます。

如何でしょう?このように、Common Lispでは関数を書いた.lispファイルの作成、コンパイル、REPLへの.faslファイルのロード、プログラムの実行/テスト、と言うようなサイクルでプログラムを作り上げて行きます。
そして、今まで出てきたLispboxのショートカット・キーバインドはC-x C-fC-c C-kの二つだけ、です。特にC-c C-kは.lispファイルの保存までやってくれます。従って、この二つだけでかなりの事をカバーしているので当面は問題が生じないでしょう。
後、一つ覚えるとしたら、関数定義が間違っていた場合、コンパイルのエラーでデバッガが立ち上がるのですが、そこから脱出する方法だけ、です。その場合は黙ってqを押せば良いのです。

Lispboxの使い方++

大体のLispでのプログラミングのサイクルは上記の通りでオーケーです。
ここではもうちょっと「複雑な」事を行ってみます。
とは言っても「コマンド数」は限っておく、と言う方針はそのまま、とします。そして、日常的に使う「Lispプログラムを書く際の便利な機能」に絞って展開していきます。
「たまにしか使わないコマンド」を覚えるのは全くの無駄ですし、それこそマウスとプルダウンメニューに頼れば良いのですから。

例題としては紫藤のページテンプレートの使い方と展開形の確認で紹介されているマクロ、nil!を実際プログラムしていく、と言う事にします。
nil!はたった2行のプログラムですが、だからこそ「Lispプログラムを書く際Emacsをどう操っていくのか」説明するには端的な例になり得る、と思います。
(逆に長いプログラムだと焦点がボケてしまいます)
では前項の状態の続き、と言う事にします。

Lispboxのエディタ部分へマウスで移動、前項で扱ったようにC-x C-fで新規ファイルを作ります。
ここでは、nil!.lispと言うファイル名で開く、と言う事にしましょう。
今度は何も書かれていないまっさらな新規ファイル(正確にはバッファ=作業場)が立ち上がります。
もう一度復習しますが、C-x C-fは既存ファイルがある場合はそれを開き、今回のようにファイルが存在しない場合は新たにバッファを立ち上げます。
ではnil!を書き込んでいきます。
とは言っても取り合えずnil!.lispには
(defma
とだけ書いてここで入力を止めてしまいます。
ここでC-c Tabを行って下さい。
C-c Tabを行うと、Lispboxが自動で
defmacro
と関数名を完成してくれるのがお分かりでしょうか?
これがLispbox関数名補完機能、です。
確かにdefmacro程度の長さではあまり有り難味が無いんですが、一方、一般にCommon Lisp関数名が鬼のように長い
例:foooo-barrrrr-bazzzzzz
と言う特徴があって、また、仕様が巨大な事もあり、こんなの全てに渡って一々正確にスペルを覚えておくのは至難の業です。
そんな理由で、Common Lispではこのような入力支援機能が無いとやってられないのです。
Lispの関数名はうろ覚え程度で良い、と言う甘えは積極的に許されるべきなのです(多分)。
取り合えず一行分
(defmacro nil! (var)
まで打ち込んでしまいます。
この行末でC-jとすると、Lispbox改行とインデントを同時に行います
Lispboxの自動インデントは他のテキストエディタに見られない程強力、です。
一般に、他のテキストエディタ上の「自動インデント」とは、大体が単に「行頭揃え」を指してるケースが多いのですが、Lispboxの場合はまるで「ブロック構造の意味が分かってるんじゃないか?」と思えるほど賢くインデントを付けていきます。
また、Lispboxが全てインデントを付けてくれる為、インデントが何文字幅であるべきか、とかどこでインデントを付けるべきだろう、とか一切悩まなくて良いのです。どんな風にインデントしようとLispboxが全て面倒を見てくれます。
Emacs系エディタからプログラマが離れたがらない最大の理由はこのC-jなんじゃないのか、と思える程便利で賢い機能です。
二行目で、
(li
と打った時点でまたC-c Tabしてしまいましょう。
Lispboxは関数候補名が複数ある場合、新たにバッファを立ち上げ、それらを表示します。
あなたがやるべき事は、必要な関数名をマウスで選択して[Enter]を叩く事だけ、です。ここではlistを選びます。
もちろん、listくらいで関数名補完機能を使うのは大げさなんですが、まずはC-c Tabに慣れる、と言う事が一つ。もう一つは似たような関数名がどれだけCommon Lispに存在するのか、予習の為に見ておくのも良い事だ、と思います(この例だと、lisで始まる関数が10個程あるのが分かります)。
この手の「便利機能」は、学習に役立つのならどんどん使うべきです。
二行目を取り合えず
(list 'setf var nil
とまで打ってしまいましょう。
ここまで打って、行末で新たにC-c C-qとし、その後、前項で学んだようにC-c C-kとしてnil!.lispの保存、コンパイル、nil!.faslのREPLへのロードを一気に行ってしまいます。
これで全ての作業が完了、です。
nil!.faslがREPLにロードされて作業は完了、です。
ところでC-c C-qとは何なのか?
これは残り必要とされる括弧を全部埋めてくれる機能です。
 完璧に見えるLispboxにも一つ欠点があって、今回はたった二行のプログラムなんで実感沸かないでしょうが、あんまり長いプログラムになると、括弧の対応を見るのが大変だ、と言う事があるんです。
Lispboxではどの括弧とどの括弧が対応しているのか逐一教えてくれるのですが、プログラムの長さが表示画面を越えた場合、括弧の対応を画面をスクロールさせて取ろうとすると、指定したカーソルが動いてしまって、結果、どの括弧とどの括弧が対応するのか分からなくなる、と言う致命的な欠点があるんです。
これは他のテキストエディタには見られない性質で、一般に、テキストエディタは画面をスクロールさせてもカーソルの位置自体は固定されているのが普通です。Lispboxはその点、「直感に反した」動作をするんですね。
そこで、C-c C-qを行うことによって視覚的に括弧の対応を取らなくて良くなるのです。
これは良く使うので覚えておいた方が良いコマンドです。

如何でしょうか?ここで出てきた新規コマンドはC-c TabC-jC-c C-qの三つだけ、です。これらはLispプログラムを書く時良く使うものです。これら以外はそうそう使わないでしょう。
これら以外に必要だとしてもあと2つくらい、でしょうね。
以下にここまでで挙げた必修キーバインド+2個を表にしておきます。

Lispbox基本コマンド


以上、ご覧の通り、たったの8つのショートカットだけでLispboxと付き合いはじめられます。
基本的に、WindowsでLispboxを触る以上、殆どの事はマウスでの操作で充分でしょう。確かにあらゆる操作でキー入力の方が速いのは事実ですが、別にタイピング大会に出場するわけでも無いですし、豊富にある(と言うか"あり過ぎる")Lispboxのキーバインドを全部覚えようとするのは時間の無駄です。
大事なのは「必要に感じたら」徐々に覚えて行けば良い、って事です。最初から「何でもかんでも」覚えようとするのは効率が悪過ぎます。また、Emacsの基本操作に関しては他の記事にも色々と書かれていく可能性が高いので、おいおいそれらを照合して行けば充分だと思います。
(あるいはここを参考にしても良いでしょう。)

Windows版LispboxのTUTORIAL.jaの不在

ここから余談、です。
ところで、Lispboxのプルダウンメニューには[Help]があるんで、「Emacs系の基本操作の習得の必要性を感じたら」そこを開いてTutorialを見れば良いだけ、なんですが、生憎どう言うわけかWindows版Lispboxにはその手の「基本テキストファイル」が入っていません。
これは由々しき問題です。
そこでまずは、
  • TUTORIAL.jaにアクセスして、そのページを丸ごとコピペしてテキストファイルTutorial.jaとして保存する。
  • あるいはこのページの下段にあるTUTORIAL.jaをダウンロードする。
のどちらかを行って下さい。
それが終わったら、TUTORIAL.jaのファイルを
C:\Program Files\LispBox\emacs\etc
内に保存します。
そうすればLispboxのプルダウンメニューから[Help]→[Emacs Tutorial (choose language)]を選ぶと、最下部の入力欄に
Language:
が現れるので、"Japanese"と入力して[Enter]キーを打ちましょう。 そうすれば日本語版のEmacs入門ガイドが起動します。


ただし、プログラミング初心者の段階では前項の表の8つのコマンドだけで当面は十分だと思います(8つでも多いんじゃないか、と極めて不安です)。
現代ではGUIが充実してるので、別にマウスを多用する事が恥ずかしい事だとも思いませんし、矢印キーもしかり、です。
(PC UNIXではGUIが否定されがちなんですが、実際問題、歴史的には初のGUIパソコン、Apple Macintoshの発売と同じ年にX Window Systemが出来ているので、WindowsよりUNIXのGUIの歴史の方が古いですし、実は老舗なのです。あんまり語られませんが。)
Emacs Tutorialではマウス+プルダウンメニュー+矢印キーの代用を説明しているに過ぎません。

例えば、大量にバッファがあったりする場合、ショートカットキーでのバッファ切り替えの方が「メンド臭い」事もしばしば起こり得ます。
意外にメニュー画面にある[Buffers]から目的のバッファをマウスで選んだ方が速いケースもあるのです。
また作業画面も三つ、四つ、と開いている場合、マウスによる画面選択の方が「速い」んじゃないかな、って事もあります。
CLI vs. GUIは難しいトコですし、色々やってると「なるべくホームポジションから動きたくない」って思うのも事実なんですが、そう「思う」にはある種タイミングが必要です。
本来だったら、その「怠惰から来る必要性」を心底感じた時が「ショートカットキー」への切り替え時なんであって、最初っから「そうすべきだ」って程でも無いんじゃないかな、と思います。
また、Emacs Tutorialは「Emacsの使い方概論」がその目的を占めているんですが、実際、手慣れたLisperだと、「S式単位の」移動を好むので、あそこで書かれている「概論」は結局役に立たない、と言えば立たないのです。

既存のEmacsのSLIMEによるLispbox化

既にEmacsを導入している人もLispboxの「使いやすさ」に舌を巻くのではないか、と思います。
特にEmacsを使いこなしている人だったら余計にそう思う確率が高いと思います。
最初に説明した通り、Lispboxは基本的にEmacsにSLIME(The Superior Lisp Interaction Mode for Emacs)と言うelispファイルを付け足しただけのものに過ぎません。
従って、今まで愛用していたEmacsをLispboxみたいに設定する事は可能です。
が、それはWindowsユーザーかつ「初心者向け」のこのページのトピックのレベルを越えるので、設定方法に関しては場所を改めてEmacsのページの方で解説します。

添付ファイル (2)