rms-lisp.html - en to ja translation catalogue (64 entries)

note: type: Content of: <title>
en: My Lisp Experiences and the Development of GNU Emacs - GNU Project - Free Software Foundation
ja: わたしのLispの経験とGNU Emacsの開発 - GNUプロジェクト - フリーソフトウェアファウンデーション

note: type: Content of: <div><h2>
en: My Lisp Experiences and the Development of GNU Emacs
ja: わたしのLispの経験とGNU Emacsの開発

note: type: Content of: <div><div><p>
en: Transcript of Richard Stallman's speech at the International Lisp Conference, 28 Oct 2002.
ja: 2002年10月28日、国際Lispカンファレンスでのリチャード・ストールマンの講演の記録。

note: type: Content of: <div><p>
en: Since none of my usual speeches have anything to do with Lisp, none of them were appropriate for today. So I'm going to have to wing it.  Since I've done enough things in my career connected with Lisp I should be able to say something interesting.
ja: わたしの通常の講演はLispとまったく関係ないので、本日はそのどれでも感謝されないでしょう。ですから即席でしゃべらなくてはならないでしょう。わたしのキャリアにおいて、わたしはLispと関連したことをたくさんやってきたので、なにか興味深いことを話せるべきでしょう。

note: type: Content of: <div><p>
en: My first experience with Lisp was when I read the Lisp 1.5 manual in high school. That's when I had my mind blown by the idea that there could be a computer language like that. The first time I had a chance to do anything with Lisp was when I was a freshman at Harvard and I wrote a Lisp interpreter for the <abbr title="Programmed Data Processor">PDP</abbr>-11. It was a very small machine&mdash;it had something like 8k of memory&mdash;and I managed to write the interpreter in a thousand instructions. This gave me some room for a little bit of data. That was before I got to see what real software was like, that did real system jobs.
ja: わたしの最初のLispの経験は、高校でLisp 1.5マニュアルを読んだときです。その時、わたしの心に、そのようなコンピュータ言語がありうるという考えが吹きつけられたのです。Lispでなにかをやってみるチャンスの最初は、ハーバードの新入生の時で、<abbr title="Programmed Data Processor">PDP</abbr>-11のためにLispインタプリタを書いた時です。それはとても小さなマシンで(メモリがだいたい8kです)、1000命令でインタプリタをなんとか書きました。これで少しのデータに対して余地を得ることができました。本当のシステムの仕事をする本当のソフトウェアがどういったものであるかを知る前のことです。

note: type: Content of: <div><p>
en: I began doing work on a real Lisp implementation with JonL White once I started working at <abbr title="Massachusetts Institute of Technology">MIT</abbr>. I got hired at the Artificial Intelligence Lab not by JonL, but by Russ Noftsker, which was most ironic considering what was to come&mdash;he must have really regretted that day.
ja: <abbr title="Massachusetts Institute of Technology">MIT</abbr>で働きはじめたら、ジョンL・ホワイトと本当のLispの実装の仕事をはじめました。AIラボ(人工知能研究所)に雇われましたが、ジョンLではなく、ラス・ノフトスカによってです。これは、引き続いて起こることを考えると、もっとも皮肉なことで、かれはこの日を実に後悔したに違いありません。

note: type: Content of: <div><p>
en: During the 1970s, before my life became politicized by horrible events, I was just going along making one extension after another for various programs, and most of them did not have anything to do with Lisp. But, along the way, I wrote a text editor, Emacs. The interesting idea about Emacs was that it had a programming language, and the user's editing commands would be written in that interpreted programming language, so that you could load new commands into your editor while you were editing. You could edit the programs you were using and then go on editing with them. So, we had a system that was useful for things other than programming, and yet you could program it while you were using it. I don't know if it was the first one of those, but it certainly was the first editor like that.
ja: 1970年代、わたしの人生が恐ろしい事件で政治問題となる前、わたしは、いろいろなプログラムのために、拡張を次から次に作成することを進めていただけでした。そして、そのほとんどはLispと関係ありませんでした。しかし、その道すがら、テキスト・エディタ、Emacsを書きました。Emacsの興味深い考えは、それがプログラミング言語を有し、そのインタプリタ・プログラミング言語でユーザの編集コマンドが書かれ、編集している最中に、エディタに新しいコマンドをロードできる、ということです。使っているプログラムを編集でき、それから、それで編集を進められるのです。ですから、プログラミング以外のことにも有用なシステムを有していて、なお、使いつつプログラムできる、のでした。それが、そういったものの最初であるかどうかは知りませんが、それがそのような最初のエディタであったのは確かです。

note: type: Content of: <div><p>
en: This spirit of building up gigantic, complicated programs to use in your own editing, and then exchanging them with other people, fueled the spirit of free-wheeling cooperation that we had at the AI Lab then. The idea was that you could give a copy of any program you had to someone who wanted a copy of it. We shared programs to whomever wanted to use them, they were human knowledge. So even though there was no organized political thought relating the way we shared software to the design of Emacs, I'm convinced that there was a connection between them, an unconscious connection perhaps. I think that it's the nature of the way we lived at the AI Lab that led to Emacs and made it what it was.
ja: 自身のエディテングに使う、巨大で複雑なプログラムを築き上げ、そしてほかの人々と交換する精神は、当時AIラボであった自由気ままな協力の精神を刺激しました。有するどんなプログラムのコピーでも、それを欲しい誰かに与えられる、という考えでした。それを使いたい誰とでもプログラムを共有しました。それは人類の知識でした。わたしたちがソフトウェアを共有する方法とEmacsの設計の関係に、組織化された政治的思想はなにもありませんでしたが、両者の間にはつながりがあった、おそらく、無意識のつながりがあった、ということには同意します。Emacsを導き、それがそうであるようにしたのは、わたしたちが暮らしたAIラボの方法の性質だと思います。

note: type: Content of: <div><p>
en: The original Emacs did not have Lisp in it. The lower level language, the non-interpreted language&mdash;was PDP-10 Assembler. The interpreter we wrote in that actually wasn't written for Emacs, it was written for <abbr title="Text Editor and COrrector">TECO</abbr>. It was our text editor, and was an extremely ugly programming language, as ugly as could possibly be. The reason was that it wasn't designed to be a programming language, it was designed to be an editor and command language. There were commands like <code>5l</code>, meaning <code>move five lines</code>, or <code>i</code> and then a string and then an ESC to insert that string. You would type a string that was a series of commands, which was called a command string. You would end it with ESC ESC, and it would get executed.
ja: オリジナルのEmacsにはLispはありませんでした。低レベルの言語、インタプリタ言語ではない、のは、PDP-10のアセンブラでした。わたしたちが、そこで使ったインタプリタ(言語)は、実際はEmacsのために書かれたものではなく、<abbr title="Text Editor and COrrector">TECO</abbr>のために書かれたものでした。それは、わたしたちのテキスト・エディタで、とてつもなく醜いプログラム言語で可能な限り醜い、というものでした。その理由は、プログラミング言語になるように設計されておらず、エディタとコマンド言語になるように設計されていたからです。「5行移動」を意味する&lsquo;5l&rsquo;のようなコマンドや、&lsquo;i&rsquo;に文字列、続いてESCで、その文字列を挿入、などです。コマンド文字列、と呼ばれたコマンドの列である文字列をタイプするのでした。それをESC ESCで終了すると、実行されるのです。

note: type: Content of: <div><p>
en: Well, people wanted to extend this language with programming facilities, so they added some. For instance, one of the first was a looping construct, which was <code>&lt;&nbsp;&gt;</code>. You would put those around things and it would loop. There were other cryptic commands that could be used to conditionally exit the loop.  To make Emacs, we&#8239;<a href="#foot-1">[1]</a> added facilities to have subroutines with names. Before that, it was sort of like Basic, and the subroutines could only have single letters as their names. That was hard to program big programs with, so we added code so they could have longer names. Actually, there were some rather sophisticated facilities; I think that Lisp got its unwind-protect facility from TECO.
ja: まぁ、人々がこの言語にプログラミングの機能を拡張したがり、いくつか足しました。たとえば、最初のものは、ループ構造で、<code>&lt; &gt;</code>でした。これを、あるものの回りに置くと、それがループとなりました。そのほか、ループから条件脱出するのに使われる暗号のようなコマンドがありました。Emacsを作るのに、わたしたち&#8239;<a href="#foot-1">[1]</a>は、名前付きのサブルーチンを持つような機能を追加しました。それ以前は、Basicのようなもので、サブルーチンはその名前に一つの文字しか持てなかったのです。これでは大きなプログラムをプログラムするのには大変で、長い名前を持てるようにコードを追加したのです。実際、洗練された機能もいくつかありました。わたしは、LispはTECOからunwind-protectの機能を採ったと思います。

note: type: Content of: <div><p>
en: We started putting in rather sophisticated facilities, all with the ugliest syntax you could ever think of, and it worked&mdash;people were able to write large programs in it anyway. The obvious lesson was that a language like TECO, which wasn't designed to be a programming language, was the wrong way to go. The language that you build your extensions on shouldn't be thought of as a programming language in afterthought; it should be designed as a programming language. In fact, we discovered that the best programming language for that purpose was Lisp.
ja: わたしたちは、洗練された機能を詰め込み始めました。すべて考えうる最悪の文法でやりましたが、動きました。人々は、それでどうにか大きなプログラムを書く事ができたのです。明確な教訓は、TECOのような言語、プログラミング言語になるべく設計されてないものですが、これは進めるのに間違ったやり方だということです。拡張を構築する言語は、結果論でプログラミング言語と考えられるべきではありません。それはプログラミング言語として設計されるべきです。実際、その目的に最適のプログラミング言語はLispだと、わたしたちは発見しました。

note: type: Content of: <div><p>
en: It was Bernie Greenberg, who discovered that it was&#8239;<a href="#foot-2">[2]</a>.  He wrote a version of Emacs in Multics MacLisp, and he wrote his commands in MacLisp in a straightforward fashion. The editor itself was written entirely in Lisp. Multics Emacs proved to be a great success&mdash;programming new editing commands was so convenient that even the secretaries in his office started learning how to use it. They used a manual someone had written which showed how to extend Emacs, but didn't say it was a programming. So the secretaries, who believed they couldn't do programming, weren't scared off. They read the manual, discovered they could do useful things and they learned to program.
ja: こうだと&#8239;<a href="#foot-2">[2]</a>発見したのは、バーニー・グリーンバーグでした。かれはMultics MacLispでEmacsのあるバージョンを書き、まっすぐなやり方で、かれのコマンドをMacLispで書きました。エディタ自身が全体をLispで書かれたのです。Multics Emacsは、大変な成功を収めました。新しいエディティングのコマンドをプログラミングするのがあまりに便利で、かれのオフィスの秘書でさえ、それの使い方を学習しだしたのです。Emacsの拡張の仕方を示すのに誰かが書いたマニュアルを使っていました。それには、しかし、それがプログラミングであるとは述べられていませんでした。ですから、秘書は、プログラミングはできないと思い込んでいて、怖がらなかったのです。マニュアルを読んで、有用な事ができることを発見し、プログラムすることを学習したのです。

note: type: Content of: <div><p>
en: So Bernie saw that an application&mdash;a program that does something useful for you&mdash;which has Lisp inside it and which you could extend by rewriting the Lisp programs, is actually a very good way for people to learn programming. It gives them a chance to write small programs that are useful for them, which in most arenas you can't possibly do. They can get encouragement for their own practical use&mdash;at the stage where it's the hardest&mdash;where they don't believe they can program, until they get to the point where they are programmers.
ja: ですから、バーニーは、気づきました。あるアプリケーション(なにか有用なプログラム)がLispを内蔵し、Lispプログラムを書き直すことで拡張できること　&mdash; これは、人々がプログラミングを学ぶのに実に大変よい方法だということを。それは、かれらに有用な小さなプログラムを書く機会を与えました。これは、ほとんどの分野ではできないことでした。かれら自身の実用へと促され、最初はもっとも困難であると思われて、プログラムすることなど考えられなかったのが、プログラマとなるところまで至ったのです。

note: type: Content of: <div><p>
en: At that point, people began to wonder how they could get something like this on a platform where they didn't have full service Lisp implementation. Multics MacLisp had a compiler as well as an interpreter&mdash;it was a full-fledged Lisp system&mdash;but people wanted to implement something like that on other systems where they had not already written a Lisp compiler. Well, if you didn't have the Lisp compiler you couldn't write the whole editor in Lisp&mdash;it would be too slow, especially redisplay, if it had to run interpreted Lisp.  So we developed a hybrid technique. The idea was to write a Lisp interpreter and the lower level parts of the editor together, so that parts of the editor were built-in Lisp facilities. Those would be whatever parts we felt we had to optimize. This was a technique that we had already consciously practiced in the original Emacs, because there were certain fairly high level features which we re-implemented in machine language, making them into TECO primitives. For instance, there was a TECO primitive to fill a paragraph (actually, to do most of the work of filling a paragraph, because some of the less time-consuming parts of the job would be done at the higher level by a TECO program). You could do the whole job by writing a TECO program, but that was too slow, so we optimized it by putting part of it in machine language. We used the same idea here (in the hybrid technique), that most of the editor would be written in Lisp, but certain parts of it that had to run particularly fast would be written at a lower level.
ja: この時点で、人々は、以前はLispの実装の完全なサービスを有さなかったプラットフォームで、なにかこのようなものを得ることが、どうしたらできるかを考え始めるようになりました。Multics MacLispはインタプリタと同じように、コンパイラを有しました(立派に一人前のLispシステムでした)が、そのような何かを、Lispコンパイラをまだ書いていないほかのシステムに人々は実装したいと思いました。まぁ、Lispコンパイラを有しないのならば、Lispでエディタ全体を書くことはできないでしょう。それは、大変遅くなります。特に再描画ですが、インタープリットされるLispで実行しなければならない場合は、遅いでしょう。ですから、わたしたちはハイブリッドの技術を開発しました。その考えはこうです。Lispインタプリタとエディタの低レベル部分を一緒に書き、その部分のエディタは、組み込まれたLispの機能となるのです。最適化しなければならないと感じた部分は何でもです。これはオリジナルのEmacsで意識的に慣習としてきたテクニックでした。なぜなら、マシン語で再実装された、あるだいぶ高レベルの機能があり、TECOのプリミティブとなったのです。たとえば、TECOのプリミティブで、パラグラフを整形するものがありました(実際は、パラグラフを整形する大部分の仕事を行うものです。仕事のそんなに時間がかからない部分はTECOプログラムで高レベルでなされたからです)。作業のすべてをTECOプログラムで書くことはできたでしょうが、とても遅く、その一部をマシン語にすることで最適化したのです。ここで、わたしたちは同じアイデア(ハイブリッドのテクニック)を用いました。Lispでエディタのほとんどの部分が書かれますが、特に速く実行しなければならないある部分については、低レベルで書かれるのです。

note: type: Content of: <div><p>
en: Therefore, when I wrote my second implementation of Emacs, I followed the same kind of design. The low level language was not machine language anymore, it was C. C was a good, efficient language for portable programs to run in a Unix-like operating system. There was a Lisp interpreter, but I implemented facilities for special purpose editing jobs directly in C&mdash;manipulating editor buffers, inserting leading text, reading and writing files, redisplaying the buffer on the screen, managing editor windows.
ja: ですから、わたしがEmacsのわたしの第二の実装を書いたとき、同じような設計に従いました。低レベル言語は、もはや機械語ではなく、Cでした。Cは良いもので、Unixライクなオペレーティング・システムで移植性の良いプログラムを実行する効率のよい言語でした。Lispインタプリタもありましたが、特別な目的のエディティングの仕事のための機構を直接Cで実装しました。エディタのバッファを操作する、本文を挿入する、ファイルに読み書きする、画面にバッファを再表示する、エディタのウィンドウを管理する、などの機構です。

note: type: Content of: <div><p>
en: Now, this was not the first Emacs that was written in C and ran on Unix. The first was written by James Gosling, and was referred to as GosMacs. A strange thing happened with him. In the beginning, he seemed to be influenced by the same spirit of sharing and cooperation of the original Emacs. I first released the original Emacs to people at MIT. Someone wanted to port it to run on Twenex&mdash;it originally only ran on the Incompatible Timesharing System we used at MIT. They ported it to Twenex, which meant that there were a few hundred installations around the world that could potentially use it. We started distributing it to them, with the rule that &ldquo;you had to send back all of your improvements&rdquo; so we could all benefit. No one ever tried to enforce that, but as far as I know people did cooperate.
ja: この時、これは、Cで書かれてUnixで動く最初のEmacsではありませんでした。最初のものはジェームス・ゴスリングによって書かれ、GosMacsと呼ばれました。おかしな事が、かれに起きました。最初は、オリジナルのEmacsの共有と協力の精神と同じ精神によって影響されたようです。わたしは、最初、オリジナルのEmacsをMITの人々にリリースしました。わたしたちがMITで使っていたインコンパチブル・タイムシェアリングシステムで初めは動いただけですが、だれかがTwenexで動くように移植を望みました。そしてTwenexへと移植され、それは世界で数百台あったので、それを潜在的に使えるのは、数百台へと広がりました。わたしたちはかれらに配布を始めました。「あなたのすべての改善を送り返さなければなりません」というルールで。わたしたち皆が、その利益を享受するためです。誰もそれを強制しようとはしませんでしたが、わたしの知る限り、人々は協力しました。

note: type: Content of: <div><p>
en: Gosling did, at first, seem to participate in this spirit. He wrote in a manual that he called the program Emacs hoping that others in the community would improve it until it was worthy of that name. That's the right approach to take towards a community&mdash;to ask them to join in and make the program better. But after that he seemed to change the spirit, and sold it to a company.
ja: ゴスリングは、最初は、この精神に与していたようです。かれがEmacsと呼んだプログラムのマニュアルで、その名前にふさわしく、コミュニティのほかの人々が、改善する事を望む、と書いています。それはコミュニティに対する正しいアプローチでした。コミュニティに参加を呼びかけ、プログラムをよりよいものとする、という。しかし、その後、かれは心変わりしたようで、それを会社に売りました。

note: type: Content of: <div><p>
en: At that time I was working on the GNU system (a free software Unix-like operating system that many people erroneously call &ldquo;Linux&rdquo;).  There was no free software Emacs editor that ran on Unix. I did, however, have a friend who had participated in developing Gosling's Emacs. Gosling had given him, by email, permission to distribute his own version. He proposed to me that I use that version. Then I discovered that Gosling's Emacs did not have a real Lisp. It had a programming language that was known as &ldquo;mocklisp,&rdquo; which looks syntactically like Lisp, but didn't have the data structures of Lisp.  So programs were not data, and vital elements of Lisp were missing.  Its data structures were strings, numbers and a few other specialized things.
ja: 当時、わたしはGNUシステム(自由ソフトウェアのUnixライクなオペレーティング・システムで、多くの人々が間違って&ldquo;Linux&rdquo;と呼んでいるものです)の作業をしていました。Unixで動く、自由ソフトウェアのEmacsエディタは、なにもありませんでした。しかし、わたしにはゴスリングEmacsの開発に関わった友達がいました。ゴスリングは電子メールでかれにかれ自身のバージョンを配布する許可を与えていました。かれは、そのバージョンをわたしが使うことを提案しました。そして、わたしはゴスリングのEmacsが本当のLispを有していないことを発見しました。それには、&lsquo;mocklisp&rsquo;として知られたプログラミング言語があり、文法的にはLispのように見えるけれども、Lispのデータ構造は持たないものでした。ですから、プログラムはデータではなく、Lispの主要な要素が欠けていました。そのデータ構造は文字列、数、そして、いくつかの特別なものでした。

note: type: Content of: <div><p>
en: I concluded I couldn't use it and had to replace it all, the first step of which was to write an actual Lisp interpreter. I gradually adapted every part of the editor based on real Lisp data structures, rather than ad hoc data structures, making the data structures of the internals of the editor exposable and manipulable by the user's Lisp programs.
ja: わたしはそれを使えないと結論し、すべてを置き換えなければなりませんでした。最初のステップは、肝心のLispインタプリタを書くことでした。徐々にエディタのすべての部分を実際のLispのデータ構造を元にしたものへと移行しました。アドホックなデータ構造ではなく。エディタの内部のデータ構造を外部に引き出し、ユーザのLispプログラムから操作できるものとしたのです。

note: type: Content of: <div><p>
en: The one exception was redisplay. For a long time, redisplay was sort of an alternate world. The editor would enter the world of redisplay and things would go on with very special data structures that were not safe for garbage collection, not safe for interruption, and you couldn't run any Lisp programs during that. We've changed that since&mdash;it's now possible to run Lisp code during redisplay. It's quite a convenient thing.
ja: 一つの例外は再描画でした。長い間、再描画は、ある種の別世界でした。エディタが再描画の世界に入ると、ものごとは、とても特別なデータ構造とともに進み、それは、ガベージ・コレクションや、割り込みについて安全ではなく、その間、どんなLispのプログラムも実行できないのです。わたしたちは、それを変更しました。いまや、再描画の最中にLispのコードを実行できます。それは、とても便利なことです。

note: type: Content of: <div><p>
en: This second Emacs program was &ldquo;free software&rdquo; in the modern sense of the term&mdash;it was part of an explicit political campaign to make software free. The essence of this campaign was that everybody should be free to do the things we did in the old days at MIT, working together on software and working with whomever wanted to work with us.  That is the basis for the free software movement&mdash;the experience I had, the life that I've lived at the MIT AI lab&mdash;to be working on human knowledge, and not be standing in the way of anybody's further using and further disseminating human knowledge.
ja: 二番目のEmacsプログラムは近代的な用語として「自由ソフトウェア」でした。それは、ソフトウェアを自由にするはっきりとした政治キャンペーンの一部でした。かつてのMITの日々にわたしたちがしたように、全員が自由にものごとを行うべきである、というのがこのキャンペーンの本質であり、ソフトウェアで協力し、わたしたちと働きたい誰とでも一緒に働くのです。これが自由ソフトウェア運動の基礎です。わたしの経験、MITのAIラボで過ごした暮らし、です。人類の知識について働き、誰もがさらに使うこと、さらに人類の知識を広めることについて阻んで停止するのでなくて。

note: type: Content of: <div><p>
en: At the time, you could make a computer that was about the same price range as other computers that weren't meant for Lisp, except that it would run Lisp much faster than they would, and with full type checking in every operation as well. Ordinary computers typically forced you to choose between execution speed and good typechecking.  So yes, you could have a Lisp compiler and run your programs fast, but when they tried to take <code>car</code> of a number, it got nonsensical results and eventually crashed at some point.
ja: 当時、Lisp用ではないほかのコンピュータとだいたい同様な値段の範囲のコンピュータを製作し、すべての命令で完全な型チェックをしつつも、Lispをほかのコンピュータよりもだいぶ速く実行する事が可能でした。通常のコンピュータでは、実行速度と良い型チェックのどちらかの選択を迫られます。ですから、Lispコンパイラでプログラムを速く実行することはできますが、数に対して<code>car</code>を取ろうとしたときは、意味のない結果を出し、結局はどこかでクラッシュします。

note: type: Content of: <div><p>
en: The Lisp machine was able to execute instructions about as fast as those other machines, but each instruction&mdash;a <code>car</code> instruction would do data typechecking&mdash;so when you tried to get the <code>car</code> of a number in a compiled program, it would give you an immediate error. We built the machine and had a Lisp operating system for it. It was written almost entirely in Lisp, the only exceptions being parts written in the microcode. People became interested in manufacturing them, which meant they should start a company.
ja: Lispマシンは、ほかのマシンと同じくらい速く命令を実行できましたが、それぞれの命令(たとえば、<code>car</code>命令)はデータの型チェックをするので、コンパイルされたプログラムで数に対して<code>car</code>を取ろうとすると、即座にエラーとなります。わたしたちはマシンを構築し、それにLispオペレーティング・システムを載せました。それはほとんど全体がLispで書かれていました。一部、マイクロコードで書かれたものが例外としてあるだけです。人々はそれを製造する事に関心を示し、それは、会社を開始するべきことを意味しました。

note: type: Content of: <div><p>
en: There were two different ideas about what this company should be like.  Greenblatt wanted to start what he called a &ldquo;hacker&rdquo; company. This meant it would be a company run by hackers and would operate in a way conducive to hackers. Another goal was to maintain the AI Lab culture&#8239;<a class="ftn" href="#foot-3">[3]</a>.  Unfortunately, Greenblatt didn't have any business experience, so other people in the Lisp machine group said they doubted whether he could succeed. They thought that his plan to avoid outside investment wouldn't work.
ja: この会社がどのようであるべきかについて、二つの異なる考えがありました。グリーンブラットは、「ハッカー」会社とかれが呼ぶものを始めたかったのです。これは、ハッカーによって運営される会社で、ハッカーの助けとなる方法で運営されることを意味しました。もう一つの目標は、AIラボの文化&#8239;<a class="ftn" href="#foot-3">[3]</a>を維持することでした。残念ながら、グリーンブラットはビジネスの経験がなく、Lispマシンのグループのほかの人々は、かれが成功できるか疑っていると言いました。かれの外部からの投資を避ける計画はうまく行かないと考えていたのです。

note: type: Content of: <div><p>
en: Why did he want to avoid outside investment? Because when a company has outside investors, they take control and they don't let you have any scruples. And eventually, if you have any scruples, they also replace you as the manager.
ja: なぜ、かれは外部からの投資を避けたかったのでしょう? それは、会社に外部の投資家がいる場合には、かれらがコントロールし、かれらはあなたにいかなる良心のとがめでもためらうことをさせないからです。そして、結局は、なにか良心のとがめがあった場合、かれらがマネージャとしてあなたの代わりとなるでしょう。

note: type: Content of: <div><p>
en: So Greenblatt had the idea that he would find a customer who would pay in advance to buy the parts. They would build machines and deliver them; with profits from those parts, they would then be able to buy parts for a few more machines, sell those and then buy parts for a larger number of machines, and so on. The other people in the group thought that this couldn't possibly work.
ja: ですから、グリーンブラットは、前金で支払う顧客を見つけて、部品を買うという考えでした。そうして、マシンを構築して出荷するのです。その部品の利益で、もっとマシンの部品を買うことができ、また、マシンを売って、そしてもっと多くのマシンのための部品を買う、というようにです。そのグループのほかの人々は、そうは行かないだろうと考えていました。

note: type: Content of: <div><p>
en: Greenblatt then recruited Russell Noftsker, the man who had hired me, who had subsequently left the AI Lab and created a successful company.  Russell was believed to have an aptitude for business. He demonstrated this aptitude for business by saying to the other people in the group, &ldquo;Let's ditch Greenblatt, forget his ideas, and we'll make another company.&rdquo; Stabbing in the back, clearly a real businessman. Those people decided they would form a company called Symbolics. They would get outside investment, not have scruples, and do everything possible to win.
ja: グリーンブラットは、それからラッセル・ノフトスカを採用しました。わたしを雇って、それからAIラボを去り、成功した会社を創設した男です。ラッセルは、ビジネスの才能がある、と考えられていました。かれは、そのビジネスの才能を、そのグループの人々に次のように言うことで、実際に示しました。「グリーンブラットを見捨てて、かれの考えは忘れ、別の会社を作ろう」、と。後ろから斬りかかるとは、まさに、真のビジネスマンです。この人々はシンボリックスと呼ばれる会社を作ることに決めました。外部の資金を受け、良心の呵責を感じることなく、勝利のためには何でもして。

note: type: Content of: <div><p>
en: But Greenblatt didn't give up. He and the few people loyal to him decided to start Lisp Machines Inc. anyway and go ahead with their plans. And what do you know, they succeeded! They got the first customer and were paid in advance. They built machines and sold them, and built more machines and more machines. They actually succeeded even though they didn't have the help of most of the people in the group. Symbolics also got off to a successful start, so you had two competing Lisp machine companies. When Symbolics saw that LMI was not going to fall flat on its face, they started looking for ways to destroy it.
ja: しかし、グリーンブラットはあきらめませんでした。かれとかれに忠実な何人かの人々は、どうであろうとも、リスプ・マシン社(LMI)を開始し、かれらの計画を進めることを決めました。そして、みなさん知ってますか、かれらは成功したのです! 最初の顧客を得て、その顧客は前金で支払ってくれました。マシンを製造して販売し、そしてどんどん多くのマシンを製造しました。実際は、そのグループのほとんどの人々の助力がなかったのに、かれらは成功したのです。シンボリックスも成功のスタートで出発しました。ですから、二つの競争するLispのマシンの会社があったのです。LMIが突っ伏すことがないのをシンボリックスが見たとき、かれらは、LMIを破壊する方策を探し出し始めました。

note: type: Content of: <div><p>
en: Thus, the abandonment of our lab was followed by &ldquo;war&rdquo; in our lab.  The abandonment happened when Symbolics hired away all the hackers, except me and the few who worked at LMI part-time. Then they invoked a rule and eliminated people who worked part-time for MIT, so they had to leave entirely, which left only me. The AI lab was now helpless.  And MIT had made a very foolish arrangement with these two companies.  It was a three-way contract where both companies licensed the use of Lisp machine system sources. These companies were required to let MIT use their changes. But it didn't say in the contract that MIT was entitled to put them into the MIT Lisp machine systems that both companies had licensed. Nobody had envisioned that the AI lab's hacker group would be wiped out, but it was.
ja: ですから、わたしたちのラボの置き去りに続いて、わたしたちのラボの「戦争」となりました。シンボリックスが、わたしとLMIでパートタイムで働く何人かを除いて、すべてのハッカーを雇ってしまったときに、ラボの置き去りが起こったのです。それから、かれらはルールを実施しMITのためにパートタイムで働く人々を除去したので、ハッカーは全面的に去ることになり、わたしだけが残ったのです。AIラボは今や無力でした。そしてMITはとても馬鹿げた協定を二つの会社と行いました。それは三方の契約で、両方の会社が、Lispマシンのシステムのソースの使用を許すものでした。二つの会社は、MITに対し、かれらの変更の使用を許す必要がありました。しかし、契約にはMITが、その変更を、両方の会社が認可したMITのLispマシンのシステムに入れる資格があるかどうかについては述べられていませんでした。誰も、AIラボのハッカーのグループが一掃されるとは想像してませんでしたが、そうなったのです。

note: type: Content of: <div><p>
en: So Symbolics came up with a plan&#8239;<a href="#foot-4">[4]</a>.  They said to the lab, &ldquo;We will continue making our changes to the system available for you to use, but you can't put it into the MIT Lisp machine system. Instead, we'll give you access to Symbolics' Lisp machine system, and you can run it, but that's all you can do.&rdquo;
ja: そうして、シンボリックスはプランを出しました&#8239;<a href="#foot-4">[4]</a>。かれらはラボに言いました。「システムへのわたしたちの変更を使用可能とするように続けます。しかし、その変更をMITLispマシンへ入れることはできません。代わりに、シンボリックスのLispマシン・システムへのアクセスを提供し、実行することができますが、それがわたしたちができることのすべてです。」

note: type: Content of: <div><p>
en: This, in effect, meant that they demanded that we had to choose a side, and use either the MIT version of the system or the Symbolics version.  Whichever choice we made determined which system our improvements went to. If we worked on and improved the Symbolics version, we would be supporting Symbolics alone. If we used and improved the MIT version of the system, we would be doing work available to both companies, but Symbolics saw that we would be supporting LMI because we would be helping them continue to exist. So we were not allowed to be neutral anymore.
ja: これは、実効的に、どちらかの側を選択することを要求するものでした。MIT版のシステムか、シンボリックスの版か、を。どちらかのシステムに決めると、その選択によって、わたしたちの改善が載るシステムが決まります。シンボリックスの版で作業して改善する場合、シンボリックスだけを支持することになります。MITの版のシステムを使って改善すると、両方の会社に利用可能となりますが、LMIが存在し続けるよう助けていることになるので、シンボリックスはそれをLMIを支持しているとみなします。ですから、もはや、中立であることは許されませんでした。

note: type: Content of: <div><p>
en: Up until that point, I hadn't taken the side of either company, although it made me miserable to see what had happened to our community and the software.  But now, Symbolics had forced the issue.  So, in an effort to help keep Lisp Machines Inc. going&#8239;<a href="#foot-5">[5]</a>&mdash;I began duplicating all of the improvements Symbolics had made to the Lisp machine system.  I wrote the equivalent improvements again myself (i.e., the code was my own).
ja: この時点まで、わたしは、どちらの会社の側にも立っていませんでした。わたしたちのコミュニティとソフトウェアに起こったことを見て、惨めでしたが。しかし、今、シンボリックスは問題を押し付けてきました。ですから、リスプ・マシン社(LMI)が続けられるように&#8239;<a href="#foot-5">[5]</a>助ける努力として、わたしは、シンボリックスがそのLispマシン・システムに行ったすべての改善を複製する事を始めました。わたしは、同等の改善を自分自身で再度書いたのです(すなわち、コードはわたし自身のものです)。

note: type: Content of: <div><p>
en: After a while&#8239;<a href="#foot-6">[6]</a>, I came to the conclusion that it would be best if I didn't even look at their code. When they made a beta announcement that gave the release notes, I would see what the features were and then implement them. By the time they had a real release, I did too.
ja: しばらくして&#8239;<a href="#foot-6">[6]</a>、わたしは、かれらのコードを見ないことが最善であろうとの結論に至りました。かれらがベータ版のアナウンスをし、リリースノートを出したときに、わたしは、その機能が何かを見て、そしてそれを実装するのです。実際のリリースが行われるときには、わたしも同じようにリリースしました。

note: type: Content of: <div><p>
en: In this way, for two years, I prevented them from wiping out Lisp Machines Incorporated, and the two companies went on. But, I didn't want to spend years and years punishing someone, just thwarting an evil deed. I figured they had been punished pretty thoroughly because they were stuck with competition that was not leaving or going to disappear&#8239;<a href="#foot-7">[7]</a>.  Meanwhile, it was time to start building a new community to replace the one that their actions and others had wiped out.
ja: このようにして、二年間、わたしはリスプ・マシン社(LMI)が葬り去られるのを阻止し、そして、二つの会社は進みました。しかし、誰かを懲らしめるのに、悪事を妨害するだけで何年も、また何年も費やしたくはありませんでした。わたしは、かれらは、だいぶ、すっかり懲らしめられたと考えました。かれらは競争に行き詰まり、競争相手を去らせたり、消滅させたりできなかったからです&#8239;<a href="#foot-7">[7]</a>。そうして、新しいコミュニティの構築を始める時が来ました。新しいコミュニティは、かれらやほかの人々の行動が一掃してしまったものを置き換えるのです。

note: type: Content of: <div><p>
en: The Lisp community in the 70s was not limited to the MIT AI Lab, and the hackers were not all at MIT. The war that Symbolics started was what wiped out MIT, but there were other events going on then. There were people giving up on cooperation, and together this wiped out the community and there wasn't much left.
ja: 70年代のLispのコミュニティはMITAIラボに限ったものではなく、ハッカーはすべてMITというわけではありませんでした。シンボリックスが始めた戦争は、MITを一掃したものでしたが、当時、進んでいたほかの出来事もありました。協力をあきらめた人々がいて、このコミュニティの一掃と合わせ、多くは残っていませんでした。

note: type: Content of: <div><p>
en: Once I stopped punishing Symbolics, I had to figure out what to do next. I had to make a free operating system, that was clear&mdash;the only way that people could work together and share was with a free operating system.
ja: シンボリックスを懲らしめるのを止めた後、次に何をすべきか考えなければなりませんでした。わたしは、自由なオペレーティング・システムを作る必要がありました。それは明確でした。人々が一緒に働き共有することができる唯一の方法は、自由なオペレーティング・システムによって、だったのです。

note: type: Content of: <div><p>
en: At first, I thought of making a Lisp-based system, but I realized that wouldn't be a good idea technically. To have something like the Lisp machine system, you needed special purpose microcode. That's what made it possible to run programs as fast as other computers would run their programs and still get the benefit of typechecking. Without that, you would be reduced to something like the Lisp compilers for other machines. The programs would be faster, but unstable. Now that's okay if you're running one program on a timesharing system&mdash;if one program crashes, that's not a disaster, that's something your program occasionally does. But that didn't make it good for writing the operating system in, so I rejected the idea of making a system like the Lisp machine.
ja: 最初は、わたしは、Lispベースのシステムを作ることを考えていました。しかし、それは技術的に良い考えではなかろうと考えるに至りました。Lispマシンのようなシステムとするには、特別の目的のマイクロコードを必要とします。それが、ほかのコンピュータで動くのと同じように速くプログラムを実行させ、かつ、型チェックの恩恵を受けることを可能とするのです。それなしでは、ほかのマシンでのLispコンパイラと同じくらいに削減されてしまいます。プログラムは速くなりますが、不安定でしょう。タイムシェアリングのシステムで一つのプログラムを実行する場合には、それは問題ないでしょう。一つのプログラムがクラッシュしても、大きな災害ではありません。それはあなたのプログラムでときどきあることでしょう。しかし、オペレーティング・システムをそれで書くのは適当ではありません。ですから、わたしは、Lispマシンのようなシステムを作るという考えを捨てたのです。

note: type: Content of: <div><p>
en: I decided instead to make a Unix-like operating system that would have Lisp implementations to run as user programs. The kernel wouldn't be written in Lisp, but we'd have Lisp. So the development of that operating system, the GNU operating system, is what led me to write the GNU Emacs. In doing this, I aimed to make the absolute minimal possible Lisp implementation. The size of the programs was a tremendous concern.
ja: そうではなくて、Unixライクなオペレーティング・システムを作ることに決め、ユーザプログラムとしてLispの実装が動かすことにしました。カーネルはLispでは書かれませんが、Lispはあります。そのオペレーティング・システムの開発、GNUオペレーティング・システムですが、これがわたしをGNU Emacsの作成に向かわせたのです。これを行うにあたり、絶対的にありうる最小のLispの実装を作ろうとしました。プログラムのサイズがとても重要な懸念だったからです。

note: type: Content of: <div><p>
en: There were people in those days, in 1985, who had one-megabyte machines without virtual memory. They wanted to be able to use GNU Emacs. This meant I had to keep the program as small as possible.
ja: 当時、1985年、1メガバイトの仮想記憶なしのマシンを持っている人々がいて、GNU Emacsを使いたがりました。これは、プログラムをできるだけ小さく保たなければならないことを意味しました。

note: type: Content of: <div><p>
en: For instance, at the time the only looping construct was <code>while</code>, which was extremely simple. There was no way to break out of the <code>while</code> statement, you just had to do a catch and a throw, or test a variable that ran the loop. That shows how far I was pushing to keep things small. We didn't have <code>caar</code> and <code>cadr</code> and so on; &ldquo;squeeze out everything possible&rdquo; was the spirit of GNU Emacs, the spirit of Emacs Lisp, from the beginning.
ja: たとえば、当時、ループを構成するのは&lsquo;while&rsquo;だけで、とても単純でした。&lsquo;while&rsquo;文から抜け出す方法はなく、catchとthrowとするか、ループを回る変数をテストしなければなりませんでした。これは、わたしが物事を小さく保つためにどれだけ押し込めたかを示します。<code>caar</code>も<code>cadr</code>などもありませんでした。最初から、「できるだけ全部を絞り出す」のがGNU Emacsの精神、Emacs Lispの精神でした。

note: type: Content of: <div><p>
en: Obviously, machines are bigger now, and we don't do it that way any more. We put in <code>caar</code> and <code>cadr</code> and so on, and we might put in another looping construct one of these days. We're willing to extend it some now, but we don't want to extend it to the level of common Lisp. I implemented Common Lisp once on the Lisp machine, and I'm not all that happy with it. One thing I don't like terribly much is keyword arguments&#8239;<a href="#foot-8">[8]</a>.  They don't seem quite Lispy to me; I'll do it sometimes but I minimize the times when I do that.
ja: あきらかに、マシンは今や大きくなり、もはやそのようにわたしたちは行っていません。<code>caar</code>も<code>cadr</code>なども入れました。今日では、もう一つのループ構成も入れるかもしれません。いくばくか拡張したいとは思いますが、Common Lispのレベルまでには拡張したいとは思いません。わたしは、Common LispをLispマシンに一度実装し、それについてすべて幸せというわけではありませんでした。ひとつわたしがあまり好みでなかったのは、キーワード引数です&#8239;<a href="#foot-8">[8]</a>。あれは、わたしにはあまりLispらしくありません。わたしはキーワード引数をたまに使いますが、使うのは最小にします。

note: type: Content of: <div><p>
en: That was not the end of the GNU projects involved with Lisp. Later on around 1995, we were looking into starting a graphical desktop project. It was clear that for the programs on the desktop, we wanted a programming language to write a lot of it in to make it easily extensible, like the editor. The question was what it should be.
ja: これはGNUプロジェクトがLispに関係した最後ではありません。その後、1995年あたりでグラフィカルなデスクトップのプロジェクトを開始しようと考えていました。デスクトップのプログラムには、プログラミング言語があって、たくさんのプログラムを書き、プログラムがエディタのように簡単に拡張可能となるようなもの、を期待していました。問題は、どのようなプログラミング言語であるべきか、です。

note: type: Content of: <div><p>
en: At the time, <abbr title="Tool Command Language">TCL</abbr> was being pushed heavily for this purpose. I had a very low opinion of TCL, basically because it wasn't Lisp. It looks a tiny bit like Lisp, but semantically it isn't, and it's not as clean.  Then someone showed me an ad where Sun was trying to hire somebody to work on TCL to make it the &ldquo;de-facto standard extension language&rdquo; of the world. And I thought, &ldquo;We've got to stop that from happening.&rdquo; So we started to make Scheme the standard extensibility language for GNU. Not Common Lisp, because it was too large. The idea was that we would have a Scheme interpreter designed to be linked into applications in the same way TCL was linked into applications. We would then recommend that as the preferred extensibility package for all GNU programs.
ja: 当時、<abbr title="Tool Command Language">TCL</abbr>がこの目的に強く押されていました。わたしはTCLに対してとても低い評価しかしてませんでした。基本的に、それはLispではないからです。それはLispに似たところがちょっとだけありますが、意味的には違います。また、Lispのようにきれいでもありません。そして、誰かがわたしにSunがTCLを世界の「デファクトの標準拡張言語」とするために誰かを雇おうとしているという広告を見せてくれました。そしてわたしは、「そんなことが起こらないようにしなくては」と考え、GNUの標準拡張言語をSchemeとするよう、開始したのです。それはCommon Lispではありません。なぜならそれは大きすぎるからです。その考えは、TCLがアプリケーションにリンクされるのと同じ方法でアプリケーションにリンクされるよう設計されたSchemeインタプリタを有する、というものです。それから、すべてのGNUプログラムに対して、それを好むべき拡張パッケージとして推奨するのです。

note: type: Content of: <div><p>
en: There's an interesting benefit you can get from using such a powerful language as a version of Lisp as your primary extensibility language.  You can implement other languages by translating them into your primary language. If your primary language is TCL, you can't very easily implement Lisp by translating it into TCL. But if your primary language is Lisp, it's not that hard to implement other things by translating them. Our idea was that if each extensible application supported Scheme, you could write an implementation of TCL or Python or Perl in Scheme that translates that program into Scheme. Then you could load that into any application and customize it in your favorite language and it would work with other customizations as well.
ja: 基本の拡張言語としてLisp系の強力な言語を使うことで、得ることができる興味深い恩恵があります。基本の言語へと翻訳することで、ほかの言語を実装することができるのです。基本言語がTCLの場合、TCLへと翻訳することでは、Lispを簡単には実装できません。しかし、基本言語がLispであれば、翻訳することでほかのことを実装することはそんなに難しいことではありません。わたしたちの考えは、もし、それぞれの拡張可能なアプリケーションがSchemeをサポートするならば、TCLやPythonやPerlの実装をSchemeで書けて、Schemeへとプログラムを翻訳することができる、というものでした。そして、それをどんなアプリケーションにもロードして、望みの言語でカスタマイズできて、ほかのカスタマイズと同じように動作するでしょう。

note: type: Content of: <div><p>
en: As long as the extensibility languages are weak, the users have to use only the language you provided them. Which means that people who love any given language have to compete for the choice of the developers of applications&mdash;saying &ldquo;Please, application developer, put my language into your application, not his language.&rdquo; Then the users get no choices at all&mdash;whichever application they're using comes with one language and they're stuck with [that language]. But when you have a powerful language that can implement others by translating into it, then you give the user a choice of language and we don't have to have a language war anymore. That's what we're hoping Guile, our scheme interpreter, will do. We had a person working last summer finishing up a translator from Python to Scheme. I don't know if it's entirely finished yet, but for anyone interested in this project, please get in touch. So that's the plan we have for the future.
ja: 拡張の言語が弱いと、ユーザは与えられた言語だけを使わなければなりません。ある言語が好きな人々は、アプリケーションの開発者の選択のために競わなければならないことを意味します。「アプリケーション開発者の方、お願いです、わたしの言語をアプリケーションに入れてください、かれの言語ではなくて」、と。そうして、ユーザには選択の余地が全くないのです。どのアプリケーションを使っていたとしても、それがある言語とともに来て、[その言語に] 縛り付けられるのです。しかし、強力な言語を有すれば、それでほかの言語を翻訳することにより、ユーザに言語の選択を与えて言語の争いはもはや必要なくなるでしょう。これが、わたしたちのschemeインタプリタ&lsquo;Guile&rsquo;に、わたしたちが望むことです。PythonからSchemeへの翻訳器を完成させる作業をする人が昨夏いました。完全に終了したのかどうか分かってないのですが、このプロジェクトに感心がある方は、どうぞ連絡ください。これが未来のためにわたしたちが考えている計画です。

note: type: Content of: <div><p>
en: I haven't been speaking about free software, but let me briefly tell you a little bit about what that means. Free software does not refer to price; it doesn't mean that you get it for free. (You may have paid for a copy, or gotten a copy gratis.) It means that you have freedom as a user. The crucial thing is that you are free to run the program, free to study what it does, free to change it to suit your needs, free to redistribute the copies of others and free to publish improved, extended versions. This is what free software means. If you are using a nonfree program, you have lost crucial freedom, so don't ever do that.
ja: まだ、自由ソフトウェアについて話していませんが、それが何を意味するかについて少し、簡単に話させてください。自由ソフトウェアは値段を意味しません。無料で入手できることを意味しません。(コピーに支払うこともありますし、無料でコピーを手にすることもあります。) それは、ユーザとして自由があることを意味します。重要なことは、プログラムを実行するに自由であること、それが何をしているか研究するに自由であること、必要に合わせて変更するに自由であること、コピーをほかの人に配布するのに自由であること、改善された拡張版を発表するに自由であること、です。これが、自由ソフトウェアが意味することです。不自由なプログラムを使う場合、重要な自由を失います。ですから、決して、そうしないでください。

note: type: Content of: <div><p>
en: The purpose of the GNU project is to make it easier for people to reject freedom-trampling, user-dominating, nonfree software by providing free software to replace it. For those who don't have the moral courage to reject the nonfree software, when that means some practical inconvenience, what we try to do is give a free alternative so that you can move to freedom with less of a mess and less of a sacrifice in practical terms. The less sacrifice the better. We want to make it easier for you to live in freedom, to cooperate.
ja: GNUプロジェクトの目的は、自由なソフトウェアを提供することによって、自由を鎮圧しユーザを支配する不自由なソフトウェアを、人々が拒絶するのを容易にし、置き換えられるようにすることです。不自由なソフトウェアを拒絶する剛直さを持たない人々にとって、それが現実の不便を意味するとき、わたしたちが為そうとするのは、実際面で、少ないめんどう、少ない犠牲で移行できるように、自由な代替を与えることです。より少ない犠牲がよりよいものです。あなた方が、自由とともに暮らすのを容易とし、協力できるようにしたいと願っています。

note: type: Content of: <div><p>
en: This is a matter of the freedom to cooperate. We're used to thinking of freedom and cooperation with society as if they are opposites. But here they're on the same side. With free software you are free to cooperate with other people as well as free to help yourself. With nonfree software, somebody is dominating you and keeping people divided. You're not allowed to share with them, you're not free to cooperate or help society, anymore than you're free to help yourself.  Divided and helpless is the state of users using nonfree software.
ja: これは協力する自由の問題です。かつてわれわれは自由と社会との協力を、それが反するものであるかのように考えてきましたが、ここでは同じ側にあります。自由ソフトウェアで、あなたは、自分自身を助ける自由と同じく、ほかの人々と協力する自由があります。不自由なソフトウェアでは、誰かがあなたを支配し、人々をバラバラのままとします。あなたが自分自身を助けるのに自由である以上には、あなたはかれらと共有することを許されず、協力する、あるいは社会を助けるのに自由ではありません。バラバラにされ助けがないのが、不自由なソフトウェアを使うユーザの状態です。

note: type: Content of: <div><p>
en: We've produced a tremendous range of free software. We've done what people said we could never do; we have two operating systems of free software. We have many applications and we obviously have a lot farther to go. So we need your help. I would like to ask you to volunteer for the GNU project; help us develop free software for more jobs. Take a look at <a href="/help/help.html">gnu.org/help</a> to find suggestions for how to help. If you want to order things, there's a link to that from the home page. If you want to read about philosophical issues, look in /philosophy. If you're looking for free software to use, look in /directory, which lists about 1900 packages now (which is a fraction of all the free software out there). Please write more and contribute to us. My book of essays, &ldquo;Free Software and Free Society,&rdquo; is on sale and can be purchased at www.gnu.org&#8239;<a href="#foot-9">[9]</a>.  Happy hacking!
ja: わたしたちは、とてつもなく広範囲の自由ソフトウェアを製作してきました。できっこないと人々が言ったことをわたしたちは行いました。自由ソフトウェアの二つのオペレーティング・システムを有しています。たくさんのアプリケーションを有しますが、あきらかに、もっと先へと道は続きます。ですから、あなた方の助けが必要です。GNUプロジェクトのためにボランティアをしてくださるよう、お願いします。もっとたくさんの仕事のための自由ソフトウェアを開発するのを手伝ってください。<a 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>。どうか、幸福なハッキングを!

note: type: Content of: <div><h3>
en: Footnotes
ja: 脚注

note: type: Content of: <div><ol><li>
en: Guy Steele designed the original symmetrical Emacs command set; then he and I began implementing Emacs (on top of TECO), but after one long joint development session, Steele began drifting away, so I finished Emacs.  Others particularly including Eugene C. Cicciarelli and Mike McMahon contributed substantially later on.
ja: ガイ・スティールはオリジナルの対称的なEmacsのコマンドセットをデザインし、それから、かれとわたしは、(TECOの上に)Emacsの実装を始めました。しかし、一回の長い共同の開発セッションの後、スティールとは疎遠になりはじめ、わたしがEmacsを完成させました。ほかの人々も、特に、ユジーン・C・チェッカレリとマイク・マクマホンもその後、重要な貢献をしました。

note: type: Content of: <div><ol><li>
en: Bernie Greenberg says that Dan Weinreb's implementation of Emacs for the Lisp Machine came before Greenberg's implementation for Multics.  I apologize for the mistake.
ja: バーニー・グリーンバーグは、ダン・ワインレブのLispマシンのEmacsの実装は、グリーンバーグのMulticsの実装より前に出たと言っています。わたしは、この間違いを謝ります。

note: type: Content of: <div><ol><li>
en: Greenblatt's plan, as I understood it, was to hire lab people part time, so that they could continue working at the AI Lab.  Symbolics hired them full time instead, so they stopped working at MIT.
ja: グリーンブラットの計画は、わたしがそれを知る限り、ラボの人々がAIラボで働きつづけられるようにパートタイムで雇う、というものでした。シンボリックスは、そうではなく、ラボの人々をフルタイムで雇いました。かれらはMITで働くことを止めたのです。

note: type: Content of: <div><ol><li>
en: The background of this plan, which I did not state explicitly in the talk, is that during an initial period the ex-AI-Lab hackers, whether at Symbolics or LMI, continued contributing their changes to the MIT Lisp Machine system&mdash;even though the contract did not require this.  Symbolics' plan was to rupture this cooperation unilaterally.
ja: このプランの背景には、講演では明示的に述べませんでしたが、元AIラボのハッカーの初期の段階では、シンボリックスあるいはLMIでも、MIT Lisp マシンのシステムに、かれらの変更を貢献し続けた、ということがあります(契約はそれを要請してなかったにも関わらず)。シンボリックスのプランはこの協力を一方的に決裂させるものでした。

note: type: Content of: <div><ol><li>
en: It was not that I cared particularly about the fate of LMI, but rather I did not want to let Symbolics gain through its aggression against the AI Lab.
ja: LMIの運命に特に関心があったのではなくて、むしろ、シンボリックスが、AIラボに対する侵略を通じて得をするのを止めさせたかったのです。

note: type: Content of: <div><ol><li>
en: This statement has been misconstrued as saying that I never, ever looked at Symbolics' code.  Actually it says I did look, at first.  The Symbolics source code was available at MIT, where I was entitled to read it, and at first that's how I found out about their changes.
ja: この文章は、あたかもわたしがシンボリックスのコードを一切、見なかったかのように、悪い意味で取られてしまいました。実際には、それは、最初はわたしは見た、と言っています。シンボリックスのソースコードはMITで利用可能で、わたしは読む資格がありました。そして、最初は、それがシンボリックスの変更を知る方法でした。

note: type: Content of: <div><ol><li><p>
en: But that meant I had to make a special effort to solve each problem differently, in order to avoid copying Symbolics code.  After a while, I concluded it was better not to even look.  That way I could write code in whatever way was best, without concern for what might be in Symbolics' code.
ja: しかし、それは、シンボリックスのコードをコピーすることを避けるために、わたしがそれぞれの問題を異なった方法で解決するのに特別な努力をしなければならないことを意味しました。しばらくして、むしろ見ない方が良い、と結論しました。その方法で、シンボリックスのコードではどうなっているかの懸念なく、一番良い方法でコードを書くことができました。

note: type: Content of: <div><ol><li>
en: Symbolics at one point protested to MIT that my work, by thwarting their plan, had cost Symbolics a million dollars.
ja: シンボリックスは、ある時点でMITに主張しました。わたしの仕事は、かれらの計画を妨害することにより、シンボリクスに百万ドルのコストがかかった、と。

note: type: Content of: <div><ol><li>
en: I don't mind if a very complex and heavyweight function takes keyword arguments.  What bothers me is making simple basic functions such as &ldquo;member&rdquo; use them.
ja: とても複雑で重い関数がキーワード引数を取るのは気にしません。気になるのは、&ldquo;member&rdquo;のような単純な基本関数でキーワード引数を使うようにすることです。

note: type: Content of: <div><ol><li>
en: In 2021, this book can be purchased from <a href="https://shop.fsf.org/books-docs/free-software-free-society-selected-essays-richard-m-stallman-3rd-edition"> GNU Press</a>.
ja: 2021年、この本は<a href="https://shop.fsf.org/books-docs/free-software-free-society-selected-essays-richard-m-stallman-3rd-edition">GNU出版</a>から購入できます。

note: type: Content of: <div><div><p>
en: Please send general FSF &amp; GNU inquiries to <a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.  There are also <a href="/contact/">other ways to contact</a> the FSF.  Broken links and other corrections or suggestions can be sent to <a href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.
ja: FSFおよびGNUに関する問い合わせは<a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>までお願いします(英語)。FSFへの連絡は<a href="/contact/">他の方法</a>もあります。リンク切れや他の修正、提案は<a href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>までお送りください。

note: TRANSLATORS: Ignore the original text in this paragraph, replace it with the translation of these two: We work hard and do our best to provide accurate, good quality translations.  However, we are not exempt from imperfection. Please send your comments and general suggestions in this regard to <a hr
en: Please see the <a href="/server/standards/README.translations.html">Translations README</a> for information on coordinating and contributing translations of this article.
ja: 正確で良い品質の翻訳を提供するよう努力していますが、不完全な場合もあるかと思います。翻訳に関するコメントと提案は、<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>をご覧ください。

note: type: Content of: <div><p>
en: This page is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/">Creative Commons Attribution-NoDerivatives 4.0 International License</a>.
ja: このページは<a rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/deed.ja">Creative Commons Attribution-NoDerivatives 4.0 International License</a>の条件で許諾されます。

note: timestamp start type: Content of: <div><p>
en: Updated:
ja: 最終更新:
