summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/ru/rms-lisp.html
diff options
context:
space:
mode:
Diffstat (limited to 'talermerchantdemos/blog/articles/ru/rms-lisp.html')
-rw-r--r--talermerchantdemos/blog/articles/ru/rms-lisp.html102
1 files changed, 62 insertions, 40 deletions
diff --git a/talermerchantdemos/blog/articles/ru/rms-lisp.html b/talermerchantdemos/blog/articles/ru/rms-lisp.html
index 2a5fdab..3a8e351 100644
--- a/talermerchantdemos/blog/articles/ru/rms-lisp.html
+++ b/talermerchantdemos/blog/articles/ru/rms-lisp.html
@@ -1,18 +1,32 @@
<!--#set var="ENGLISH_PAGE" value="/gnu/rms-lisp.en.html" -->
<!--#include virtual="/server/header.ru.html" -->
-<!-- Parent-Version: 1.77 -->
+<!-- Parent-Version: 1.96 -->
+<!-- This page is derived from /server/standards/boilerplate.html -->
+<!--#set var="TAGS" value="gnu-history" -->
+<!--#set var="DISABLE_TOP_ADDENDUM" value="yes" -->
<!-- This file is automatically generated by GNUnited Nations! -->
<title>Мой опыт работы с Лиспом и развитие GNU Emacs - Проект GNU - Фонд свободного
программного обеспечения</title>
+<style type="text/css" media="print,screen"><!--
+a[href*='#foot-'] { font-size: .94em; }
+-->
+</style>
<!--#include virtual="/gnu/po/rms-lisp.translist" -->
<!--#include virtual="/server/banner.ru.html" -->
+<!--#include virtual="/gnu/gnu-breadcrumb.ru.html" -->
+<!--GNUN: OUT-OF-DATE NOTICE-->
+<!--#include virtual="/server/top-addendum.ru.html" -->
+<div class="article reduced-width">
<h2>Мой опыт работы с Лиспом и развитие GNU Emacs</h2>
-<blockquote><p>(Запись речи Ричарда Столмена, произнесенной 28&nbsp;октября 2002&nbsp;года
-на Международной конференции по Лиспу).</p></blockquote>
+<div class="infobox">
+<p>Запись речи Ричарда Столмена на Международной конференции по Лиспу, 28
+октября 2002.</p>
+</div>
+<hr class="thin" />
<p>Поскольку ни одна из моих обычных речей не имеет никакого отношения к Лиспу,
ни одна из них не подходит для сегодняшнего выступления. Так что мне
@@ -64,24 +78,24 @@
<p>В первоначальном Emacs Лиспа не было. Языком низкого уровня&nbsp;&mdash;
неинтерпретируемым языком&nbsp;&mdash; был ассемблер PDP-10. Интерпретатор,
который мы писали, на самом деле писался не для Emacs, он писался для
-TECO&nbsp;<a href="#tf1">[1]</a>. Это был наш текстовый редактор и крайне
+TECO&nbsp;<a href="#tf1">(1)</a>. Это был наш текстовый редактор и крайне
уродливый язык программирования, настолько уродливый, насколько это только
возможно. Причина была в том, что он не был спроектирован как язык
программирования, он был спроектирован как язык редактора и команд. Были
-такие команды, как &ldquo;5l&rdquo;, что означало &ldquo;передвинуться на
-пять строк&rdquo;, или &ldquo;i&rdquo; с последующим текстом и <em>ESC</em>
-для того, чтобы вставить этот текст. Можно было набрать строку, которая была
+такие команды, как <code>5l</code>, что означало <code>передвинуться на пять
+строк</code>, или <code>i</code> с последующим текстом и <kbd>ESC</kbd> для
+того, чтобы вставить этот текст. Можно было набрать строку, которая была
последовательностью команд, это называлось командной строкой. Она
-завершалась символами <em>ESC</em> <em>ESC</em>, и тогда последовательность
-выполнялась.</p>
+завершалась символами <kbd>ESC</kbd> <kbd>ESC</kbd>, и тогда
+последовательность выполнялась.</p>
<p>Ну, люди хотели дополнить этот язык средствами программирования, так что они
добавили некоторые такие средства. Например, одной из первых была добавлена
-конструкция цикла, это были <em>&lt;</em> <em>&gt;</em>. Ими окружали
-команды, и это был цикл. Были другие непонятные команды, которыми можно было
-пользоваться для условного выхода из цикла. При создании Emacs мы&nbsp;<a
-href="#foot-1">(1)</a> добавили возможность создания подпрограмм с
-именами. До того это было вроде Бейсика, в именах подпрограмм могло быть
+конструкция цикла, это были <code>&lt;</code> <code>&gt;</code>. Ими
+окружали команды, и это был цикл. Были другие непонятные команды, которыми
+можно было пользоваться для условного выхода из цикла. При создании Emacs
+мы&nbsp;<a href="#foot-1">[1]</a> добавили возможность создания подпрограмм
+с именами. До того это было вроде Бейсика, в именах подпрограмм могло быть
только по одной букве. Писать на этом большие программы было трудно, так что
мы дописали программу, чтобы у них могли быть более длинные имена. На самом
деле там были довольно замысловатые средства; по-моему, средство
@@ -97,7 +111,7 @@ href="#foot-1">(1)</a> добавили возможность создания
программирования. Фактически, мы обнаружили, что лучшим языком
программирования для этих целей был Лисп.</p>
-<p>Это открыл Берни Гринберг&nbsp;<a href="#foot-2">(2)</a>. Он написал версию
+<p>Это открыл Берни Гринберг&nbsp;<a href="#foot-2">[2]</a>. Он написал версию
Emacs на MacLisp в Multics, и он писал свои программы на MacLisp
прямолинейным манером. Сам редактор был полностью написан на Лиспе. Emacs
для Multics имел большой успех&nbsp;&mdash; программирование новых команд
@@ -233,7 +247,7 @@ Unix, которую многие ошибочно называют &ldquo;Linux
компанией. Это означало, что это была бы компания под управлением хакеров и
работающая благоприятным для хакеров образом. Другой целью была поддержка
культуры Лаборатории искусственного интеллекта&nbsp;<a
-href="#foot-3">(3)</a>. К сожалению, у Гринблэтта не было никакого делового
+href="#foot-3">[3]</a>. К сожалению, у Гринблэтта не было никакого делового
опыта, так что другие люди из группы машины-Лиспа говорили, что они
сомневаются в том, что он сможет это сделать. Они думали, что избежать
внешних капиталовложений, как он планировал, не удастся.</p>
@@ -284,7 +298,7 @@ Symbolics переманила всех хакеров, кроме меня и
которые лицензировали обе компании. Никто не предвидел, что группу хакеров
Лаборатории искусственного интеллекта разгонят, но так и случилось.</p>
-<p> Итак, в Symbolics созрел план&nbsp;<a href="#foot-4">(4)</a>. Они сказали
+<p> Итак, в Symbolics созрел план&nbsp;<a href="#foot-4">[4]</a>. Они сказали
лаборатории: &ldquo;Мы продолжим предоставлять в ваше пользование свои
изменения в системе, но вам нельзя размещать их в системе машины-Лиспа
института. Вместо этого мы предоставим вам доступ к системе машины-Лиспа
@@ -304,11 +318,11 @@ Symbolics, и вы сможете работать на ней, но это вс
было больно видеть, что произошло с нашим сообществом и программами. Но
теперь компания Symbolics принуждала меня к этому. Итак, пытаясь помочь
компании Lisp Machines Inc. удержаться на плаву&nbsp;<a
-href="#foot-5">(5)</a>, я начал дублировать все улучшения в системе
+href="#foot-5">[5]</a>, я начал дублировать все улучшения в системе
машины-Лиспа, которые делали в Symbolics. Я писал эквивалентные улучшения
сам (т.е. тексты программ были моими собственными).</p>
-<p>Через некоторое время&nbsp;<a href="#foot-6">(6)</a> я пришел к заключению,
+<p>Через некоторое время&nbsp;<a href="#foot-6">[6]</a> я пришел к заключению,
что было бы лучше всего, если бы я даже не заглядывал в их тексты. Когда
они делали объявление о выпуске предварительной версии, в котором было
описание выпуска, я видел, какие там были функции, а потом реализовывал
@@ -319,7 +333,7 @@ href="#foot-5">(5)</a>, я начал дублировать все улучше
компании продолжали работу. Но я не хотел тратить долгие годы на то, чтобы
наказать кого-то, просто мешая злому делу. Я увидел, что они наказаны
довольно основательно, потому что они наткнулись на конкуренцию, которая не
-уходила и не собиралась исчезать&nbsp;<a href="#foot-7">(7)</a>. Тем
+уходила и не собиралась исчезать&nbsp;<a href="#foot-7">[7]</a>. Тем
временем пришла пора начать обустройство нового сообщества взамен того,
которое было уничтожено их действиями и действиями других.</p>
@@ -362,21 +376,21 @@ Emacs. Это значило, что мне нужно ограничивать
размером.</p>
<p>Например, в то время единственной циклической конструкцией была
-&ldquo;while&rdquo;, которая была крайне проста. Не было никаких способов
-досрочного выхода из оператора &ldquo;while&rdquo;, приходилось просто
+<code>while</code>, которая была крайне проста. Не было никаких способов
+досрочного выхода из оператора <code>while</code>, приходилось просто
пользоваться механизмом исключений или проверять переменную в цикле. Это
показывает, как далеко я зашел в ограничениях на размер. У нас не было
-&ldquo;caar&rdquo;, &ldquo;cadr&rdquo; и так далее; &ldquo;выжать все
+<code>caar</code>, <code>cadr</code> и так далее; &ldquo;выжать все
возможное&rdquo;&nbsp;&mdash; таким духом был пропитан GNU Emacs и его Лисп
с самого начала.</p>
<p>Разумеется, машины сейчас больше, и мы уже так не делаем. Мы заложили
-&ldquo;caar&rdquo;, &ldquo;cadr&rdquo; и так далее, и сейчас при случае мы
+<code>caar</code>, <code>cadr</code> и так далее, и сейчас при случае мы
могли бы заложить другую циклическую конструкцию. Мы охотно расширим его в
некоторых пределах, но мы не хотим расширять его до уровня Общего Лиспа. Я
однажды реализовывал Общий Лисп на машине-Лиспе, и мне он не так уж
понравился. Одна из вещей, которые мне ужасно не нравятся&nbsp;&mdash;
-аргументы-ключевые слова&nbsp;<a href="#foot-8">(8)</a>. На мой взгляд, это
+аргументы-ключевые слова&nbsp;<a href="#foot-8">[8]</a>. На мой взгляд, это
выглядит не совсем по-лисповски; иногда я пишу так, но я свожу к минимуму
число случаев, когда я это делаю.</p>
@@ -388,7 +402,7 @@ Emacs. Это значило, что мне нужно ограничивать
быть язык.</p>
<p>В то время для этих целей усиленно продвигался TCL&nbsp;<a
-href="#tf2">[2]</a>. Я был очень невысокого мнения о TCL, в основном потому,
+href="#tf2">(2)</a>. Я был очень невысокого мнения о TCL, в основном потому,
что это был не Лисп. Он выглядел слегка похожим на Лисп, но семантически он
им не был, и он был не таким ясным. Потом кто-то показал мне объявление, в
котором компания Sun пыталась нанять кого-нибудь для работы над TCL, чтобы
@@ -463,16 +477,18 @@ href="#tf2">[2]</a>. Я был очень невысокого мнения о T
и нам, очевидно, еще много предстоит пройти. Так что нам нужна ваша
помощь. Я хотел бы попросить вас стать добровольцами проекта GNU; помогите
нам разработать свободные программы для новых задач. Загляните на <a
-href="/help/"> http://www.gnu.org/help</a> за предложениями того, как
-помочь. Если вы хотите заказать что-то, на это есть ссылка с домашней
-страницы. Если вы хотите почитать о философских вопросах, загляните в
-/philosophy. Если вы ищете свободные программы для пользования, загляните в
-/directory, где сейчас перечислено около 1900&nbsp;пакетов (это только часть
-всех свободных программ, какие есть). Пожалуйста, пишите новые программы и
-передавайте нам. Мой сборник очерков, &ldquo;Свободные программы и свободное
-общество&rdquo;, находится в продаже, и его можно приобрести на <a
-href="http://www.gnu.org/">www.gnu.org</a>. Всего доброго!</p>
-
+href="/help/">gnu.org/help</a> за предложениями того, как помочь. Если вы
+хотите заказать что-то, на это есть ссылка с домашней страницы. Если вы
+хотите почитать о философских вопросах, загляните в /philosophy. Если вы
+ищете свободные программы для пользования, загляните в /directory, где
+сейчас перечислено около 1900&nbsp;пакетов (это только часть всех свободных
+программ, какие есть). Пожалуйста, пишите новые программы и передавайте
+нам. Мой сборник очерков, &ldquo;Свободные программы и свободное
+общество&rdquo;, находится в продаже, и его можно приобрести на
+www.gnu.org. Всего доброго!</p>
+<div class="column-limit"></div>
+
+<h3 class="footnote">Примечания</h3>
<ol>
<li id="foot-1">Гай Стил составил первоначальный симметричный набор команд Emacs; потом мы с
ним начали реализовывать Emacs (на базе TECO), но после одной длительной
@@ -517,7 +533,12 @@ Symbolics. Через некоторое время я сделал вывод,
<li id="foot-8">Я не возражаю, если очень сложная и громоздкая функция принимает
аргументы-кодовые слова. Беспокоит меня случай, когда ими пользуются такие
простые функции, как &ldquo;member&rdquo;.</li>
+
+<li id="foot-9">В 2021 году эту книгу можно купить в магазине <a
+href="https://shop.fsf.org/books-docs/free-software-free-society-selected-essays-richard-m-stallman-3rd-edition">GNU
+Press</a>.</li>
</ol>
+</div>
<div class="translators-notes">
@@ -534,7 +555,7 @@ Command Language</span>&nbsp;&mdash; англ. инструментальный
<!-- for id="content", starts in the include above -->
<!--#include virtual="/server/footer.ru.html" -->
-<div id="footer">
+<div id="footer" role="contentinfo">
<div class="unprintable">
<p>Пожалуйста, присылайте общие запросы фонду и GNU по адресу <a
@@ -554,7 +575,7 @@ href="/contact/">другие способы связаться</a> с фонд
&lt;web-translators@gnu.org&gt;</a>.</p>
- <p>For information on coordinating and submitting translations of
+ <p>For information on coordinating and contributing translations of
our web pages, see <a
href="/server/standards/README.translations.html">Translations
README</a>. -->
@@ -583,7 +604,7 @@ href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>.
There is more detail about copyright years in the GNU Maintainers
Information document, www.gnu.org/prep/maintain. -->
-<p>Copyright &copy; 2003, 2007, 2013, 2014, 2020 Free Software Foundation, Inc.</p>
+<p>Copyright &copy; 2003, 2007, 2021, 2013, 2021 Free Software Foundation, Inc.</p>
<p>Это произведение доступно по <a rel="license"
href="http://creativecommons.org/licenses/by-nd/4.0/deed.ru">лицензии
@@ -603,11 +624,12 @@ gnu.org</a>.</em></div>
<p class="unprintable"><!-- timestamp start -->
Обновлено:
-$Date: 2020/07/01 17:02:57 $
+$Date: 2021/11/02 17:04:14 $
<!-- timestamp end -->
</p>
</div>
</div>
+<!-- for class="inner", starts in the banner include -->
</body>
</html>