diff options
Diffstat (limited to 'talermerchantdemos/blog/articles/ru/rms-lisp.html')
-rw-r--r-- | talermerchantdemos/blog/articles/ru/rms-lisp.html | 102 |
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 октября 2002 года -на Международной конференции по Лиспу).</p></blockquote> +<div class="infobox"> +<p>Запись речи Ричарда Столмена на Международной конференции по Лиспу, 28 +октября 2002.</p> +</div> +<hr class="thin" /> <p>Поскольку ни одна из моих обычных речей не имеет никакого отношения к Лиспу, ни одна из них не подходит для сегодняшнего выступления. Так что мне @@ -64,24 +78,24 @@ <p>В первоначальном Emacs Лиспа не было. Языком низкого уровня — неинтерпретируемым языком — был ассемблер PDP-10. Интерпретатор, который мы писали, на самом деле писался не для Emacs, он писался для -TECO <a href="#tf1">[1]</a>. Это был наш текстовый редактор и крайне +TECO <a href="#tf1">(1)</a>. Это был наш текстовый редактор и крайне уродливый язык программирования, настолько уродливый, насколько это только возможно. Причина была в том, что он не был спроектирован как язык программирования, он был спроектирован как язык редактора и команд. Были -такие команды, как “5l”, что означало “передвинуться на -пять строк”, или “i” с последующим текстом и <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><</em> <em>></em>. Ими окружали -команды, и это был цикл. Были другие непонятные команды, которыми можно было -пользоваться для условного выхода из цикла. При создании Emacs мы <a -href="#foot-1">(1)</a> добавили возможность создания подпрограмм с -именами. До того это было вроде Бейсика, в именах подпрограмм могло быть +конструкция цикла, это были <code><</code> <code>></code>. Ими +окружали команды, и это был цикл. Были другие непонятные команды, которыми +можно было пользоваться для условного выхода из цикла. При создании Emacs +мы <a href="#foot-1">[1]</a> добавили возможность создания подпрограмм +с именами. До того это было вроде Бейсика, в именах подпрограмм могло быть только по одной букве. Писать на этом большие программы было трудно, так что мы дописали программу, чтобы у них могли быть более длинные имена. На самом деле там были довольно замысловатые средства; по-моему, средство @@ -97,7 +111,7 @@ href="#foot-1">(1)</a> добавили возможность создания программирования. Фактически, мы обнаружили, что лучшим языком программирования для этих целей был Лисп.</p> -<p>Это открыл Берни Гринберг <a href="#foot-2">(2)</a>. Он написал версию +<p>Это открыл Берни Гринберг <a href="#foot-2">[2]</a>. Он написал версию Emacs на MacLisp в Multics, и он писал свои программы на MacLisp прямолинейным манером. Сам редактор был полностью написан на Лиспе. Emacs для Multics имел большой успех — программирование новых команд @@ -233,7 +247,7 @@ Unix, которую многие ошибочно называют “Linux компанией. Это означало, что это была бы компания под управлением хакеров и работающая благоприятным для хакеров образом. Другой целью была поддержка культуры Лаборатории искусственного интеллекта <a -href="#foot-3">(3)</a>. К сожалению, у Гринблэтта не было никакого делового +href="#foot-3">[3]</a>. К сожалению, у Гринблэтта не было никакого делового опыта, так что другие люди из группы машины-Лиспа говорили, что они сомневаются в том, что он сможет это сделать. Они думали, что избежать внешних капиталовложений, как он планировал, не удастся.</p> @@ -284,7 +298,7 @@ Symbolics переманила всех хакеров, кроме меня и которые лицензировали обе компании. Никто не предвидел, что группу хакеров Лаборатории искусственного интеллекта разгонят, но так и случилось.</p> -<p> Итак, в Symbolics созрел план <a href="#foot-4">(4)</a>. Они сказали +<p> Итак, в Symbolics созрел план <a href="#foot-4">[4]</a>. Они сказали лаборатории: “Мы продолжим предоставлять в ваше пользование свои изменения в системе, но вам нельзя размещать их в системе машины-Лиспа института. Вместо этого мы предоставим вам доступ к системе машины-Лиспа @@ -304,11 +318,11 @@ Symbolics, и вы сможете работать на ней, но это вс было больно видеть, что произошло с нашим сообществом и программами. Но теперь компания Symbolics принуждала меня к этому. Итак, пытаясь помочь компании Lisp Machines Inc. удержаться на плаву <a -href="#foot-5">(5)</a>, я начал дублировать все улучшения в системе +href="#foot-5">[5]</a>, я начал дублировать все улучшения в системе машины-Лиспа, которые делали в Symbolics. Я писал эквивалентные улучшения сам (т.е. тексты программ были моими собственными).</p> -<p>Через некоторое время <a href="#foot-6">(6)</a> я пришел к заключению, +<p>Через некоторое время <a href="#foot-6">[6]</a> я пришел к заключению, что было бы лучше всего, если бы я даже не заглядывал в их тексты. Когда они делали объявление о выпуске предварительной версии, в котором было описание выпуска, я видел, какие там были функции, а потом реализовывал @@ -319,7 +333,7 @@ href="#foot-5">(5)</a>, я начал дублировать все улучше компании продолжали работу. Но я не хотел тратить долгие годы на то, чтобы наказать кого-то, просто мешая злому делу. Я увидел, что они наказаны довольно основательно, потому что они наткнулись на конкуренцию, которая не -уходила и не собиралась исчезать <a href="#foot-7">(7)</a>. Тем +уходила и не собиралась исчезать <a href="#foot-7">[7]</a>. Тем временем пришла пора начать обустройство нового сообщества взамен того, которое было уничтожено их действиями и действиями других.</p> @@ -362,21 +376,21 @@ Emacs. Это значило, что мне нужно ограничивать размером.</p> <p>Например, в то время единственной циклической конструкцией была -“while”, которая была крайне проста. Не было никаких способов -досрочного выхода из оператора “while”, приходилось просто +<code>while</code>, которая была крайне проста. Не было никаких способов +досрочного выхода из оператора <code>while</code>, приходилось просто пользоваться механизмом исключений или проверять переменную в цикле. Это показывает, как далеко я зашел в ограничениях на размер. У нас не было -“caar”, “cadr” и так далее; “выжать все +<code>caar</code>, <code>cadr</code> и так далее; “выжать все возможное” — таким духом был пропитан GNU Emacs и его Лисп с самого начала.</p> <p>Разумеется, машины сейчас больше, и мы уже так не делаем. Мы заложили -“caar”, “cadr” и так далее, и сейчас при случае мы +<code>caar</code>, <code>cadr</code> и так далее, и сейчас при случае мы могли бы заложить другую циклическую конструкцию. Мы охотно расширим его в некоторых пределах, но мы не хотим расширять его до уровня Общего Лиспа. Я однажды реализовывал Общий Лисп на машине-Лиспе, и мне он не так уж понравился. Одна из вещей, которые мне ужасно не нравятся — -аргументы-ключевые слова <a href="#foot-8">(8)</a>. На мой взгляд, это +аргументы-ключевые слова <a href="#foot-8">[8]</a>. На мой взгляд, это выглядит не совсем по-лисповски; иногда я пишу так, но я свожу к минимуму число случаев, когда я это делаю.</p> @@ -388,7 +402,7 @@ Emacs. Это значило, что мне нужно ограничивать быть язык.</p> <p>В то время для этих целей усиленно продвигался TCL <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 пакетов (это только часть -всех свободных программ, какие есть). Пожалуйста, пишите новые программы и -передавайте нам. Мой сборник очерков, “Свободные программы и свободное -общество”, находится в продаже, и его можно приобрести на <a -href="http://www.gnu.org/">www.gnu.org</a>. Всего доброго!</p> - +href="/help/">gnu.org/help</a> за предложениями того, как помочь. Если вы +хотите заказать что-то, на это есть ссылка с домашней страницы. Если вы +хотите почитать о философских вопросах, загляните в /philosophy. Если вы +ищете свободные программы для пользования, загляните в /directory, где +сейчас перечислено около 1900 пакетов (это только часть всех свободных +программ, какие есть). Пожалуйста, пишите новые программы и передавайте +нам. Мой сборник очерков, “Свободные программы и свободное +общество”, находится в продаже, и его можно приобрести на +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">Я не возражаю, если очень сложная и громоздкая функция принимает аргументы-кодовые слова. Беспокоит меня случай, когда ими пользуются такие простые функции, как “member”.</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> — англ. инструментальный <!-- 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> с фонд <web-translators@gnu.org></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"><web-translators@gnu.org></a>. There is more detail about copyright years in the GNU Maintainers Information document, www.gnu.org/prep/maintain. --> -<p>Copyright © 2003, 2007, 2013, 2014, 2020 Free Software Foundation, Inc.</p> +<p>Copyright © 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> |