summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/ja/rms-lisp.html
diff options
context:
space:
mode:
Diffstat (limited to 'talermerchantdemos/blog/articles/ja/rms-lisp.html')
-rw-r--r--talermerchantdemos/blog/articles/ja/rms-lisp.html80
1 files changed, 51 insertions, 29 deletions
diff --git a/talermerchantdemos/blog/articles/ja/rms-lisp.html b/talermerchantdemos/blog/articles/ja/rms-lisp.html
index 5db6b01..783e1f4 100644
--- a/talermerchantdemos/blog/articles/ja/rms-lisp.html
+++ b/talermerchantdemos/blog/articles/ja/rms-lisp.html
@@ -1,16 +1,30 @@
<!--#set var="ENGLISH_PAGE" value="/gnu/rms-lisp.en.html" -->
<!--#include virtual="/server/header.ja.html" -->
-<!-- Parent-Version: 1.77 -->
+<!-- Parent-Version: 1.96 -->
+<!-- This page is derived from /server/standards/boilerplate.html -->
+<!--#set var="TAGS" value="gnu-history" -->
+<!--#set var="DISABLE_TOP_ADDENDUM" value="yes" -->
<!-- This file is automatically generated by GNUnited Nations! -->
<title>わたしのLispの経験とGNU Emacsの開発 - GNUプロジェクト - フリーソフトウェアファウンデーション</title>
+<style type="text/css" media="print,screen"><!--
+a[href*='#foot-'] { font-size: .94em; }
+-->
+</style>
<!--#include virtual="/gnu/po/rms-lisp.translist" -->
<!--#include virtual="/server/banner.ja.html" -->
+<!--#include virtual="/gnu/gnu-breadcrumb.ja.html" -->
+<!--GNUN: OUT-OF-DATE NOTICE-->
+<!--#include virtual="/server/top-addendum.ja.html" -->
+<div class="article reduced-width">
<h2>わたしのLispの経験とGNU Emacsの開発</h2>
-<blockquote><p>(2002年10月28日、国際Lispカンファレンスでのリチャード・ストールマンの講演の記録)。</p></blockquote>
+<div class="infobox">
+<p>2002年10月28日、国際Lispカンファレンスでのリチャード・ストールマンの講演の記録。</p>
+</div>
+<hr class="thin" />
<p>わたしの通常の講演はLispとまったく関係ないので、本日はそのどれでも感謝されないでしょう。ですから即席でしゃべらなくてはならないでしょう。わたしのキャリアにおいて、わたしはLispと関連したことをたくさんやってきたので、なにか興味深いことを話せるべきでしょう。</p>
@@ -31,13 +45,13 @@ title="Text Editor and
COrrector">TECO</abbr>のために書かれたものでした。それは、わたしたちのテキスト・エディタで、とてつもなく醜いプログラム言語で可能な限り醜い、というものでした。その理由は、プログラミング言語になるように設計されておらず、エディタとコマンド言語になるように設計されていたからです。「5行移動」を意味する&lsquo;5l&rsquo;のようなコマンドや、&lsquo;i&rsquo;に文字列、続いてESCで、その文字列を挿入、などです。コマンド文字列、と呼ばれたコマンドの列である文字列をタイプするのでした。それをESC
ESCで終了すると、実行されるのです。</p>
-<p>まぁ、人々がこの言語にプログラミングの機能を拡張したがり、いくつか足しました。たとえば、最初のものは、ループ構造で、&lt; &gt;
-でした。これを、あるものの回りに置くと、それがループとなりました。そのほか、ループから条件脱出するのに使われる暗号のようなコマンドがありました。Emacsを作るのに、わたしたち<a
-href="#foot-1">(1)</a>は、名前付きのサブルーチンを持つような機能を追加しました。それ以前は、Basicのようなもので、サブルーチンはその名前に一つの文字しか持てなかったのです。これでは大きなプログラムをプログラムするのには大変で、長い名前を持てるようにコードを追加したのです。実際、洗練された機能もいくつかありました。わたしは、LispはTECOからunwind-protectの機能を採ったと思います。</p>
+<p>まぁ、人々がこの言語にプログラミングの機能を拡張したがり、いくつか足しました。たとえば、最初のものは、ループ構造で、<code>&lt;
+&gt;</code>でした。これを、あるものの回りに置くと、それがループとなりました。そのほか、ループから条件脱出するのに使われる暗号のようなコマンドがありました。Emacsを作るのに、わたしたち&#8239;<a
+href="#foot-1">[1]</a>は、名前付きのサブルーチンを持つような機能を追加しました。それ以前は、Basicのようなもので、サブルーチンはその名前に一つの文字しか持てなかったのです。これでは大きなプログラムをプログラムするのには大変で、長い名前を持てるようにコードを追加したのです。実際、洗練された機能もいくつかありました。わたしは、LispはTECOからunwind-protectの機能を採ったと思います。</p>
<p>わたしたちは、洗練された機能を詰め込み始めました。すべて考えうる最悪の文法でやりましたが、動きました。人々は、それでどうにか大きなプログラムを書く事ができたのです。明確な教訓は、TECOのような言語、プログラミング言語になるべく設計されてないものですが、これは進めるのに間違ったやり方だということです。拡張を構築する言語は、結果論でプログラミング言語と考えられるべきではありません。それはプログラミング言語として設計されるべきです。実際、その目的に最適のプログラミング言語はLispだと、わたしたちは発見しました。</p>
-<p>こうだと<a href="#foot-2">(2)</a>発見したのは、バーニー・グリーンバーグでした。かれはMultics
+<p>こうだと&#8239;<a href="#foot-2">[2]</a>発見したのは、バーニー・グリーンバーグでした。かれはMultics
MacLispでEmacsのあるバージョンを書き、まっすぐなやり方で、かれのコマンドをMacLispで書きました。エディタ自身が全体をLispで書かれたのです。Multics
Emacsは、大変な成功を収めました。新しいエディティングのコマンドをプログラミングするのがあまりに便利で、かれのオフィスの秘書でさえ、それの使い方を学習しだしたのです。Emacsの拡張の仕方を示すのに誰かが書いたマニュアルを使っていました。それには、しかし、それがプログラミングであるとは述べられていませんでした。ですから、秘書は、プログラミングはできないと思い込んでいて、怖がらなかったのです。マニュアルを読んで、有用な事ができることを発見し、プログラムすることを学習したのです。</p>
@@ -65,8 +79,9 @@ MacLispはインタプリタと同じように、コンパイラを有しまし
<p>Lispマシンは、ほかのマシンと同じくらい速く命令を実行できましたが、それぞれの命令(たとえば、<code>car</code>命令)はデータの型チェックをするので、コンパイルされたプログラムで数に対して<code>car</code>を取ろうとすると、即座にエラーとなります。わたしたちはマシンを構築し、それにLispオペレーティング・システムを載せました。それはほとんど全体がLispで書かれていました。一部、マイクロコードで書かれたものが例外としてあるだけです。人々はそれを製造する事に関心を示し、それは、会社を開始するべきことを意味しました。</p>
-<p>この会社がどのようであるべきかについて、二つの異なる考えがありました。グリーンブラットは、「ハッカー」会社とかれが呼ぶものを始めたかったのです。これは、ハッカーによって運営される会社で、ハッカーの助けとなる方法で運営されることを意味しました。もう一つの目標は、AIラボの文化<a
-href="#foot-3">(3)</a>を維持することでした。残念ながら、グリーンブラットはビジネスの経験がなく、Lispマシンのグループのほかの人々は、かれが成功できるか疑っていると言いました。かれの外部からの投資を避ける計画はうまく行かないと考えていたのです。</p>
+<p>この会社がどのようであるべきかについて、二つの異なる考えがありました。グリーンブラットは、「ハッカー」会社とかれが呼ぶものを始めたかったのです。これは、ハッカーによって運営される会社で、ハッカーの助けとなる方法で運営されることを意味しました。もう一つの目標は、AIラボの文化&#8239;<a
+class="ftn"
+href="#foot-3">[3]</a>を維持することでした。残念ながら、グリーンブラットはビジネスの経験がなく、Lispマシンのグループのほかの人々は、かれが成功できるか疑っていると言いました。かれの外部からの投資を避ける計画はうまく行かないと考えていたのです。</p>
<p>なぜ、かれは外部からの投資を避けたかったのでしょう?
それは、会社に外部の投資家がいる場合には、かれらがコントロールし、かれらはあなたにいかなる良心のとがめでもためらうことをさせないからです。そして、結局は、なにか良心のとがめがあった場合、かれらがマネージャとしてあなたの代わりとなるでしょう。</p>
@@ -80,19 +95,19 @@ href="#foot-3">(3)</a>を維持することでした。残念ながら、グリ
<p>ですから、わたしたちのラボの置き去りに続いて、わたしたちのラボの「戦争」となりました。シンボリックスが、わたしとLMIでパートタイムで働く何人かを除いて、すべてのハッカーを雇ってしまったときに、ラボの置き去りが起こったのです。それから、かれらはルールを実施しMITのためにパートタイムで働く人々を除去したので、ハッカーは全面的に去ることになり、わたしだけが残ったのです。AIラボは今や無力でした。そしてMITはとても馬鹿げた協定を二つの会社と行いました。それは三方の契約で、両方の会社が、Lispマシンのシステムのソースの使用を許すものでした。二つの会社は、MITに対し、かれらの変更の使用を許す必要がありました。しかし、契約にはMITが、その変更を、両方の会社が認可したMITのLispマシンのシステムに入れる資格があるかどうかについては述べられていませんでした。誰も、AIラボのハッカーのグループが一掃されるとは想像してませんでしたが、そうなったのです。</p>
-<p> そうして、シンボリックスはプランを出しました<a
-href="#foot-4">(4)</a>。かれらはラボに言いました。「システムへのわたしたちの変更を使用可能とするように続けます。しかし、その変更をMITLispマシンへ入れることはできません。代わりに、シンボリックスのLispマシン・システムへのアクセスを提供し、実行することができますが、それがわたしたちができることのすべてです。」</p>
+<p> そうして、シンボリックスはプランを出しました&#8239;<a
+href="#foot-4">[4]</a>。かれらはラボに言いました。「システムへのわたしたちの変更を使用可能とするように続けます。しかし、その変更をMITLispマシンへ入れることはできません。代わりに、シンボリックスのLispマシン・システムへのアクセスを提供し、実行することができますが、それがわたしたちができることのすべてです。」</p>
<p>これは、実効的に、どちらかの側を選択することを要求するものでした。MIT版のシステムか、シンボリックスの版か、を。どちらかのシステムに決めると、その選択によって、わたしたちの改善が載るシステムが決まります。シンボリックスの版で作業して改善する場合、シンボリックスだけを支持することになります。MITの版のシステムを使って改善すると、両方の会社に利用可能となりますが、LMIが存在し続けるよう助けていることになるので、シンボリックスはそれをLMIを支持しているとみなします。ですから、もはや、中立であることは許されませんでした。</p>
-<p>この時点まで、わたしは、どちらの会社の側にも立っていませんでした。わたしたちのコミュニティとソフトウェアに起こったことを見て、惨めでしたが。しかし、今、シンボリックスは問題を押し付けてきました。ですから、リスプ・マシン社(LMI)が続けられるように<a
-href="#foot-5">(5)</a>助ける努力として、わたしは、シンボリックスがそのLispマシン・システムに行ったすべての改善を複製する事を始めました。わたしは、同等の改善を自分自身で再度書いたのです(すなわち、コードはわたし自身のものです)。</p>
+<p>この時点まで、わたしは、どちらの会社の側にも立っていませんでした。わたしたちのコミュニティとソフトウェアに起こったことを見て、惨めでしたが。しかし、今、シンボリックスは問題を押し付けてきました。ですから、リスプ・マシン社(LMI)が続けられるように&#8239;<a
+href="#foot-5">[5]</a>助ける努力として、わたしは、シンボリックスがそのLispマシン・システムに行ったすべての改善を複製する事を始めました。わたしは、同等の改善を自分自身で再度書いたのです(すなわち、コードはわたし自身のものです)。</p>
-<p>しばらくして<a
-href="#foot-6">(6)</a>、わたしは、かれらのコードを見ないことが最善であろうとの結論に至りました。かれらがベータ版のアナウンスをし、リリースノートを出したときに、わたしは、その機能が何かを見て、そしてそれを実装するのです。実際のリリースが行われるときには、わたしも同じようにリリースしました。</p>
+<p>しばらくして&#8239;<a
+href="#foot-6">[6]</a>、わたしは、かれらのコードを見ないことが最善であろうとの結論に至りました。かれらがベータ版のアナウンスをし、リリースノートを出したときに、わたしは、その機能が何かを見て、そしてそれを実装するのです。実際のリリースが行われるときには、わたしも同じようにリリースしました。</p>
-<p>このようにして、二年間、わたしはリスプ・マシン社(LMI)が葬り去られるのを阻止し、そして、二つの会社は進みました。しかし、誰かを懲らしめるのに、悪事を妨害するだけで何年も、また何年も費やしたくはありませんでした。わたしは、かれらは、だいぶ、すっかり懲らしめられたと考えました。かれらは競争に行き詰まり、競争相手を去らせたり、消滅させたりできなかったからです<a
-href="#foot-7">(7)</a>。そうして、新しいコミュニティの構築を始める時が来ました。新しいコミュニティは、かれらやほかの人々の行動が一掃してしまったものを置き換えるのです。</p>
+<p>このようにして、二年間、わたしはリスプ・マシン社(LMI)が葬り去られるのを阻止し、そして、二つの会社は進みました。しかし、誰かを懲らしめるのに、悪事を妨害するだけで何年も、また何年も費やしたくはありませんでした。わたしは、かれらは、だいぶ、すっかり懲らしめられたと考えました。かれらは競争に行き詰まり、競争相手を去らせたり、消滅させたりできなかったからです&#8239;<a
+href="#foot-7">[7]</a>。そうして、新しいコミュニティの構築を始める時が来ました。新しいコミュニティは、かれらやほかの人々の行動が一掃してしまったものを置き換えるのです。</p>
<p>70年代のLispのコミュニティはMITAIラボに限ったものではなく、ハッカーはすべてMITというわけではありませんでした。シンボリックスが始めた戦争は、MITを一掃したものでしたが、当時、進んでいたほかの出来事もありました。協力をあきらめた人々がいて、このコミュニティの一掃と合わせ、多くは残っていませんでした。</p>
@@ -106,13 +121,13 @@ Emacsの作成に向かわせたのです。これを行うにあたり、絶対
<p>当時、1985年、1メガバイトの仮想記憶なしのマシンを持っている人々がいて、GNU
Emacsを使いたがりました。これは、プログラムをできるだけ小さく保たなければならないことを意味しました。</p>
-<p>たとえば、当時、ループを構成するのは&lsquo;while&rsquo;だけで、とても単純でした。&lsquo;while&rsquo;文から抜け出す方法はなく、catchとthrowとするか、ループを回る変数をテストしなければなりませんでした。これは、わたしが物事を小さく保つためにどれだけ押し込めたかを示します。&lsquo;caar&rsquo;も&lsquo;cadr&rsquo;などもありませんでした。最初から、「できるだけ全部を絞り出す」のがGNU
+<p>たとえば、当時、ループを構成するのは&lsquo;while&rsquo;だけで、とても単純でした。&lsquo;while&rsquo;文から抜け出す方法はなく、catchとthrowとするか、ループを回る変数をテストしなければなりませんでした。これは、わたしが物事を小さく保つためにどれだけ押し込めたかを示します。<code>caar</code>も<code>cadr</code>などもありませんでした。最初から、「できるだけ全部を絞り出す」のがGNU
Emacsの精神、Emacs Lispの精神でした。</p>
-<p>あきらかに、マシンは今や大きくなり、もはやそのようにわたしたちは行っていません。&lsquo;caar&rsquo;も&lsquo;cadr&rsquo;なども入れました。今日では、もう一つのループ構成も入れるかもしれません。いくばくか拡張したいとは思いますが、Common
+<p>あきらかに、マシンは今や大きくなり、もはやそのようにわたしたちは行っていません。<code>caar</code>も<code>cadr</code>なども入れました。今日では、もう一つのループ構成も入れるかもしれません。いくばくか拡張したいとは思いますが、Common
Lispのレベルまでには拡張したいとは思いません。わたしは、Common
-LispをLispマシンに一度実装し、それについてすべて幸せというわけではありませんでした。ひとつわたしがあまり好みでなかったのは、キーワード引数です<a
-href="#foot-8">(8)</a>。あれは、わたしにはあまりLispらしくありません。わたしはキーワード引数をたまに使いますが、使うのは最小にします。</p>
+LispをLispマシンに一度実装し、それについてすべて幸せというわけではありませんでした。ひとつわたしがあまり好みでなかったのは、キーワード引数です&#8239;<a
+href="#foot-8">[8]</a>。あれは、わたしにはあまりLispらしくありません。わたしはキーワード引数をたまに使いますが、使うのは最小にします。</p>
<p>これはGNUプロジェクトがLispに関係した最後ではありません。その後、1995年あたりでグラフィカルなデスクトップのプロジェクトを開始しようと考えていました。デスクトップのプログラムには、プログラミング言語があって、たくさんのプログラムを書き、プログラムがエディタのように簡単に拡張可能となるようなもの、を期待していました。問題は、どのようなプログラミング言語であるべきか、です。</p>
@@ -133,10 +148,12 @@ Lispではありません。なぜならそれは大きすぎるからです。
<p>これは協力する自由の問題です。かつてわれわれは自由と社会との協力を、それが反するものであるかのように考えてきましたが、ここでは同じ側にあります。自由ソフトウェアで、あなたは、自分自身を助ける自由と同じく、ほかの人々と協力する自由があります。不自由なソフトウェアでは、誰かがあなたを支配し、人々をバラバラのままとします。あなたが自分自身を助けるのに自由である以上には、あなたはかれらと共有することを許されず、協力する、あるいは社会を助けるのに自由ではありません。バラバラにされ助けがないのが、不自由なソフトウェアを使うユーザの状態です。</p>
<p>わたしたちは、とてつもなく広範囲の自由ソフトウェアを製作してきました。できっこないと人々が言ったことをわたしたちは行いました。自由ソフトウェアの二つのオペレーティング・システムを有しています。たくさんのアプリケーションを有しますが、あきらかに、もっと先へと道は続きます。ですから、あなた方の助けが必要です。GNUプロジェクトのためにボランティアをしてくださるよう、お願いします。もっとたくさんの仕事のための自由ソフトウェアを開発するのを手伝ってください。<a
-href="/help/">http://www.gnu.org/help</a>を見て、どのように手伝えるか提案を探してください。ものを注文したい場合、ホームページからリンクがあります。理念の問題について読みたければ、/philosophyを見てください。使う自由ソフトウェアを探す場合は、/directoryを見てください。約1900のパッケージが今掲載されています(存在するすべての自由ソフトウェアの一部です)。もっと書いて、わたしたちに貢献してください。わたしの小論の本、&ldquo;Free
-Software and Free Society&rdquo;は売出し中で、<a
-href="http://www.gnu.org/">www.gnu.org</a>で購入できます。どうか、幸福なハッキングを!</p>
+href="/help/help.html">gnu.org/help</a>を見て、どのように手伝えるか提案を探してください。ものを注文したい場合、ホームページからリンクがあります。理念の問題について読みたければ、/philosophyを見てください。使う自由ソフトウェアを探す場合は、/directoryを見てください。約1900のパッケージが今掲載されています(存在するすべての自由ソフトウェアの一部です)。もっと書いて、わたしたちに貢献してください。わたしの小論の本、&ldquo;Free
+Software and Free Society&rdquo;は売出し中で、www.gnu.orgで購入できます&#8239;<a
+href="#foot-9">[9]</a>。どうか、幸福なハッキングを!</p>
+<div class="column-limit"></div>
+<h3 class="footnote">脚注</h3>
<ol>
<li id="foot-1">ガイ・スティールはオリジナルの対称的なEmacsのコマンドセットをデザインし、それから、かれとわたしは、(TECOの上に)Emacsの実装を始めました。しかし、一回の長い共同の開発セッションの後、スティールとは疎遠になりはじめ、わたしがEmacsを完成させました。ほかの人々も、特に、ユジーン・C・チェッカレリとマイク・マクマホンもその後、重要な貢献をしました。</li>
@@ -156,7 +173,11 @@ href="http://www.gnu.org/">www.gnu.org</a>で購入できます。どうか、
<li id="foot-7">シンボリックスは、ある時点でMITに主張しました。わたしの仕事は、かれらの計画を妨害することにより、シンボリクスに百万ドルのコストがかかった、と。</li>
<li id="foot-8">とても複雑で重い関数がキーワード引数を取るのは気にしません。気になるのは、&ldquo;member&rdquo;のような単純な基本関数でキーワード引数を使うようにすることです。</li>
+
+<li id="foot-9">2021年、この本は<a
+href="https://shop.fsf.org/books-docs/free-software-free-society-selected-essays-richard-m-stallman-3rd-edition">GNU出版</a>から購入できます。</li>
</ol>
+</div>
<div class="translators-notes">
@@ -166,7 +187,7 @@ href="http://www.gnu.org/">www.gnu.org</a>で購入できます。どうか、
<!-- for id="content", starts in the include above -->
<!--#include virtual="/server/footer.ja.html" -->
-<div id="footer">
+<div id="footer" role="contentinfo">
<div class="unprintable">
<p>FSFおよびGNUに関する問い合わせは<a
@@ -185,12 +206,12 @@ href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>までお送り
&lt;web-translators@gnu.org&gt;</a>.</p>
- <p>For information on coordinating and submitting translations of
+ <p>For information on coordinating and contributing translations of
our web pages, see <a
href="/server/standards/README.translations.html">Translations
README</a>. -->
正確で良い品質の翻訳を提供するよう努力していますが、不完全な場合もあるかと思います。翻訳に関するコメントと提案は、<a
-href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>におねがいします。</p><p>わたしたちのウェブページの翻訳の調整と提出については、<a
+href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>におねがいします。</p><p>わたしたちのウェブページの翻訳の調整と貢献については、<a
href="/server/standards/README.translations.html">翻訳 README</a>をご覧ください。</p>
</div>
@@ -210,11 +231,11 @@ href="/server/standards/README.translations.html">翻訳 README</a>をご覧く
There is more detail about copyright years in the GNU Maintainers
Information document, www.gnu.org/prep/maintain. -->
-<p>Copyright &copy; 2003, 2007, 2013, 2014, 2020 Free Software Foundation, Inc.</p>
+<p>Copyright &copy; 2003, 2007, 2013, 2021 Free Software Foundation, Inc.</p>
<p>このページは<a rel="license"
href="http://creativecommons.org/licenses/by-nd/4.0/deed.ja">Creative
-Commons Attribution-NoDerivs 4.0 International License</a>の条件で許諾されます。</p>
+Commons Attribution-NoDerivatives 4.0 International License</a>の条件で許諾されます。</p>
<!--#include virtual="/server/bottom-notes.ja.html" -->
<div class="translators-credits">
@@ -225,11 +246,12 @@ Commons Attribution-NoDerivs 4.0 International License</a>の条件で許諾さ
<p class="unprintable"><!-- timestamp start -->
最終更新:
-$Date: 2020/09/21 19:29:48 $
+$Date: 2021/12/01 03:30:28 $
<!-- timestamp end -->
</p>
</div>
</div>
+<!-- for class="inner", starts in the banner include -->
</body>
</html>