[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
www/gnu po/rms-lisp.translist po/rms-lisp.zh-cn...
From: |
GNUN |
Subject: |
www/gnu po/rms-lisp.translist po/rms-lisp.zh-cn... |
Date: |
Mon, 30 Jul 2018 03:32:30 -0400 (EDT) |
CVSROOT: /web/www
Module name: www
Changes by: GNUN <gnun> 18/07/30 03:32:29
Modified files:
gnu/po : rms-lisp.translist rms-lisp.zh-cn.po
Added files:
gnu : rms-lisp.zh-cn.html
gnu/po : rms-lisp.zh-cn-en.html
Log message:
Automatic update by GNUnited Nations.
CVSWeb URLs:
http://web.cvs.savannah.gnu.org/viewcvs/www/gnu/rms-lisp.zh-cn.html?cvsroot=www&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/www/gnu/po/rms-lisp.translist?cvsroot=www&r1=1.15&r2=1.16
http://web.cvs.savannah.gnu.org/viewcvs/www/gnu/po/rms-lisp.zh-cn.po?cvsroot=www&r1=1.1&r2=1.2
http://web.cvs.savannah.gnu.org/viewcvs/www/gnu/po/rms-lisp.zh-cn-en.html?cvsroot=www&rev=1.1
Patches:
Index: po/rms-lisp.translist
===================================================================
RCS file: /web/www/www/gnu/po/rms-lisp.translist,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- po/rms-lisp.translist 4 Aug 2016 13:59:12 -0000 1.15
+++ po/rms-lisp.translist 30 Jul 2018 07:32:29 -0000 1.16
@@ -9,6 +9,7 @@
<span dir="ltr"><a lang="ru" hreflang="ru"
href="/gnu/rms-lisp.ru.html">ÑÑÑÑкий</a> [ru]</span>
<span dir="ltr"><a lang="sq" hreflang="sq"
href="/gnu/rms-lisp.sq.html">Shqip</a> [sq]</span>
<span dir="ltr"><a lang="uk" hreflang="uk"
href="/gnu/rms-lisp.uk.html">ÑкÑаÑнÑÑка</a> [uk]</span>
+<span dir="ltr"><a lang="zh-cn" hreflang="zh-cn"
href="/gnu/rms-lisp.zh-cn.html">ç®ä½ä¸æ</a> [zh-cn]</span>
</p>
</div>' -->
<link rel="alternate" type="text/html" href="/gnu/rms-lisp.html"
hreflang="x-default" />
@@ -19,4 +20,5 @@
<link rel="alternate" type="text/html" lang="ru" hreflang="ru"
href="/gnu/rms-lisp.ru.html" title="ÑÑÑÑкий" />
<link rel="alternate" type="text/html" lang="sq" hreflang="sq"
href="/gnu/rms-lisp.sq.html" title="Shqip" />
<link rel="alternate" type="text/html" lang="uk" hreflang="uk"
href="/gnu/rms-lisp.uk.html" title="ÑкÑаÑнÑÑка" />
+<link rel="alternate" type="text/html" lang="zh-cn" hreflang="zh-cn"
href="/gnu/rms-lisp.zh-cn.html" title="ç®ä½ä¸æ" />
<!-- end translist file -->
Index: po/rms-lisp.zh-cn.po
===================================================================
RCS file: /web/www/www/gnu/po/rms-lisp.zh-cn.po,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- po/rms-lisp.zh-cn.po 30 Jul 2018 07:14:51 -0000 1.1
+++ po/rms-lisp.zh-cn.po 30 Jul 2018 07:32:29 -0000 1.2
@@ -571,15 +571,15 @@
"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 <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."
+"competition that was not leaving or going to disappear <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."
msgstr ""
"å¦æ¤è¿æ ·ï¼æ两年çæ¶é´ï¼æé»æ¢ä»ä»¬æLisp Machineså
¬å¸æ¶çï¼è¿ä¸¤ä¸ªå
¬å¸åæ¶å"
"å¨ãä½æ¯ï¼æä¸æ³è¿æ ·å¹´å¤ä¸å¹´å°æ©ç½ä¸ä¸ªäººï¼ä»
ä»
åªæ¯é»æ ä¸æ¡©ç½ªæ¶ãæè§å¾ä»ä»¬å·²"
-"ç»åå°äºå½»åºçæ©ç½ï¼å 为ä»ä»¬é·å
¥äºæ
æ³æè±çç«äºæ¼©æ¶¡ä¹ä¸<a href="
-"\"#foot-7\">(7)</a>ãä¸æ¤åæ¶ï¼æ¯æ¶ååå¼å§å建ä¸ä¸ªæ°ç社åºæ¥ä»£æ¿é£ä¸ªè¢«ä»ä»¬ä»¥"
-"åå
¶ä»äººæ¯çç社åºäºã"
+"ç»åå°äºå½»åºçæ©ç½ï¼å 为ä»ä»¬é·å
¥äºæ
æ³æè±çç«äºæ¼©æ¶¡ä¹ä¸<a href=\"#foot-7\">"
+"(7)</a>ãä¸æ¤åæ¶ï¼æ¯æ¶ååå¼å§å建ä¸ä¸ªæ°ç社åºæ¥ä»£æ¿é£ä¸ªè¢«ä»ä»¬ä»¥åå
¶ä»äººæ¯ç"
+"ç社åºäºã"
#. type: Content of: <p>
msgid ""
Index: rms-lisp.zh-cn.html
===================================================================
RCS file: rms-lisp.zh-cn.html
diff -N rms-lisp.zh-cn.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ rms-lisp.zh-cn.html 30 Jul 2018 07:32:28 -0000 1.1
@@ -0,0 +1,241 @@
+<!--#set var="ENGLISH_PAGE" value="/gnu/rms-lisp.en.html" -->
+
+<!--#include virtual="/server/header.zh-cn.html" -->
+<!-- Parent-Version: 1.77 -->
+
+<!-- This file is automatically generated by GNUnited Nations! -->
+<title>æçLispç»éªåGNU Emacsçå¼å - GNUå·¥ç¨ -
èªç±è½¯ä»¶åºéä¼</title>
+
+<!--#include virtual="/gnu/po/rms-lisp.translist" -->
+<!--#include virtual="/server/banner.zh-cn.html" -->
+<h2>æçLispç»éªåGNU Emacsçå¼å</h2>
+
+<blockquote><p>ï¼Richard Stallmanå¨å½é
Lisp大ä¼ä¸çè°è¯è®°å½ï¼2002å¹´10æ28æ¥ï¼</p></blockquote>
+
+<p>ç±äºæé常çæ¼è®²é½åLispæ å
³ï¼æä»å¤©è®²å®ä»¬ä¸åéãæ以æå°ä¸å¾ä¸å³å
´åæ¥ãæçèä¸ç涯åäºå¤ªå¤Lispç¸å
³çå·¥ä½ï¼å
æ¤æè¿æ¯å¯ä»¥è®²ä¸äºæ趣çäºæ
çã</p>
+
+<p>æææ©å
³äºLispçç»åæ¯å¨é«ä¸æ¶è¯»äºLisp
+1.5çæåãå
¶ä¸çææ³è®©æèæ´å¤§å¼ï¼æä¹è¿æè¿æ
·ç计ç®æºè¯è¨ï¼æ第ä¸æ¬¡ææºä¼åLispç¸å
³çå·¥ä½æ¯å¨å½åä½æ°ççæ¶åï¼æ为<abbr
+title="Programmed Data
+Processor">PDP</abbr>-11å¤çå¨ç¼åäºä¸ä¸ªLisp解éå¨ãé£æ¯ä¸ä¸ªé常å°çæºå¨—大æ¦åªæ8kçå
å—æ设æ³ç¨1000æ¡ä»¥å
çæ令ç¼åäºé£ä¸ªè§£éå¨ãè¿æ
·æè¿æä¸ç¹æ°æ®ç©ºé´ãè¿æ¯å¨æçå°çæ£åç³»ç»å·¥ä½ç软件ä¹åã</p>
+
+<p>å½æå¨<abbr title="Massachusetts Institute of
+Technologyï¼éº»ççå·¥å¦é¢">MIT</abbr>å¼å§å·¥ä½æ¶ï¼æåJonL
+Whiteä¸èµ·çæ£å¼å§å®ç°Lispè¯è¨ãæä¸æ¯è¢«JonLï¼èæ¯è¢«Russ
+Noftskeræå°äººå·¥æºè½å®éªå®¤çï¼è¿ä¸ç¹æ讽åºï¼æ³æ³æ¥ä¸æ¥åçç亗ä»ä¸å®ççåææé£ä¸å¤©äºã</p>
+
+<p>å¨1970年代ï¼æççæ´»è¿æ²¡æ被æ人çäºä»¶æ¿æ²»åä¹åï¼æåªæ¯ä¸æå°ä¸ä¸ªæ¥ä¸ä¸ªå°ä¸ºåç§ç¨åºæ·»å
æ©å±ï¼å
¶ä¸å¤æ°åLispæ å
³ãä¸è¿ï¼å
¶é´ï¼æåäºä¸ä¸ªææ¬ç¼è¾å¨ï¼å«EmacsãEmacsçæ趣ä¹å¤å¨äºå®æä¸ä¸ªç¼ç¨è¯è¨ï¼ç¨æ·çç¼è¾å½ä»¤å¯ä»¥ç¨è¿ä¸ªè§£éæ§è¯è¨ç¼åï¼è¿æ
·ä½ å°±å¯ä»¥å¨ç¼è¾æ¶å è½½æ°çç¼è¾å½ä»¤ãä½ å¯ä»¥ä¿®æ¹ä½
æ£å¨ç¨çç¼è¾ç¨åºå¹¶ä¸ç»§ç»ç¼è¾ãè¿æ
·ï¼æ们就æäºä¸ä¸ªé¤äºç¼ç¨è¿å¯åå
¶ä»æç¨ä¹äºçç³»ç»ï¼èä¸ä½
å¨ä½¿ç¨æ¶è¿å¯ä»¥å¯¹å®è¿è¡ç¼ç¨ãæä¸ç¥éEmacsæ¯ä¸æ¯ç¬¬ä¸ä¸ªè¿æ
ፌᴌ
·ï¼ä½æ¯ä½ä¸ºç¼è¾å¨å®ç¡®å®æ¯ç¬¬ä¸ä¸ªã</p>
+
+<p>è¿ç§æé
åºå¤§ãå¤æçç¨åºä½ä¸ºèªå·±çç¼è¾å¨ï¼ç¶åååå
¶ä»äººäº¤æ¢çç²¾ç¥æ£æ¯æ们å½æ¶å¨äººå·¥æºè½å®éªå®¤æ¥æçã驱å¨èªç±åä½ç²¾ç¥çå¨åãå®çææ³å°±æ¯ä½
å¯ä»¥æä½
æ¥æçç¨åºçæ·è´ååç»æ³è¦ç人ãæ们åä»»ä½æ³è¦ç人å享ï¼å®ä»¬æ¯äººç±»çç¥è¯ãæ以尽管æ们å享软件çæ¹å¼å设计Emacsä¹é´å¹¶ä¸åå¨æç»ç»çæ¿æ²»å
³èï¼æä»ç¶ç¡®ä¿¡å®ä»¬æèç³»ï¼ä¹è®¸æ¯ä¸èªè§çèç³»ãæ认为æ£æ¯æ们å¨äººå·¥æºè½å®éªå®¤çæ´»æ¹å¼çå±æ§å¯¼è´äºEmacsçè¯ç并使ä¹åå±ã</p>
+
+<p>æåçEmacsä¸å¸¦Lispãå
¶åºå±è¯è¨ãä¸ä¸ªé解éæ§è¯è¨—æ¯<abbr>PDP</abbr>-10æ±ç¼è¯è¨ãæ们ç¼åç解éå¨å®é
ä¸ä¸æ¯ä¸ºEmacsåçï¼å®æ¯ä¸º<acronym
+title="Text Editor and
+COrrector">TECO</acronym>ç¼åçãTECOæ¯æ们çææ¬ç¼è¾å¨ï¼ä¹æ¯ä¸ä¸ªæå
¶ä¸éçç¼ç¨è¯è¨ï¼è½æå¤ä¸éå°±æå¤ä¸éãå
¶åå
æ¯å®æ¬æ¥å°±ä¸æ¯ä½ä¸ºç¼ç¨è¯è¨è®¾è®¡çï¼å®æ¯ä½ä¸ºç¼è¾å¨åå½ä»¤è¯è¨è®¾è®¡çãæ¯å¦ï¼å½ä»¤‘5l’ææ毑移å¨5è¡’ï¼æè
稑i’å ä¸ä¸ä¸ªå符串ï¼åå ä¸ESCæé®æ¥æå
¥è¯¥å符串ãä½ å¯ä»¥è¾å
¥ä»£è¡¨ä¸ç³»åå½ä»¤çå符串ï¼è¿å«å½ä»¤å符串ãä½ å¯ä»¥ç¨ESC
+ESCåç»å°¾ï¼è¿æ ·è¯¥ä¸²å½ä»¤å°±æ§è¡äºã</p>
+
+<p>ä¸è¿ï¼äººä»¬æ³è¦æ©å±è¯¥è¯è¨ä½¿ä¹å¸¦ä¸ç¼ç¨è½åï¼æ以人们就添å
äºä¸äºåè½ãä¾å¦ï¼ææ©æ·»å çå°±æ循ç¯ç»æï¼å°±æ¯<
+>ãä½
æä¸è¥¿æ¾å¨è¿ä¸¤ä¸ªç¬¦å·ä¹é´ï¼å®ä»¬å°±å¾ªç¯äºãè¿æä¸äºæ¦æ¶©çå½ä»¤ç¨æ¥å®ä¹éåºå¾ªç¯çæ¡ä»¶ã为äºæé
Emacsï¼æ们<a
+href="#foot-1">(1)</a>æ·»å
äºå¯ä»¥å建带å称åå½æ°çåè½ãå¨æ¤ä¹åï¼æç¹åBasicè¯è¨ï¼åå½æ°åªè½æä¸ä¸ªåæ¯çå称ãè¿å¯¹ç¼å大åç¨åºæ¥è¯´æç¹é¾ï¼æ以æ们就添å
äºé¿æ件ååè½ãå®é
ä¸ï¼è¿æä¸äºç¸å½å¤æçåè½ï¼æ认为Lispçunwind-protectåè½å°±æ¥èª<acronym>TECO</acronym>ã</p>
+
+<p>æ们å¼å§æ·»å
ä¸äºç¸å½å¤æçåè½ï¼é½æ¯ç¨æ们æç¥çé£ä¸ªæä¸éçè¯æ³å®æçï¼èå®æ¯å¯è¡ç—人们ç»ç©¶è½å¤ä½¿ç¨å®æ¥å®æ大åç¨åºãè¿éï¼ææ¾çæè®å°±æ¯ä½¿ç¨è¯¸å¦<acronym>TECO</acronym>è¿æ
·ä¸æ¯ä¸ºç¼ç¨è®¾è®¡çè¯è¨æ¯ä¸ä¸ªé误ãæ建æ©å±çè¯è¨ä¸è½æ¯äºååæ³çç¼ç¨è¯è¨ï¼å®åºè¯¥æç
§ç¼ç¨è¯è¨æ¥è®¾è®¡ãäºå®ä¸ï¼æ们åç°Lispæ¯åè¿ä»¶äºçæä½³è¯è¨ã</p>
+
+<p>Bernie Greenbergæ¯æ¤äºçåç°è
<a
href="#foot-2">(2)</a>ãä»ç¨Multics
+MacLispåäºä¸ä¸ªEmacsï¼èä¸ä»ä½¿ç¨MacLispç¼åå½ä»¤çæ¹å¼ç´æªäºå½ãè¿ä¸ªç¼è¾å¨æ¬èº«å®å
¨æ¯ç¨Lispç¼åçãMultics
+Emacsæ¯ä¸ä¸ªå·¨å¤§çæå—ç¼åæ°çç¼è¾å½ä»¤æ¯å¦æ¤çæ¹ä¾¿ï¼ä»¥è³äºä»åå
¬å®¤éçç§ä¹¦ä»¬é½å¼å§å¦ä¹
æä¹ç¨äºãä»ä»¬ä½¿ç¨çæ¯ä¸ä¸ªä»ç»å¦ä½æ©å±Emacsçæåï¼æåé没说è¿å°±æ¯ç¼ç¨ãå
æ¤ï¼ç§ä¹¦ä»¬å¹¶ä¸è®¤ä¸ºä»ä»¬å¨ç¼ç¨ï¼ä¹å°±æ²¡è¢«åè·ãä»ä»¬é
读æåï¼åç°èªå·±ä¹å¯ä»¥åä¸å°æç¨çäºï¼ä»ä»¬å¦ä¼äºç¼ç¨ã</p>
+
+<p>è¿æ ·ï¼Bernieçå°ä¸ä¸ªåºç¨ç¨åº—为ä½
å®æä»»å¡çç¨åº—å¦æå
ç½®äºLispï¼å¹¶ä¸äººä»¬å¯ä»¥ç¼åLispç¨åºæ¥æ©å±è¯¥åºç¨ç¨åºï¼é£ä¹å®å®é
ä¸å°±æ¯äººä»¬å¦ä¹
ç¼ç¨çä¸ä¸ªå¥½æ¹æ³ãè¿ç»äºäººä»¬ç¼åå®ç¨å°ç¨åºçæºä¼ï¼èè¿å¨å¤æ°å
¶ä»åºåæ¯ä¸å¯è½çã人们被èªå·±çå®ç¨ç¨åºé¼å±ç—å°±å¨æå°é¾çé¶æ®µ—å°±å¨ä»ä»¬ä¸ç¸ä¿¡èªå·±å¯ä»¥ç¼ç¨çæ¶åï¼ç´å°ä»ä»¬æåæ为ç¨åºåã</p>
+
+<p>æ¤æ¶ï¼äººä»¬å¼å§æèä»ä»¬è¦ææ ·å¨ä¸ä¸ªå¹¶æ²¡æå
¨é¨Lispæ¯æçå¹³å°ä¸åå°è¿ä¸åãMultics
+MacLispæ¢æç¼è¯å¨ï¼ä¹æ解é娗å®æ¯ä¸ä¸ªå®æ´çLisp系绗ä½æ¯äººä»¬æ³è¦çæ¯å¨å
¶ä»æ²¡æLispç¼è¯å¨çç³»ç»ä¸å®ç°ç±»ä¼¼çä¸è¥¿ãä¸è¿ï¼å¦æä½
没æLispç¼è¯å¨ï¼ä½ æ
æ³ç¨Lispç¼åæ´ä¸ªç¼è¾å¨—å¦æåªè½è¿è¡è§£éå¨çè¯ï¼å®å¤ªæ
¢äºï¼å°¤å
¶æ¯æ¾ç¤ºå·æ°ãå æ¤æ们å¼åäºä¸é¡¹æ··åææ¯ãå
¶ææ³æ¯åä¸ä¸ªLisp解éå¨åç¼è¾å¨çåºå±é¨åï¼æä»ä»¬ç»åå¨ä¸èµ·ï¼è¿æ
·ç¼è¾å¨å°±å
ç½®äºLispåè½ãè¿äºå°±æ¯æ们éè¦ä¼åçé¨åãè¿é¡¹ææ¯æ¯æ们已ç»å¨åå§çEmacsä¸ææè¯å°å®è·µäºçææ¯ï¼å
为æ们ç¨æºå¨è¯è¨éæ°ç¼åäºæäºç¸å½ä¸å±çåè½ï¼å¹¶ä¸æå®ä»¬ä½ä¸º<acronym>TECO</acronym>çåºæ¬å½ä»¤ãæ¯å¦ï¼<acronym>TECO</acronym>æä¸ä¸ªå¡«å
段è½çåºæ¬å½ä»¤ï¼å®é
ä¸ï¼æ¯å®æå¡«å
段è½ç大å¤æ°å·¥ä½ï¼å 为å
¶ä¸ä¸äºä¸èæ¶çå·¥ä½å¯ä»¥å¨ä¸å±ç±ä¸ä¸ª<acronym>TECO</acronym>ç¨åºæ¥å®æï¼ãä½
å¯ä
»¥ç¼åä¸ä¸ª<acronym>TECO</acronym>ç¨åºæ¥å®ææ´ä¸ªä»»å¡ï¼ä½æ¯å®å¤ªæ
¢äºï¼æ以æ们对å
¶é¨å使ç¨äºæºå¨è¯è¨ååºä¼åãå¨æ¤ï¼ææ··åææ¯ï¼ï¼ç¼è¾å¨çç»å¤§é¨åæ¯ç¨Lispç¼åçï¼ä½æ¯é£äºéè¦é常快éè¿è¡çé¨åæ¯ç¨åºå±è¯è¨åçã</p>
+
+<p>å æ¤ï¼å½æç¼å第äºçEmacsæ¶ï¼æéç¨äºåæ
·ç设计ãåºå±çè¯è¨ä¸åæ¯æºå¨è¯è¨ï¼èæ¯Cãå°±ç¼åè¿è¡å¨ç±»Unixç³»ç»ä¸çå¯ç§»æ¤ç¨åºæ¥è¯´ï¼Cæ¯ä¸ä¸ªä¼ç§çãé«æçè¯è¨ãè½ç¶æä¸ä¸ªLisp解éå¨ï¼ä½æ¯æç´æ¥ç¨Cå®ç°äºä¸äºç¹å®çç¼è¾å轗管çç¼è¾å¨çç¼åãæå
¥èµ·å§ææ¬ã读åæ件ãå·æ°å±å¹æ¾ç¤ºä»¥å管çç¼è¾çªå£ã</p>
+
+<p>å½æ¶ï¼å®ä¸åæ¯ç¬¬ä¸ä¸ªç¨Cç¼å并è¿è¡å¨Unixä¸çEmacsäºã第ä¸ä¸ªæ¯ç±James
+Goslingå®æçï¼å°±æ¯GosMacsãä»æäºå¥æªãä¸å¼å§ï¼ä»çæ¥è¿æ¯åå°äºåå§Emacsçåä½åå享精ç¥çå½±åãæé¦å
å¨<abbr>MIT</abbr>å人们åå¸äºEmacsãæ人æ³è¦æå®ç§»æ¤å°Twenex系绗å®æååªè¿è¡å¨æ们å¨<abbr>MIT</abbr>使ç¨çä¸å
¼å®¹åæ¶ç³»ç»ä¸ã人们æå®ç§»æ¤å°äºTwenexä¸ï¼è¿æå³çä¸çä¸å¯è½ææ°ç¾ä¸ªè®¾å¤å¯ä»¥å®è£
该Emacsãæ们å¼å§åå¸è¯¥çæ¬ï¼åè¡éµå¾ªçæ¯“ä½ å¿
é¡»ååææçæ¹è¿”è¿æ
·å¤§å®¶é½åçã没æ人ä¼å»æ强è°è¿ä¸ªè§åï¼ä½æ¯å°±ææç¥äººä»¬é½æ¯åä½çã</p>
+
+<p>Goslingä¸å¼å§ï¼çç¡®çèµ·æ¥æ¯ä»¥è¿æ
·çç²¾ç¥åä¸çãä»å¨ä¸ä¸ªä½¿ç¨æåé称æ¤ç¨åºä¸ºEmacsï¼å¸æ社åºè½å¤æ¹åä¹ï¼ä½¿ä¹é
å¾ä¸è¿ä¸ªååãè¿æ¯åä¸ç¤¾åºçæ£ç¡®æ¹å¼—请大家åä¸å¹¶ä½¿ç¨åºæ´å¥½ãä½æ¯å¨æ¤ä¹åï¼ä»ä¼¼ä¹æ¹åäºæ度ï¼å¹¶æç¨åºåç»äºä¸ä¸ªå
¬å¸ã</p>
+
+<p>é£æ¶ï¼ææ£å¨ä¸ºGNUç³»ç»èå¿ç¢ï¼ä¸ä¸ªç±»ä¼¼Unixçèªç±è½¯ä»¶æä½ç³»ç»ï¼è®¸å¤äººé误å°ç§°ä¹ä¸º“Linux”ï¼ãé£æ¶å¹¶æ²¡æè·å¨Unixä¸çèªç±è½¯ä»¶ççEmacsç¼è¾å¨ãä¸è¿ï¼ææä¸ä¸ªåä¸äºGoslingçEmacså¼åçæåãGoslingéè¿é®ä»¶ç»äºä»åå¸èªå·±çæ¬ç许å¯ãä»å»ºè®®æ使ç¨ä»ççæ¬ãç¶åï¼æåç°GoslingçEmacs带çä¸æ¯ççLispãå®å¸¦çç¼ç¨è¯è¨æ¯‘mocklisp’ï¼å
¶è¯æ³çèµ·æ¥åæ¯Lispï¼ä½æ¯æ²¡æLispçæ°æ®ç»æãæ以å
¶ç¨åºä¸æ¯æ°æ®ï¼èä¸ä¹ç¼ºå¤±Lispçéè¦å
ç´ ãå
¶æ°æ®ç»ææ¯å符串ãæ°ååå
¶ä»ä¸äºä¸é¨ç»æã</p>
+
+<p>æå¾åºæä¸è½ä½¿ç¨è¯¥ç¨åºå¹¶ä¸è¦å®å
¨æ¿æ¢è¯¥ç¨åºçç»è®ºï¼ç¬¬ä¸æ¥å°±æ¯ç¼åä¸ä¸ªçæ£çLisp解éå¨ãæéæ¥ç¨çæ£çLispæ°æ®ç»ææ¿æ¢äºè¯¥ç¼è¾å¨çæ¯ä¸ªé¨åï¼èä¸æ¯ä½¿ç¨å
¶ä¸é¨çæ°æ®ç»æï¼å¹¶ä½¿ç¼è¾å¨çå
é¨æ°æ®ç»æ对ç¨æ·çLispç¨åºå¼æ¾ï¼ä½¿ç¨æ·ç¨åºè½å¤å¤çç¼è¾å¨å
é¨æ°æ®ã</p>
+
+<p>æ¾ç¤ºå·æ°æ¯ä¸ªä¾å¤ãå¾é¿æ¶é´ä»¥æ¥ï¼æ¾ç¤ºå·æ°åæ¯ä¸ä¸ªå¦ç±»ä¸çãç¼è¾å¨ä¸æ¦è¿å
¥æ¾ç¤ºå·æ°çä¸çï¼äºæ
å°±åæ对åå¾æ°æ®æ¶éä¸å®å
¨çé常ç¹æ®çæ°æ®ç»æï¼å®ä»¬å¯¹ä¸æå¤çä¹ä¸å®å
¨ï¼èä¸ä½
å¨æ¤è¿ç¨ä¸æ
æ³è¿è¡ä»»ä½Lispç¨åºãæ们已ç»ä¿®æ¹äºè¿é¨å—ç°å¨ä½
å¨æ¾ç¤ºå·æ°æ¶ä¹å¯ä»¥è¿è¡Lisp代ç ãè¿æ¯ä¸ä»¶å¾ä¾¿å©çäºã</p>
+
+<p>è¿ä¸ªç¬¬äºççEmacs毑èªç±è½¯ä»¶’以该è¯æ±çå½ä»æä¹æ¥è¯´—å®æ¯åäºè½¯ä»¶èªç±çæ¿æ²»è¿å¨çä¸é¨åã该è¿å¨çç²¾é«å°±æ¯æ¯ä¸ªäººé½åºè¯¥æèªç±åæ们å¨<abbr>MIT</abbr>çé£æ®µå²æåçäºï¼ä¸èµ·å¼å软件ï¼åªè¦æ¿æå°±å¯ä»¥ä¸èµ·å·¥ä½ãè¿å°±æ¯èªç±è½¯ä»¶çåºç¡—ä¹æ¯æçç»åï¼æ¯æå¨<abbr>MIT</abbr>人工æºè½å®éªå®¤ççæ´»—为人类çç¥è¯èå·¥ä½ï¼èä¸æ¯é»ç¢å
¶ä»äººä½¿ç¨åä¼ æ人类çç¥è¯ã</p>
+
+<p>é£æ¶ï¼ä½ å¯ä»¥ç¨åé éLispä¸ç¨æºå·®ä¸å¤çä»·é±é
ä¸å°çµèï¼å®è¿è¡Lispçé度è¦å¿«å¾å¤ï¼èä¸å¯¹æ¯ä¸ªæ令é½åç±»åæ£æ¥ãæ®éçµèä¸è¬æ¯è®©ä½
å¨è¿è¡é度åç±»åæ£æ¥ä¹é´éä¸ä¸ªãæ以ï¼æ¯çï¼ä½
å¯è½ä½¿ç¨Lispç¼è¯å¨è®©ä½ çç¨åºè¿è¡å¾å¿«ï¼ä½æ¯å¦æä½
对æ°åå<tt>car</tt><sup><a
+href="#TransNote1">1</a></sup>æ¶ï¼ç»ææ¯æ
æçï¼æç»å¯¼è´ç¨åºå´©æºã</p>
+
+<p>该Lispçµèè¿è¡æ令çé度å ä¹åå
¶ä»çµèä¸æ
·å¿«ï¼ä½æ¯å®å¯¹æ¯ä¸ªæ令—caræ令é½ä¼åæ°æ®ç±»åæ£æ¥—æ以å½ä½
å¨ç¼è¯è¿çç¨åºéè¯å¾ç¨caræ令å¤çæ°åæ¶ï¼ç³»ç»ä¼ç«å³æ¥éãæ们å¶é
äºè¿ç§çµè并ä¸æä¸ä¸ªä¸é¨çLispæä½ç³»ç»ã该系ç»å ä¹å®å
¨æ¯ç¨Lispç¼åçï¼åªæä¸é¨åæ¯ç¨microcodeç¼åçã人们对大è§æ¨¡é
è¿ç§æºå¨å¾æå
´è¶£ï¼è¿æå³çä»ä»¬åºè¯¥å¼ä¸ªå
¬å¸ã</p>
+
+<p>对å¼ä»ä¹æ ·çå
¬å¸ï¼å¤§å®¶æ两ç§ä¸åçæ³æ³ãGreenblattæ³å¼ä¸ä¸ªä»ç§°ä¹ä¸º“é»å®¢”çå
¬å¸ãè¿æå³ç该å
¬å¸ä¼ç±é»å®¢è¿ä½å¹¶ä¸ä»¥æå©äºé»å®¢çæ¹å¼è¿ä½ãå¦ä¸ä¸ªç®çæ¯è¦ä¿æ人工æºè½å®éªå®¤çæå<a
+href="#foot-3">(3)</a>ãä¸å¹¸çæ¯ï¼Greenblatt没æä»»ä½åä¸ç»éªï¼æ以Lispçµèå¢éçå
¶ä»äººå¯¹Greenblattä¼ä¸ä¼æå表示æçãä»ä»¬è®¤ä¸ºä»æç»å¤é¨èµéçåæ³è¡ä¸éã</p>
+
+<p>ä»ä¸ºä»ä¹è¦é¿å
å¤é¨æèµå¢ï¼å 为å¦æä¸ä¸ªå
¬å¸å¼å
¥äºå¤é¨æèµè
ï¼ä»ä»¬å°±ä¼ææ§å
¬å¸å¹¶ä¸ä¸ä¼è®©ä½
æä»»ä½éå¾·ä¸çç¹è±«ãæç»ï¼å¦æä½
ç¨æç¹è±«ï¼ä»ä»¬ä¹ä¼è¸¢å¼ä½ ã</p>
+
+<p>æ以ï¼Greenblatt认为ä»å¯ä»¥æ¾å°é¢å
ä»æ¬¾ç客æ·ãä»ä»¬åé
çµèåéç»è¯¥å®¢æ·ï¼æäºè¿äºå©æ¶¦ä¹åï¼ä»ä»¬å°±å¯ä»¥åé
æ´å¤ççµèï¼ç¶ååéå®ï¼ç¶ååé
æ´å¤ççµèï¼å¦æ¤è¿è¡ä¸å»ãç»å
çå
¶ä»äººè§å¾è¿æ
·ä¸è¡ã</p>
+
+<p>ç¶åï¼Greenblattå°±éä½£äºRussell
+Noftskerï¼å°±æ¯ææè¿æ¥ç人ï¼ä»åæ¥ç¦»å¼äºäººå·¥æºè½å®éªå®¤å¹¶å¼åäºä¸ä¸ªæåçå
¬å¸ãRussell被认为å¾æåä¸å¤´èãä»åç»å
çå
¶ä»äººå±ç¤ºäºä»çåä¸ææºï¼ä»è¯´ï¼“æ们æå¼Greenblattï¼ä¸è¦ç®¡ä»çæ³æ³ï¼æ们å»å¼å¦ä¸é´å
¬å¸ã”èåæ
ååï¼ææ¾æ¯çæ£ççæ人ãè¿äºäººå³å®å¼ä¸ä¸ªå«Symbolicsçå
¬å¸ãä»ä»¬å¸çº³å¤é¨æèµãä¸ä¼æä»»ä½è¯å¿ä¸å®ãç«å°½æè½è·åæåã</p>
+
+<p>ä½æ¯Greenblatt并没ææ¾å¼ãä»åå°æ°å¿
è¯äºä»ç人è¿æ¯å³å®å¼åäºLisp
+Machineså
¬å¸ï¼å¹¶æèªå·±ç计ååè¿ãä½
çæä¹çï¼ä»ä»¬æåäºï¼ä»ä»¬æ¾å°äºä¸ä¸ªé¢å
ä»æ¬¾ç客æ·ãä»ä»¬å¶é äºçµè并åäºåºå»ï¼å¹¶å¶é
äºè¶æ¥è¶å¤ççµèã尽管没æç»å
å¤æ°äººçæ¯æï¼ä»ä»¬å®é
ä¸è¿æ¯æåäºãSymbolicsä¹æåå°å¯å¨äºï¼æ以ä½
æ两家äºç¸ç«äºçLispçµèå
¬å¸ãå½Symbolicsçå°LMIä¸æ¯èµ°å失败æ¶ï¼ä»ä»¬å¼å§å¯»æºæç
´åã</p>
+
+<p>å
æ¤ï¼å®éªå®¤ç被离å¼æ¥çæ¯å®éªå®¤ç“æ五ã离å¼æ¯å
为Symbolicsæèµ°äºå®éªå®¤çææé»å®¢ï¼åªå©ä¸æåå 个å¨LMIå
¼èç人ãç¶åï¼ä»ä»¬åæ´å¼æ¡ä¾æå¨<abbr>MIT</abbr>å
¼èç人赶走ï¼å æ¤ä»ä»¬å
¨é½èµ°äºï¼åªå©ä¸æã人工æºè½å®éªå®¤ç°å¨æ²¡ä»ä¹å¸æäºãèä¸<abbr>MIT</abbr>对è¿ä¸¤ä¸ªå
¬å¸åäºé常æè ¢çå®æãè¿æ¯ä¸ä¸ªä¸æ¹ååï¼å
¶ä¸ä¸¤å®¶å
¬å¸é½è¢«ææ使ç¨Lispçµèç³»ç»çæºä»£ç ãè¿ä¸¤å®¶å
¬å¸é½éè¦è®©<abbr>MIT</abbr>使ç¨ä»ä»¬çæ´æ¹ãä½æ¯åå没æ说<abbr>MIT</abbr>ææå°è¿äºä»£ç
æ¾å
¥ç±ä¸¤å®¶å
¬å¸ææç<abbr>MIT</abbr>Lispçµèç³»ç»ã没æ人é¢è§å°å®éªå®¤çé»å®¢å°ç»ä¼è¢«å½»åºæ¯çï¼ä½æ¯å®å°±æ¯è¢«æ¯çäºã</p>
+
+<p> äºæ¯ï¼Symbolicså¯å¨äºä¸ä¸ªè®¡å<a
+href="#foot-4">(4)</a>ãä»ä»¬å¯¹å®éªå®¤è¯´ï¼“æ们ä¼æç»è®©ä½
们使ç¨æ们çç³»ç»æ¹è¿ï¼ä½æ¯ä½ 们ä¸è½æè¿äºæ¹è¿è£
å°<abbr>MIT</abbr>çLispçµèç³»ç»ä¸ãä¸è¿ï¼æ们ä¼è®©ä½
们使ç¨SymbolicsçLispçµèç³»ç»ï¼ä½
们å¯ä»¥å¨è¿äºç³»ç»ä¸è¿è¡æ¹è¿çï¼ä½æ¯ä»
æ¤èå·²ã”</p>
+
+<p>è¿å®é
ä¸æ¯è¦æ±æ们åªè½éæ©ä¸è¾¹ï¼è¦ä¹ä½¿ç¨<abbr>MIT</abbr>çç³»ç»çæ¬ï¼è¦ä¹ä½¿ç¨Symbolicsççæ¬ãæ们éæ©åªä¸è¾¹ï¼å°±å³å®äºæ们çç³»ç»æ¹è¿ä¼è¿å
¥å°åªä¸è¾¹ãå¦ææ们为æ¹è¿Symbolicsççæ¬èå·¥ä½ï¼æ们就åªæ¯å¨å¸®å©Symbolicsãå¦ææ们使ç¨åæ¹è¿<abbr>MIT</abbr>çç³»ç»çæ¬ï¼ä¸¤ä¸ªå
¬å¸é½è½å¤å¾å°æ们çå·¥ä½ï¼ä½æ¯Symbolics认为è¿æ¯å¨æ¯æLMIï¼å
为è¿ä¼å¸®å©LMIçåä¸å»ãå æ¤ï¼æ们ä¸è¢«å
许åä¿æä¸ç«ã</p>
+
+<p>ç´å°æ¤æ¶ï¼æé½æ²¡æç«å¨å
¶ä¸ä»»ä½ä¸ä¸ªå
¬å¸çä¸è¾¹ï¼è½ç¶æçå°ç¤¾åºå软件åççä¸åæå°é常é¾åãä½æ¯ç°å¨ï¼Symbolics强迫æååºéæ©ãæ以ï¼ä¸ºäºä½¿Lisp
+Machineså
¬å¸è½å¤ç»§ç»<a
+href="#foot-5">(5)</a>—æå¼å§å¤å¶Symbolics对Lispçµèç³»ç»æä½çå
¨é¨æ¹è¿ãææè¿äºæ¹è¿ç¨èªå·±çæ³æ³åæ
·å®ç°åºæ¥ï¼å°±æ¯è¯´ï¼ä»£ç æ¯æèªå·±åçï¼ã</p>
+
+<p>è¿äºä¸éµï¼<a
+href="#foot-6">(6)</a>ï¼æå¾åºç»è®ºï¼ä¸çä»ä»¬ç代ç
å¯è½æ´å¥½ãå½ä»ä»¬å®£å¸betaçæ¶ï¼éè¿çåå¸å£°æï¼æç¥éäºæä»ä¹åè½ï¼ç¶åèªå·±å®ç°å®ä»¬ãå½ä»ä»¬åè¡æ£å¼çæ¶ï¼æä¹å®ç°äºè¿äºåè½ã</p>
+
+<p>å¦æ¤è¿æ ·ï¼æ两年çæ¶é´ï¼æé»æ¢ä»ä»¬æLisp
+Machineså
¬å¸æ¶çï¼è¿ä¸¤ä¸ªå
¬å¸åæ¶åå¨ãä½æ¯ï¼æä¸æ³è¿æ
·å¹´å¤ä¸å¹´å°æ©ç½ä¸ä¸ªäººï¼ä»
ä»
åªæ¯é»æ
ä¸æ¡©ç½ªæ¶ãæè§å¾ä»ä»¬å·²ç»åå°äºå½»åºçæ©ç½ï¼å 为ä»ä»¬é·å
¥äºæ æ³æè±çç«äºæ¼©æ¶¡ä¹ä¸<a
+href="#foot-7">(7)</a>ãä¸æ¤åæ¶ï¼æ¯æ¶ååå¼å§å建ä¸ä¸ªæ°ç社åºæ¥ä»£æ¿é£ä¸ªè¢«ä»ä»¬ä»¥åå
¶ä»äººæ¯çç社åºäºã</p>
+
+<p>70年代çLisp社åºä¸éäº<abbr>MIT</abbr>人工æºè½å®éªå®¤ï¼å¹¶ä¸æ¯ææçé»å®¢é½å¨<abbr>MIT</abbr>ãSymbolicsåèµ·çæäºæ¯çäº<abbr>MIT</abbr>社åºï¼ä½æ¯åæ¶è¿æå
¶ä»äºä»¶å¨è¿è¡ãæ人æ¾å¼äºåä½ï¼è¿äºä¹æ¯çç社åºï¼ç¤¾åºæå©å¯¥å¯¥äºã</p>
+
+<p>ä¸æ¦æä¸åæ©ç½Symbolicsï¼æå°±ä¸å¾ä¸èèä¸ä¸æ¥åä»ä¹ãæå¿
é¡»åä¸ä¸ªèªç±çæä½ç³»ç»ï¼è¿å¾æ澗人们è½å¤ä¸èµ·å·¥ä½åå享çæ¹æ³å°±æ¯æä¸ä¸ªèªç±çæä½ç³»ç»ã</p>
+
+<p>ä¸å¼å§ï¼ææ³è¦åä¸ä¸ªåºäºLispçç³»ç»ï¼ä½æ¯æ认è¯å°é£å¨ææ¯ä¸å¹¶ä¸ä¸ä¸ªå¥½ä¸»æãè¦ååLispçµèé£æ
·çç³»ç»ï¼ä½ éè¦ä¸ç¨ç微代ç ãè¿ç§å¾®ä»£ç ä½¿ä½ è½å¤åå
¶ä»çµèä¸æ
·å¿«éå°æ§è¡ç¨åºï¼åæ¶è¿è½è·çäºç±»åæ£æ¥ã没æ微代ç
ï¼ä½ å°±åªç¸å½äºå
¶ä»æºå¨ä¸çLispç¼è¯å¨ãç¨åºå¯ä»¥æ´å¿«ï¼ä½æ¯å¹¶ä¸å®å
¨ãå¦æä½ å¨ä¸ä¸ªåæ¶ç³»ç»ä¸è¿è¡ä¸ä¸ªè¿æ
·çç¨åºè¿åå—ä¸ä¸ªç¨åºå´©æºå¹¶ä¸æ¯ç¾é¾ï¼ç¨æ·ç¨åºæ¶ä¸æ¶å°é½å¯è½ä¼å´©æºãä½æ¯è¿æ
·ç¼åæä½ç³»ç»å°±ä¸è¡ï¼æ以ææå¼äºå类似Lispçµèç³»ç»çæ³æ³ã</p>
+
+<p>æå³å®åä¸ä¸ªç±»ä¼¼Unixçæä½ç³»ç»ï¼å¯è½ä¼å¸¦ä¸ä¸ªè½å¤è¿è¡ç¨æ·ç¨åºçLispç¯å¢ãå
æ ¸ä¸å¿
æ¯ç¨Lispç¼åçï¼ä½æ¯æ们åºå½æLispãæ以æ£æ¯è¿ä¸ªæä½ç³»ç»ãGNUæä½ç³»ç»çå¼åæå¼æç¼åäºGNU
+Emacsãå¨ç¼åçè¿ç¨ä¸ï¼æçç®çæ¯åä¸ä¸ªå°½å¯è½æå°çLispç³»ç»ã该ç¨åºç大å°æ¯é常éè¦çèéã</p>
+
+<p>å¨1985å¹´ï¼æäºäººçµèçå
åæ¯ä¸å¸¦èæå
åç1å
åèãä»ä»¬ä¹æ³è¦è¿è¡GNU Emacsãè¿æå³çæå¿
须使该ç¨åºå°½å¯è½å°å°ã</p>
+
+<p>举个ä¾åï¼å½æ¶ç循ç¯ç»æåªæ‘while’ï¼å®ç®åå°æè´ãä½
æ æ³ç´æ¥è·³åº‘while’循ç¯ï¼ä½
åªè½è¿è¡ä¸æ¬¡å¼å¸¸æè·ï¼catchï¼åä¸æ¬¡å¼å¸¸æåºï¼throwï¼ï¼æè
å¤ææ§å¶å¾ªç¯çåéãè¿ä¸ªä¾å说ææ为äºä½¿ç¨åºåå°ï¼ååºäºä»ä¹æ
·çåªåãæ们ä¹æ²¡æ‘caar’å‘cadr’ççæ令3尽å¯è½åå°ä¸å¿
è¦çä¸è¥¿”æ¯GNU
+Emacsçç²¾é«ï¼æ¯Emacs Lispçç²¾é«ï¼ä»ä¸å¼å§å°±æ¯è¿æ ·ã</p>
+
+<p>å½ç¶ï¼ç°å¨ççµè大äºï¼æ们ä¹ä¸å追æ±é£æ
·çæè´ãæ们å å
¥äº‘caar’å‘cadr’çæ令ï¼èä¸æ们æè¿ä¹ä¼æ·»å
å¦å¤ç循ç¯ç»æãç°å¨æ们æ¿ææ©å±å®ï¼ä½æ¯æ们ä¸æ³æå®æ©å±æcommon
+Lispé£æ ·ãææ¾å¨Lispçµèä¸å®ç°è¿Common
Lispï¼æ对ä¹å¹¶ä¸æ¯åå满æãå
¶ä¸æé常ä¸å欢çå°±æ¯å
³é®ååæ°<a
+href="#foot-8">(8)</a>ãå¨æçæ¥ï¼å®ä»¬ä¸ç®Lispyï¼è½ç¶æææ¶ä¹ç¨å
³é®åï¼ä½æ¯æææç¨ç次æ°æ§å¶å°æå°ã</p>
+
+<p>è¿å¹¶ä¸æ¯GNUå·¥ç¨æ¶åLispçç»æãåæ¥å¨1995å¹´å·¦å³ï¼æ们计åå¯å¨ä¸ä¸ªå¾å½¢åæ¡é¢é¡¹ç®ãæ们å¾æ¸
æ¥è¯¥æ¡é¢ç¨åºç主è¦ç¼ç¨è¯è¨åºè¯¥è½å¤ä¾¿å©å°æ©å±è¯¥æ¡é¢ç¨åºï¼å°±åæ们çç¼è¾å¨ä¸æ
·ãé®é¢å¨äºè¿åºè¯¥æ¯ä¸ä¸ªä»ä¹è¯è¨ã</p>
+
+<p>æ¤æ¶ï¼<acronym title="Tool Command
+Language">TCL</acronym>ä½ä¸ºåéè¯è¨çå¼å£°å¾é«ãæé常çä¸ä¸<acronym>TCL</acronym>ï¼åºæ¬ä¸å
为å®ä¸æ¯Lispè¯è¨ãå®ç¨ç¨æç¹åLispï¼ä½æ¯å
¶è¯ä¹ä¸ä¸æ¯ï¼èä¸ä¹ä¸ç®æ´ãç¶åï¼æ人ç»æçäºä¸ä¸ªå¹¿åï¼å
¶ä¸è¯´Sunå
¬å¸æ£è¯å¾é人æ<acronym>TCL</acronym>åæå
¨ä¸ç“æ©å±è¯è¨çå®è´¨æ å”ãæå¨æ³ï¼“æ们å¿
é¡»é»æ¢è¿ä»¶äº”ï¼æ以æ们å¼å§è®©Schemeæ为GNUçæ
åæ©å±è¯è¨ãä¸æ¯Common
+Lispï¼å 为å®å¤ªåºå¤§äºãå
¶ææ³æ¯ï¼æ们æScheme解éå¨è¿æ¥å°åºç¨ç¨åºä¸ï¼å°±å<acronym>TCL</acronym>é£æ
·ãç¶åï¼æ们就å¯ä»¥å»ºè®®è¿æ¯ææGNUç¨åºé¦éçæ©å±å
ã</p>
+
+<p>使ç¨è¿ä¸ªå¼ºå¤§çLispåæ¯è¯è¨ä½ä¸ºåºæ¬æ©å±è¯è¨ä¼ç»ä½
带æ¥ä¸ä¸ªæ趣ç好å¤ãä½ å°è½å¤æå
¶ä»è¯è¨ç¿»è¯æåºæ¬æ©å±è¯è¨æ¥å®ç°å
¶ä»è¯è¨ãå¦æä½
çåºæ¬è¯è¨æ¯<acronym>TCL</acronym>ï¼é£ä¹ä½
å°±ä¸è½å¤è½»æå°ç¨ç¿»è¯æ<acronym>TCL</acronym>æ¥å®ç°Lispãä½æ¯å¦æä½
çåºæ¬è¯è¨æ¯Lispï¼é£ä¹ç¿»è¯å°±ä¸æ¯é¾äºãæ们çæ³æ³æ¯ï¼å¦ææ¯ä¸ªæ©å±åºç¨é½æ¯æSchemeï¼é£ä¹ä½
å¯ä»¥ç¨Schemeå®ç°<acronym>TCL</acronym>æPythonæPerlï¼ç¨æ¥æåºç¨ç¿»è¯æSchemeãä¹åï¼ä½
å°±å¯ä»¥æå®å
è½½å°æ¯ä¸ªåºç¨ï¼ç¶åå°±å¯ä»¥ç¨èªå·±æåç±çè¯è¨æ¥å®å¶åºç¨äºï¼å
¶ä»å®å¶ä¹ç±»ä¼¼ã</p>
+
+<p>å¦ææ©å±è¯è¨å¾å¼±ï¼ç¨æ·å°±ä¸å¾ä¸ä½¿ç¨ä½
æä¾çå¯ä¸è¯è¨ãè¿å°±æå³çï¼å欢ç¹å®è¯è¨ç人们å°ä¸å¾ä¸åå¼åè
éæ©çè¯è¨ç«äº—ä»ä»¬ä¼è¯´“åºç¨å¼åè
ï¼è¯·ææçè¯è¨æ·»å å°ä½ çåºç¨ä¸ï¼èä¸æ¯æ·»å
å«äººçã”è¿æ ·ï¼ç¨æ·å°±æ
¹æ¬æ²¡æéæ©çä½å°—ä»ä»¬åªè½æ¥ååºç¨å¸¦æ¥çè¯è¨ï¼å¹¶åå¶äº[该è¯è¨]ãä½æ¯å¦æä½
æä¸ä¸ªå¼ºå¤§çè¯è¨ï¼å®è½å¤å®ç°å
¶ä»è¯è¨ï¼é£ä¹ä½
å°±ç»äºç¨æ·èªç±éæ©è¯è¨çæå©ï¼æ们就ä¸åæè¯è¨éæ©çæäºäºãè¿æ£æ¯æ们æå¸æç‘Guile’ï¼æ们çscheme解éå¨ï¼è½å¤åå°è¿ä¸åãå»å¹´å¤å¤©ï¼æ们æ人å®æäºä»Pythonå°Schemeçç¿»è¯å¨ãæä¸å¤ªç¡®å®è¿ä¸ªæ¯å¦å·²ç»å
¨é¨å®æï¼ä¸è¿å¦ææ人对è¿ä¸ªé¡¹ç®æå
´è¶£ï¼è¯·èç³»æ们ãè¿å°±æ¯æ们æªæ¥ç计åã</p>
+
+<p>æä¸ç´æ²¡ææèªç±è½¯ä»¶ï¼ä¸è¿ç°å¨è®©æç®å说ä¸ä¸å®çæä¹ãèªç±è½¯ä»¶æçä¸æ¯ä»·æ
¼ï¼å®çææä¸æ¯ä½ å¯ä»¥å
è´¹å¾å°ç软件ãï¼å®å¯ä»¥æ¯ä½
ä»è´¹å¾å°ç软件ï¼ä¹å¯ä»¥æ¯ä½ å
è´¹è·å¾çæ·è´ãï¼å®çæææ¯ä½ä¸ºç¨æ·ï¼ä½ æä¸äºèªç±ãå
¶ä¸çå
³é®æ¯ä½ æèªç±è¿è¡è¯¥è½¯ä»¶ãä½ æèªç±ç 究å
¶æä½æ为ãä½ æèªç±æç
§èªå·±çéæ±ä¿®æ¹è¯¥è½¯ä»¶ãä½
æèªç±åå
¶ä»äººåå¸è¯¥è½¯ä»¶ä»¥ååå¸ä¿®æ¹åç软件ãè¿å°±æ¯èªç±è½¯ä»¶çå®ä¹ãå¦æä½
使ç¨çæ¯éèªç±è½¯ä»¶ï¼ä½ 就失å»äºè¿äºå
³é®çèªç±ï¼æ以请ä¸è¦ä½¿ç¨éèªç±è½¯ä»¶ã</p>
+
+<p>GNUå·¥ç¨çç®çå°±æ¯æä¾ä»£æ¿éèªç±è½¯ä»¶çèªç±è½¯ä»¶ï¼è®©äººä»¬è½å¤æ´å®¹æå°æç»éèªç±è½¯ä»¶å¯¹èªç±ç侵害ã对ç¨æ·çæ§å¶ã对é£äºç¼ºå°éå¾·åæ°æ¥æç»éèªç±è½¯ä»¶ç人æ¥è¯´ï¼å¦æä½
éè¦çæ¯å®ç¨æ§ï¼é£ä¹æ们å°å°½åæä¾ä¸ä¸ªèªç±çæ¿ä»£ä½¿ä½
è½å¤å¨è¾å°æ··ä¹±ãè¾å°çºç²å®ç¨æ§çæ
åµä¸ï¼è½¬ç§»å°èªç±è½¯ä»¶ãä½
失å»çå®ç¨æ§å½ç¶æ¯è¶å°è¶å¥½ãæ们å¸æä½
è½å¤æ´å®¹æå°è·å¾èªç±ã并ä¸è½å¤åä½äºå©ã</p>
+
+<p>åä½äºå©å
³ä¹èªç±ã人们ä¹
æ¯äºè®¤ä¸ºèªç±å社ä¼åä½æ¯å¯¹ç«çãä½æ¯ï¼æ¤æ¶æ们å¨åä¸æ¡æå£å
ã使ç¨èªç±è½¯ä»¶ï¼ä½ å°±æèªç±åå
¶ä»äººåä½ï¼å¹¶ä¸ä¹æèªç±å¸®å©ä½ èªå·±ã使ç¨éèªç±è½¯ä»¶ï¼ä½
就被æ§å¶ï¼äººä»¬è¢«ååãä½ æ æåå
¶ä»äººå享ï¼ä½
没æèªç±å»åä½äºå©æ帮å©ç¤¾ä¼ï¼æ£å¦ä½ 没æèªç±æ¥å¸®å©ä½
èªå·±ã使ç¨éèªç±è½¯ä»¶çç¨æ·å°±æ¯è¿æ ·å¤ç«åæ å©ã</p>
+
+<p>æ们已ç»å¼åäºèå´åºå¤§çèªç±è½¯ä»¶ãæ们å®æäºäººä»¬æ¾ç»è¯´æ°¸è¿å®ä¸æçäºï¼æ们æ两个èªç±è½¯ä»¶æä½ç³»ç»ãæ们æå¾å¤åºç¨ï¼ä½æ们æ¾ç¶è¿ææ´å¤çè¦åãæ以ï¼æ们éè¦ä½
们ç帮å©ãæ请æ±ä½ 们æ为GNUå·¥ç¨çå¿æ¿è
ï¼å¸®å©æ们å¼åè½æ§è¡æ´å¤ä»»å¡çèªç±è½¯ä»¶ã请åç<a
+href="/help/">http://www.gnu.org/help</a>æ¥äºè§£æä¹å¸®å©æ们ãå¦æä½
æ³è®¢è´ä¸äºä¸è¥¿ï¼æ们ç主页ä¸æä¸ä¸ªé¾æ¥ãå¦æä½
æ³äºè§£æ们çå²å¦ï¼è¯·é
读/philosophyãå¦æä½
å¨æ¾å¯ç¨çèªç±è½¯ä»¶ï¼è¯·å°/directoryï¼ç°å¨å¤§çº¦æ1900个软件å
ï¼è¿åªæ¯ææèªç±è½¯ä»¶çä¸é¨åï¼ã请ç¼åæ´å¤çèªç±è½¯ä»¶å¹¶è´¡ç®ç»æ们ãæçæé3èªç±è½¯ä»¶åèªç±ç¤¾ä¼”ï¼æ£å¨åå®ï¼ä½
å¯ä»¥å¨<a
+href="http://www.gnu.org/">www.gnu.org</a>è´ä¹°ãç¥ä½ 们å¼åæå¿«ï¼</p>
+
+<ol>
+<li id="foot-1">Guy
+Steele设计äºEmacsæåç对称å½ä»¤éåï¼ç¶åæ们å¼å§æé
Emacsï¼å¨TECOçåºç¡ä¸ï¼ï¼ä½æ¯å¨ä¸æ®µé¿æçèåå¼åä¹åï¼Steeleæ¸æ¸ç¦»å¼äºï¼æ以æç¬èªå®æäºEmacsãå
¶ä»äººï¼ç¹å«æ¯Eugene
+C. CicciarelliåMike McMahonåæ¥ä¹ååºäºæ¾èçè´¡ç®ã</li>
+
+<li id="foot-2">Bernie Greenberg说Dan
+Weinrebå¨Lispçµèä¸çEmacsè¦æ©äºGreenbergå¨Multicsççæ¬ãæå¨æ¤å¯¹æçé误éæã</li>
+
+<li
id="foot-3">Greenblattç计åï¼å°±æçç解ï¼æ¯è¯·å®éªå®¤ç人åå
¼èï¼è¿æ
·ä»ä»¬è¿è½å¤ç»§ç»å¨äººå·¥æºè½å®éªå®¤çæ¬èå·¥ä½ãSymbolicséåçæ¯å
¨èéä½£ï¼æ以å®éªå®¤ç人åå°±ä¸è½å¨MITå·¥ä½äºã</li>
+
+<li
id="foot-4">该计åçèæ¯ï¼æå¨æ¼è®²é没ææ说ï¼æ¯å¨å¼å§é¶æ®µï¼äººå·¥æºè½å®éªå®¤çé»å®¢ä»¬ï¼ä¸ç®¡æ¯å¨Symbolicsï¼è¿æ¯å¨LMIï¼é½ç»§ç»æä»ä»¬çæ¹è¿è´¡ç®ç»MITçLispçµè系绗尽管åå并没æè¦æ±è¿æ
·åãSymbolicsç计åå´æ¯åæ¹é¢å²è£åä½ã</li>
+
+<li id="foot-5">è¿å¹¶ä¸æ¯è¯´æç¹å«å
³æ³¨LMIçå½è¿ï¼æåªæ¯ä¸æ³è®©Symbolicséè¿æ»å»äººå·¥æºè½å®éªå®¤è·çã</li>
+
+<li
id="foot-6">è¿ä¸ªé述常被æ²è§£ä¸ºæä»æ¥æ²¡æçè¿Symbolicsç代ç
ãå®é
ä¸ï¼å®è¯´çæ¯æä¸å¼å§çäºSymbolicsç代ç ãè¿äºä»£ç
å°±å¨MITï¼æææççï¼èä¸æåæå°±æ¯è¿æ
·äºè§£å°ä»ä»¬åäºæ¹å¨ã
+
+<p>ä¸è¿ï¼è¿æå³çæä¸å¾ä¸è±åæ°æ¾å°å
¶ä»ç解å³æ¹æ³ï¼è¿æ ·æè½é¿å
å¤å¶Symbolicsç代ç
ãä¸æ®µæ¶é´ä¹åï¼æè§å¾ä¸çè¿äºä»£ç æ´å¥½ãè¿æ
·çè¯ï¼æå°±å¯ä»¥ææ好çæ¹æ³æ¥å®ç°ä»£ç
ï¼èä¸ç¨èèæ¯å¦ç¨äºSymbolicsç代ç ã</p></li>
+
+<li id="foot-7">Symbolicsæ¾ç»åMITæè®®ï¼æçå·¥ä½é»æ
äºä»ä»¬ç计åè使Symbolicsæ失ä¸ç¾ä¸ç¾å
ã</li>
+
+<li id="foot-8">æ并ä¸ä»æé常å¤æåéé级çå½æ°ä½¿ç¨å
³é®ååæ°ãæ讨åçæ¯è¿è¯¸å¦“member”è¿æ
·çç®åå½æ°ä¹è¦ä½¿ç¨å
³é®ååæ°ã</li>
+</ol>
+
+<div class="translators-notes">
+
+<!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->
+<h3>è¯æ³¨</h3>
+<ol>
+<li id="TransNote1">carï¼æ¯Lispè¯è¨çä¸ä¸ªåºæ¬æ令ã</li>
+</ol></div>
+</div>
+
+<!-- for id="content", starts in the include above -->
+<!--#include virtual="/server/footer.zh-cn.html" -->
+<div id="footer">
+<div class="unprintable">
+
+<p>请å°æå
³èªç±è½¯ä»¶åºéä¼ï¼FSFï¼&GNUçä¸è¬æ§é®é¢åéå°<a
+href="mailto:address@hidden"><address@hidden></a>ãä¹å¯ä»¥éè¿<a
+href="/contact/">å
¶ä»èç³»æ¹æ³</a>èç³»èªç±è½¯ä»¶åºéä¼(FSF)ã请å°æ æé¾æ¥ï¼å
¶ä»é误æ建议åéç»<a
+href="mailto:address@hidden"><address@hidden></a>ã</p>
+
+<p>
+<!-- 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 href="mailto:address@hidden">
+
+ <address@hidden></a>.</p>
+
+ <p>For information on coordinating and submitting translations of
+ our web pages, see <a
+ href="/server/standards/README.translations.html">Translations
+ README</a>. -->
+è¥æ¨æ³ç¿»è¯æ¬æï¼è¯·åç<a
href="/server/standards/README.translations.html">ç¿»è¯é¡»ç¥</a>ã</p>
+</div>
+
+<!-- Regarding copyright, in general, standalone pages (as opposed to
+ files generated as part of manuals) on the GNU web server should
+ be under CC BY-ND 3.0 US. Please do NOT change or remove this
+ without talking with the webmasters or licensing team first.
+ Please make sure the copyright date is consistent with the
+ document. For web pages, it is ok to list just the latest year the
+ document was modified, or published.
+
+ If you wish to list earlier years, that is ok too.
+ Either "2001, 2002, 2003" or "2001-2003" are ok for specifying
+ years, as long as each year in the range is in fact a copyrightable
+ year, i.e., a year in which the document was published (including
+ being publicly visible on the web or in a revision control system).
+
+ There is more detail about copyright years in the GNU Maintainers
+ Information document, www.gnu.org/prep/maintain. -->
+<p>Copyright © 2003, 2007, 2013, 2014 Free Software Foundation, Inc.</p>
+
+<p>æ¬é¡µé¢ä½¿ç¨<a rel="license"
+href="http://creativecommons.org/licenses/by-nd/3.0/us/">Creative Commons
+Attribution-NoDerivs 3.0 United States License</a>ææã</p>
+
+<!--#include virtual="/server/bottom-notes.zh-cn.html" -->
+<div class="translators-credits">
+
+<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
+<b>å®¡æ ¡</b>ï¼<a href="mailto:address@hidden"><Hagb
+ï¼éä¿ä½ï¼></a>ï¼2018ã<br></br>
+<b>ç¿»è¯å¢é</b>ï¼<a rel="team"
+href="https://savannah.gnu.org/projects/www-zh-cn/"><CTT></a>ï¼2018ã</div>
+
+<p class="unprintable"><!-- timestamp start -->
+æåæ´æ°ï¼
+
+$Date: 2018/07/30 07:32:28 $
+
+<!-- timestamp end -->
+</p>
+</div>
+</div>
+</body>
+</html>
Index: po/rms-lisp.zh-cn-en.html
===================================================================
RCS file: po/rms-lisp.zh-cn-en.html
diff -N po/rms-lisp.zh-cn-en.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ po/rms-lisp.zh-cn-en.html 30 Jul 2018 07:32:29 -0000 1.1
@@ -0,0 +1,592 @@
+<!--#include virtual="/server/header.html" -->
+<!-- Parent-Version: 1.77 -->
+<title>My Lisp Experiences and the Development of GNU Emacs
+- GNU Project - Free Software Foundation</title>
+<!--#include virtual="/gnu/po/rms-lisp.translist" -->
+<!--#include virtual="/server/banner.html" -->
+<h2>My Lisp Experiences and the Development of GNU Emacs</h2>
+
+<blockquote><p>(Transcript of Richard Stallman's Speech, 28 Oct 2002, at the
+International Lisp Conference).</p></blockquote>
+
+<p>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.</p>
+
+<p>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
+— it had something like 8k of memory — 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.</p>
+
+<p>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 — he must have really regretted that day.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>The original Emacs did not have Lisp in it. The lower level
+language, the non-interpreted language — was <abbr>PDP</abbr>-10
+Assembler. The interpreter we wrote in that actually wasn't written
+for Emacs, it was written for <acronym title="Text Editor and
+COrrector">TECO</acronym>. 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 ‘5l’, meaning ‘move five lines’, or
+‘i’ 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.</p>
+
+<p>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 < >. 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
+<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 <acronym>TECO</acronym>.</p>
+
+<p>We started putting in rather sophisticated facilities, all with the
+ugliest syntax you could ever think of, and it worked — people were
+able to write large programs in it anyway. The obvious lesson was that
+a language like <acronym>TECO</acronym>, 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.</p>
+
+<p>It was Bernie Greenberg, who discovered that it
+was <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 — 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.</p>
+
+<p>So Bernie saw that an application — a program that does something
+useful for you — 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 — at the
+stage where it's the hardest — where they don't believe they can
+program, until they get to the point where they are programmers.</p>
+
+<p>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 — it was a full-fledged Lisp system — 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 — 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 <acronym>TECO</acronym>
+primitives. For instance, there was a <acronym>TECO</acronym>
+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 <acronym>TECO</acronym>
+program). You could do the whole job by writing
+a <acronym>TECO</acronym> 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.</p>
+
+<p>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 — manipulating editor buffers,
+inserting leading text, reading and writing files, redisplaying the
+buffer on the screen, managing editor windows.</p>
+
+<p>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 <abbr>MIT</abbr>. Someone wanted to port it to run on Twenex — it
+originally only ran on the Incompatible Timesharing System we used
+at <abbr>MIT</abbr>. 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 “you had to send back all of your improvements” so we
+could all benefit. No one ever tried to enforce that, but as far as I
+know people did cooperate.</p>
+
+<p>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 — 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.</p>
+
+<p>At that time I was working on the GNU system (a free software
+Unix-like operating system that many people erroneously call
+“Linux”). 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
+‘mocklisp’, 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.</p>
+
+<p>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.</p>
+
+<p>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 — it's now possible to run Lisp code during redisplay. It's
+quite a convenient thing.</p>
+
+<p>This second Emacs program was ‘free software’ in the
+modern sense of the term — 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 <abbr>MIT</abbr>, working together on software and working with
+whomever wanted to work with us. That is the basis for the free
+software movement — the experience I had, the life that I've lived at
+the <abbr>MIT</abbr> AI lab — to be working on human knowledge, and
+not be standing in the way of anybody's further using and further
+disseminating human knowledge.</p>
+
+<p>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 <tt>car</tt> of a number, it got nonsensical results and eventually
+crashed at some point.</p>
+
+<p>The Lisp machine was able to execute instructions about as fast as
+those other machines, but each instruction — a car instruction would
+do data typechecking — so when you tried to get the car 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.</p>
+
+<p>There were two different ideas about what this company should be
+like. Greenblatt wanted to start what he called a
+“hacker” 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 <a 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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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, “Let's ditch Greenblatt, forget his ideas, and
+we'll make another company.” 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.</p>
+
+<p>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.</p>
+
+<p>Thus, the abandonment of our lab was followed by “war”
+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 <abbr>MIT</abbr>, so they had to leave entirely, which left only
+me. The AI lab was now helpless. And <abbr>MIT</abbr> 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 <abbr>MIT</abbr> use
+their changes. But it didn't say in the contract that <abbr>MIT</abbr>
+was entitled to put them into the <abbr>MIT</abbr> 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.</p>
+
+<p> So Symbolics came up with a plan <a href="#foot-4">(4)</a>. They
+said to the lab, “We will continue making our changes to the
+system available for you to use, but you can't put it into
+the <abbr>MIT</abbr> 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.”</p>
+
+<p>This, in effect, meant that they demanded that we had to choose a
+side, and use either the <abbr>MIT</abbr> 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 <abbr>MIT</abbr> 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.</p>
+
+<p>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 <a href="#foot-5">(5)</a> — 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).</p>
+
+<p>After a while <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.</p>
+
+<p>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 <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.</p>
+
+<p>The Lisp community in the 70s was not limited to
+the <abbr>MIT</abbr> AI Lab, and the hackers were not all
+at <abbr>MIT</abbr>. The war that Symbolics started was what wiped
+out <abbr>MIT</abbr>, 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.</p>
+
+<p>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 — the
+only way that people could work together and share was with a free
+operating system.</p>
+
+<p>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 — 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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>For instance, at the time the only looping construct was
+‘while’, which was extremely simple. There was no way to
+break out of the ‘while’ 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
+‘caar’ and ‘cadr’ and so on; “squeeze
+out everything possible” was the spirit of GNU Emacs, the spirit
+of Emacs Lisp, from the beginning.</p>
+
+<p>Obviously, machines are bigger now, and we don't do it that way
+any more. We put in ‘caar’ and ‘cadr’ 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 <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.</p>
+
+<p>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.</p>
+
+<p>At the time, <acronym title="Tool Command Language">TCL</acronym>
+was being pushed heavily for this purpose. I had a very low opinion
+of <acronym>TCL</acronym>, 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 <acronym>TCL</acronym> to make it the
+“de-facto standard extension language” of the world. And I
+thought, “We've got to stop that from happening.” 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 <acronym>TCL</acronym> was linked into
+applications. We would then recommend that as the preferred
+extensibility package for all GNU programs.</p>
+
+<p>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 <acronym>TCL</acronym>, you can't very easily implement Lisp by
+translating it into <acronym>TCL</acronym>. 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 <acronym>TCL</acronym> 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.</p>
+
+<p>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 — saying “Please, application
+developer, put my language into your application, not his
+language.” Then the users get no choices at all — 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.</p>
+
+<p>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 non-free program, you have lost crucial freedom, so don't
+ever do that.</p>
+
+<p>The purpose of the GNU project is to make it easier for people to
+reject freedom-trampling, user-dominating, non-free software by
+providing free software to replace it. For those who don't have the
+moral courage to reject the non-free 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.</p>
+
+<p>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 non-free 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
+non-free software.</p>
+
+<p>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/">http://www.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, “Free
+Software and Free Society”, is on sale and can be purchased at
+<a href="http://www.gnu.org/">www.gnu.org</a>. Happy hacking!</p>
+
+<ol>
+<li id="foot-1">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.</li>
+
+<li id="foot-2">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.</li>
+
+<li id="foot-3">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.</li>
+
+<li id="foot-4">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 — even though the
+contract did not require this. Symbolics' plan was to rupture this
+cooperation unilaterally.</li>
+
+<li id="foot-5">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.</li>
+
+<li id="foot-6">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.
+
+<p>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.</p></li>
+
+<li id="foot-7">Symbolics at one point protested to MIT that my work,
+by thwarting their plan, had cost Symbolics a million dollars.</li>
+
+<li id="foot-8">I don't mind if a very complex and heavyweight
+function takes keyword arguments. What bothers me is making simple
+basic functions such as “member” use them.</li>
+</ol>
+
+</div><!-- for id="content", starts in the include above -->
+<!--#include virtual="/server/footer.html" -->
+<div id="footer">
+<div class="unprintable">
+
+<p>Please send general FSF & GNU inquiries to
+<a href="mailto:address@hidden"><address@hidden></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:address@hidden"><address@hidden></a>.</p>
+
+<p><!-- 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 href="mailto:address@hidden">
+ <address@hidden></a>.</p>
+
+ <p>For information on coordinating and submitting translations of
+ our web pages, see <a
+ href="/server/standards/README.translations.html">Translations
+ README</a>. -->
+Please see the <a
+href="/server/standards/README.translations.html">Translations
+README</a> for information on coordinating and submitting translations
+of this article.</p>
+</div>
+
+<!-- Regarding copyright, in general, standalone pages (as opposed to
+ files generated as part of manuals) on the GNU web server should
+ be under CC BY-ND 3.0 US. Please do NOT change or remove this
+ without talking with the webmasters or licensing team first.
+ Please make sure the copyright date is consistent with the
+ document. For web pages, it is ok to list just the latest year the
+ document was modified, or published.
+
+ If you wish to list earlier years, that is ok too.
+ Either "2001, 2002, 2003" or "2001-2003" are ok for specifying
+ years, as long as each year in the range is in fact a copyrightable
+ year, i.e., a year in which the document was published (including
+ being publicly visible on the web or in a revision control system).
+
+ There is more detail about copyright years in the GNU Maintainers
+ Information document, www.gnu.org/prep/maintain. -->
+
+<p>Copyright © 2003, 2007, 2013, 2014 Free Software Foundation, Inc.</p>
+
+<p>This page is licensed under a <a rel="license"
+href="http://creativecommons.org/licenses/by-nd/3.0/us/">Creative
+Commons Attribution-NoDerivs 3.0 United States License</a>.</p>
+
+<!--#include virtual="/server/bottom-notes.html" -->
+
+<p class="unprintable">Updated:
+<!-- timestamp start -->
+$Date: 2018/07/30 07:32:29 $
+<!-- timestamp end -->
+</p>
+</div>
+</div>
+</body>
+</html>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- www/gnu po/rms-lisp.translist po/rms-lisp.zh-cn...,
GNUN <=