summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/uk/rms-lisp.html
diff options
context:
space:
mode:
Diffstat (limited to 'talermerchantdemos/blog/articles/uk/rms-lisp.html')
-rw-r--r--talermerchantdemos/blog/articles/uk/rms-lisp.html554
1 files changed, 284 insertions, 270 deletions
diff --git a/talermerchantdemos/blog/articles/uk/rms-lisp.html b/talermerchantdemos/blog/articles/uk/rms-lisp.html
index 080cc4d..904452b 100644
--- a/talermerchantdemos/blog/articles/uk/rms-lisp.html
+++ b/talermerchantdemos/blog/articles/uk/rms-lisp.html
@@ -1,18 +1,32 @@
<!--#set var="ENGLISH_PAGE" value="/gnu/rms-lisp.en.html" -->
<!--#include virtual="/server/header.uk.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>Мій досвід роботи з Лsспом і розвиток GNU Emacs - Проект GNU - Фонд вільного
+<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.uk.html" -->
+<!--#include virtual="/gnu/gnu-breadcrumb.uk.html" -->
+<!--GNUN: OUT-OF-DATE NOTICE-->
+<!--#include virtual="/server/top-addendum.uk.html" -->
+<div class="article reduced-width">
<h2>Мій досвід роботи з Ліспом і розвиток GNU Emacs</h2>
-<blockquote><p>(Запис промови Річарда Столмена, виголошеної 28&nbsp;жовтня 2002&nbsp;року
-на Міжнародній конференції по Ліспу).</p></blockquote>
+<div class="infobox">
+<p>Запис промови Річарда Столмена, виголошеної 28&nbsp;жовтня 2002&nbsp;року на
+Міжнародній конференції по Ліспу.</p>
+</div>
+<hr class="thin" />
<p>Оскільки жодна з моїх звичайних промов не має ніякого відношення до Ліспа,
то ні одна з них не підходить для сьогоднішнього виступу. Тому мені
@@ -20,33 +34,34 @@
доводилося виконувати досить багато роботи, пов'язаної з Ліспом, у мене,
мабуть, є що розказати.</p>
-<p>Моя перша зустріч з Ліспом сталася, коли я прочитав посібник Лісп&nbsp;1.5 у
-старших класах. Саме тоді мене вразила ідея, що може бути така мова
+<p>Моя перша зустріч з Ліспом сталася, коли я прочитав посібник Ліспа&nbsp;1.5
+у старших класах. Саме тоді мене вразила ідея, що може бути така мова
програмування. Можливість зробити що-небудь на Ліспі вперше з'явилася у
мене, коли я був на молодших курсах в Гарварді і писав інтерпретатор Ліспа
-для PDP-11. Це була дуже маленька машина&nbsp;&mdash; у ній було щось на
-зразок 8k пам'яті,&mdash; і мені вдалося написати інтерпретатор довжиною в
-тисячу команд. Це залишало мені трохи місця для даних. Це було до того, як я
+для <abbr title="Programmed Data Processor — програмованого обробника
+даних">PDP</abbr>-11. Це була дуже маленька машина: у ній було десь біля 8
+кБ пам'яті &mdash; й мені вдалося написати інтерпретатор довжиною в тисячу
+команд. Це залишало мені трохи місця для даних. Це було до того, як я
дізнався, як виглядають справжні програми, які виконують справжні системні
завдання.</p>
<p>Я почав виконувати роботи над справжньою реалізацією Ліспа з Джоном-Л Уайтом
відразу, коли мене прийняли у <abbr title="Massachusetts Institute of
-Technology">MIT</abbr>. Туди мене прийняв не Джон-Л, а Расселл Нофтскер, що
-було вельми іронічно з огляду на те, що трапилося згодом&nbsp;&mdash; він,
-вірогідно, сильно про це шкодував.</p>
-
-<p>У сімдесяті роки XX&nbsp;століття, до того, як моє життя в політизувалося
-внаслідок жахливих подій, я просто робив одне розширення одних програм за
-іншими, і більшість з них не мали жодного стосунку до Ліспа. Але водночас я
-писав текстовий редактор Emacs. Цікава думка, закладена в Emacs, полягала в
-тому, що в ньому була мова програмування, і користувацькі команди
-редагування писалися на цій інтерпретованій мові програмування, тому під час
-редагування у редактор можна було завантажувати нові команди. Можна було
-підредагувати програми, якими користуєшся, а потім продовжувати редагувати
-ними. Отже, у нас була система, корисна не для програмування, і все-таки під
-час користування нею можна було програмувати. Я не знаю, чи це була перша
-така система, але це точно був перший такий редактор.</p>
+Technology — Массачусетський інститут технологій">MIT</abbr>. Туди мене
+прийняв не Джон-Л, а Расселл Нофтскер, що було вельми іронічно з огляду на
+те, що трапилося згодом&nbsp;&mdash; він, імовірно, сильно про це шкодував.</p>
+
+<p>У сімдесятих роках XX&nbsp;століття, до того, як огидні події політизували
+моє життя, я просто писав розширення до різноманітних програм, більшість із
+яких не мали жодного стосунку до Ліспа. Але водночас я писав текстовий
+редактор Emacs. Цікава думка, закладена в Emacs, полягала в тому, що в ньому
+була мова програмування, і користувацькі команди редагування писалися на цій
+інтерпретованій мові програмування, тому під час редагування у редактор
+можна було завантажувати нові команди. Можна було підредагувати програми,
+якими користуєшся, а потім продовжувати редагувати ними. Отже, у нас була
+система, корисна не для програмування, і все-таки під час користування нею
+можна було програмувати. Я не знаю, чи це була перша така система, але це
+точно був перший такий редактор.</p>
<p>Ця атмосфера побудови гігантських, складних програм для застосування в
своєму власному редагуванні, а потім обміну ними з іншими людьми, живила дух
@@ -55,37 +70,37 @@ Technology">MIT</abbr>. Туди мене прийняв не Джон-Л, а Р
потрібна. Ми обмінювалися програмами з усіма, хто тільки хотів ними
користуватися, програми були людським знанням. Отож, хоча і не було
організованої політичної думки, яка б поєднувала те, як ми обмінювалися
-програмами зі облаштуванням Emacs, я переконаний, що між ними був
-зв'язок&nbsp;&nbsp; можливо, неусвідомлений. Я думаю, що саме природа нашого
-способу життя в Лабораторії штучного інтелекту привела до створення Emacs і
-зробила його таким, яким він був.</p>
+програмами, з облаштуванням Emacs, я переконаний, що між ними був
+зв'язок&nbsp;&mdash; можливо, неусвідомлений. Я думаю, що саме природа
+нашого способу життя в Лабораторії штучного інтелекту привела до створення
+Emacs і зробила його таким, яким він був.</p>
<p>У первісному Emacs Ліспа не було. Мовою низького рівня&nbsp;&mdash;
-неітерпретованою мовою&nbsp;&nbsp; був асемблер PDP-10. Інтерпретатор, який
-ми писали, насправді писався не для Emacs, він писався для TECO&nbsp;<a
-href="#tf1">[1]</a>. Це був наш текстовий редактор і вкрай потворна мова
-програмування, настільки потворна, наскільки це взагалі можливо. Причина
+неінтерпретованою мовою&nbsp;&mdash; був асемблер PDP-10. Інтерпретатор,
+який ми писали, насправді писався не для Emacs, він писався для <abbr
+title="Text Editor and COrrector — редактора й коректора
+тексту">TECO</abbr>. Це були наші текстовий редактор і вкрай потворна мова
+програмування — настільки потворна, наскільки це взагалі можливо. Причина
була в тому, що вона не була спроектована як мова програмування, а натомість
-як мова редактора і команд. Були такі команди, як &ldquo;5l&rdquo;, що
-означало &ldquo;пересунутися на п'ять рядків&rdquo;, або &ldquo;i&rdquo; з
-наступним рядком та <em>ESC</em> для того, щоб вставити цей рядок. Можна
-було набрати рядок, який був послідовністю команд, який називався командним
-рядком. Він завершувався символами <em>ESC</em> <em>ESC</em>, і тоді
-послідовність виконувалася.</p>
+як мова редактора і команд. Були такі команди, як <code>5l</code>, що
+означало <code>пересунутися на п'ять рядків</code>, або <code>i</code> з
+наступним рядком та ESC для того, щоб вставити цей рядок. Можна було набрати
+рядок, який був послідовністю команд, який називався командним рядком. Тоді
+ви двічі натискали ESC — і послідовність виконувалася.</p>
<p>Втім люди хотіли доповнити цю мову засобами програмування, тому вони додали
-деякі засоби. Наприклад, однією з перших була додана конструкція циклу, це
-були <em>&lt;</em> <em>&gt;</em>. Нею оточували команди, і це був цикл. Були
-інші незрозумілі команди, якими можна було користуватися для умовного виходу
-з циклу. При створенні Emacs ми&nbsp;<a href="#foot-1">(1)</a> додали
-можливість створення підпрограм з іменами. До того це був ніби Бейсик, у
+деякі засоби. Наприклад, однією з перших була додана конструкція циклу:
+<code>&lt;&nbsp;&gt;</code>. Нею оточували команди, і це був цикл. Були інші
+незрозумілі команди, якими можна було користуватися для умовного виходу з
+циклу. При створенні Emacs ми&nbsp;<a href="#foot-1">[1]</a> додали
+можливість створення підпрограм з іменами. До того це був ніби Бейсик, а в
назвах підпрограм могло бути тільки по одній букві. Писати на цьому великі
-програми було важко, тому ми дописали програму, щоб у них могли мати довгі
+програми було важко, тому ми дописали програму, щоб у них могли бути довгі
назви. Насправді там були доволі хитромудрі засоби; здається, засіб
&ldquo;unwind-protect&rdquo; Лісп запозичив з TECO.</p>
<p>Ми почали закладати досить хитромудрі засоби, і у всіх у них був потворний
-синтаксис, який тільки-но можна придумати, і це працювало&nbsp;&nbsp; люди
+синтаксис, який тільки-но можна придумати, і це працювало&nbsp;&mdash; люди
все одно були у змозі писати на цьому великі програми. Очевидним уроком було
те, що така мова, як TECO, неспроектована як мова програмування,&mdash; є
хибним шляхом. Мова, на якій ви будуєте свої розширення, повинна
@@ -93,115 +108,114 @@ href="#tf1">[1]</a>. Це був наш текстовий редактор і
проектувати як мову програмування. Фактично, ми виявили, що найкращою мовою
програмування для цих цілей був Лісп.</p>
-<p>Це відкрив Берні Грінберг&nbsp;<a href="#foot-2">(2)</a>. Він написав версію
-Emacs на MacLisp в Multics, і він писав свої програми на MacLisp
-прямолінійним методом. Сам редактор був повністю написаний на Ліспі. Emacs
-для Multics мав великий успіх&nbsp;&nbsp; програмування нових команд
-редагування було таким зручним, що навіть секретарки в його конторі почали
-навчання користуванню ним. Вони користувалися посібником, яке хтось написав
-і в якому було показано, як доповнювати Emacs, але там не говорилося, що це
+<p>Це відкрив Берні Грінберг&nbsp;<a href="#foot-2">[2]</a>. Він написав версію
+Emacs на MacLisp в Multics, і написані ним MacLisp-команди були прості й
+зрозумілі. Сам редактор був повністю написаний на Ліспі. Emacs для Multics
+мав великий успіх&nbsp;&mdash; програмування нових команд редагування було
+таким зручним, що навіть секретарки в його конторі почали навчання
+користуванню ним. Вони користувалися написаним кимось посібником, у якому
+було показано, як доповнювати Emacs, але там не говорилося, що це
програмування. Тому секретарок, які думали, що не можуть програмувати, це не
відлякувало. Вони читали посібник, виявляли, що можуть робити щось корисне,
і вчилися програмувати.</p>
<p>Отож, Берні зрозумів, що застосунок &mdash; програма, яка робить щось
-корисне для вас&nbsp;&nbsp; всередині якої був Лісп і яку ви можете
-доповнювати, переписуючи програми на Ліспі,&mdash; насправді дуже хороший
+корисне для вас&nbsp;&mdash; всередині якої був Лісп і яку ви можете
+доповнювати, переписуючи програми на Ліспі, &mdash; насправді дуже хороший
спосіб навчитися програмувати. Це дає людям можливість писати невеликі
-програми, які для них корисні, чого в більшості областей ви напевно не
-можете. Вони можуть отримувати заохочення від практичної користі для них
+програми, які для них корисні; інші середовища не дають вам такої
+змоги. Вони можуть отримувати заохочення від практичної користі для них
самих на стадії, де це найважче&nbsp;&mdash; коли вони не думають, що можуть
-програмувати,&mdash; поки вони не дійдуть до точки, в якої вони вже стали
+програмувати, &mdash; поки вони не дійдуть до точки, в якої вони вже стали
програмістами.</p>
<p>У цей момент люди почали міркувати, як отримати щось подібне на платформі,
де у них не було повної реалізації Ліспа. У MacLisp для Multics був
компілятор та інтерпретатор&nbsp;&mdash; це була повністю оснащена система
Лісп&nbsp;&mdash; але людям кортілося впровадити подібне на інших системах,
-де у них не було вже написаного компілятора Ласпа. Ну, якщо у вас немає
-компілятора Ласпа, ви не можете написати весь редактор на Ліспі&nbsp;&mdash;
-він був би занадто повільним, особливо перемальовування, якщо б довелося
-виконувати Лисп на інтерпретаторі. Таким чином, ми розробили гібридну
-техніку. Ідея полягала в тому, щоб писати інтерпретатор Ліспа і
-низькорівневі частині редактора разом, тоді частини редактора ставали
+де у них не було вже написаного компілятора Ліспа. Ну, якщо у вас немає
+компілятора Ліспа, ви не можете написати весь редактор на Ліспі&nbsp;&mdash;
+він був би занадто повільним, особливо перемальовування, якби довелося
+виконувати Лісп на інтерпретаторі. Через це ми розробили гібридну
+техніку. Ідея полягала в тому, щоб писати інтерпретатор Ліспа й
+низькорівневі частини редактора разом: тоді частини редактора ставали
вбудованими засобами Ліспа. Це були б будь-які частини, в оптимізації яких
ми відчували необхідність. Цю методику ми вже свідомо практикували у
первісному Emacs, тому що були певні вельми високорівневі функції, які ми
-перереалізували на машинній мові, переробивши їх на примітиви
-TECO. Наприклад, був примітив TECO для заповнення абзацу (насправді для
-основної роботи із заповнення абзацу, тому що деякі з найменш ресурсомістких
-частин роботи виконувалися на вищому рівні програмою TECO). Можна було
-виконувати всю роботу, написавши програму на TECO, але вона була занадто
-повільною, так що ми оптимізували її, переносячи частину її на машинну
-мову. Тут (в гібридної техніки) ми скористалися тією ж ідеєю: велика частина
-редактора буде написана на Ліспі, але певні його частини, які потрібно було
-виконувати особливо швидко, будуть написані на низькому рівні.</p>
+втілили ще раз на машинній мові, переробивши їх на примітиви
+TECO. Наприклад, був примітив TECO для заповнення абзацу (насправді лише для
+основної роботи з заповнення абзацу, тому що деякі з менш ресурсомістких
+робіт виконувалися на вищому рівні програмою TECO). Можна було б виконувати
+всю роботу програмою, написаною на TECO, але це було занадто повільно, тож
+ми оптимізували це, перенісши частину програми на машинну мову. Тут (у
+гібридній техніці) ми скористалися тією ж ідеєю: велика частина редактора
+буде написана на Ліспі, але певні його частини, які потрібно було виконувати
+особливо швидко, будуть написані на низькому рівні.</p>
<p>Таким чином, коли я писав свою другу реалізацію Emacs, я дотримувався цієї
схеми. Мова низького рівня більше не була машинною мовою, це був Сі. Сі
виявилася доброю, ефективною мовою для переносних програм, призначених для
виконання у операційних системах на кшталт Unix. Там був інтерпретатор
Ліспа, але я реалізував засоби для вирішення спеціальних завдань редагування
-безпоередньо на Сі&nbsp;&nbsp; сюди входили маніпуляція буферами редактора,
-вставка тексту на початок, читання і запис файлів, оновлення буфера на
-екрані, управління вікнами редактора.</p>
+безпосередньо на Сі&nbsp;&mdash; сюди входили маніпуляція буферами
+редактора, вставка тексту на початок, читання і запис файлів, оновлення
+буфера на екрані, управління вікнами редактора.</p>
-<p>Доречі це був не перший Emacs, написаний на Сі і працював в Unix. Перший був
-написаний Джеймсом Гослінгом, його називали GosMacs. З них вийшла дивна
-історія. Спочатку він, здавалося, перебував під впливом тієї ж самої
+<p>До речі, це був не перший Emacs, написаний на Сі й виконуваний на
+Unix. Перший — GosMacs — був написаний Джеймсом Гослінгом. З ним трапилася
+дивна історія. Спочатку він, здавалося, перебував під впливом тієї ж самої
атмосфери обміну і співробітництва початкового Emacs. Я спочатку випускав
початковий Emacs для людей в Массачусетському технологічному
-інституті. Дехто захотів перенести його на Twenex&nbsp;&nbsp; спочатку
+інституті. Дехто захотів перенести його на Twenex&nbsp;&mdash; спочатку
редактор працював тільки у Несумісній системі поділу часу, якою ми
-користувалися в інституті. Вони перенесли його на Twenex, це означало, що в
-світі було кілька сотень обчислювальних систем, в яких потенційно можна було
-його застосовувати. Ми почали поширення серед них із правилом &ldquo; ви
+користувалися в інституті. Вони перенесли його на Twenex, і це означало, що
+в світі було кілька сотень обчислювальних систем, в яких потенційно можна
+було його застосовувати. Ми почали поширення серед них із правилом &ldquo;ви
повинні надсилати назад свої поліпшення&rdquo;, щоб ми всі могли отримувати
з цього користь. Ніхто ніколи не намагався стежити за дотриманням цього, але
наскільки я знаю, люди дійсно співпрацювали.</p>
<p>І Гослінг, на перших порах, здавалося, брав у цьому участь. Він написав
підручник, в якому він називав цю програму Emacs, сподіваючися, що інші
-члени співтовариства будуть покращувати її, поки вона не заслугожить цієї
-назви. Це був правильний підхід до спільноти&nbsp;&nbsp; просити їх
+члени співтовариства будуть покращувати її, поки вона не заслужить цієї
+назви. Це був правильний підхід до спільноти&nbsp;&mdash; просити їх
приєднатися і поліпшувати програму. Але після цього його ставлення,
здається, змінилося, і він продав програму одній компанії.</p>
<p>В цей час я працював над системою GNU (вільною операційною системою типу
Unix, яку багато хто помилково називає &ldquo;Linux&rdquo;). Вільного
редактора Emacs, який працював би в Unix, не існувало. Проте був у мене
-знайомий, який брав участь у розробці Emacs Гослінга. Гослінг передав йому,
-по електронній пошті, дозвіл поширювати його власну версію. Він запропонував
-мені скористатися цією версією. Тоді я виявив, що в Emacs Гослінга не було
+знайомий, який брав участь у розробці Emacs Гослінга, котрий надав йому
+е-поштою дозвіл поширювати власну версію. Знайомий запропонував мені
+скористатися цією версією. Тоді я виявив, що в Emacs Гослінга не було
справжнього Ліспа. В ньому була мова програмування, відома як
-&ldquo;mocklisp&rdquo;, він синтаксично виглядає як Лисп, але у ньому немає
-структур даних Лиспа. Тому програми не були даними і не вистачало життєво
+&ldquo;mocklisp&rdquo;, вона синтаксично виглядає як Лісп, але в ній немає
+структур даних Ліспа. Тому програми не були даними і не вистачало життєво
важливих елементів Ліспа. Його структурами даних були рядки, числа і деякі
інші спеціалізовані об'єкти.</p>
-<p>Я прийшов до висновку, що не можу скористатися цим, і був змушений замінити
+<p>Я дійшов висновку, що користуватись цим неможливо, тож був змушений замінити
це все. Першим кроком було написання справжнього інтерпретатора Ліспа. Я
поступово перебазував кожну частину редактора на справжні структури даних
-Ліспа замість написаних так-собі структур даних, створивши можливість
+Ліспа замість вузькоспеціалізованих структур даних, створивши можливість
виведення внутрішніх структур даних редактора і маніпуляцій ними у
користувацьких програмах на Ліспі.</p>
-<p>Єдиним винятком було відображення на дисплеї. Довгий час оновлення на
-дисплеї було іншим світом. Редактор вступав у світ перемальовування, і все
-починало проводитися над абсолютно особливими структурами даних, для яких не
-було безпечного збору сміття, не було безпечних переривань, і в цей час не
-можна було виконувати ніяких програм на Ліспі. З тих пір ми це
-змінили&nbsp;&nbsp; зараз можна виконувати програми на Ліспі під час
-перемальовування. Це дуже зручно.</p>
+<p>Єдиним винятком був показ на дисплеї. Довгий час оновлення дисплея було ніби
+іншим світом. Редактор вступав у світ перемальовування, і все починало
+проводитися над абсолютно особливими структурами даних, для яких не було
+безпечного збору сміття, не було безпечних переривань, і в цей час не можна
+було виконувати ніяких програм на Ліспі. З тих пір ми це змінили: зараз
+можна виконувати програми на Ліспі під час перемальовування. Це дуже зручно.</p>
-<p>Ця друга програма Emacs була &ldquo;вільною програмою&rdquo; сучасному
+<p>Ця друга програма Emacs була &ldquo;вільною програмою&rdquo; в сучасному
розумінні цього слова&nbsp;&mdash; вона була частиною відкритої політичної
кампанії за звільнення програм. Сутність цієї кампанії полягала в тому, що
кожен має право вільно робити те, що ми у старі часи робили в
Массачусетському технологічному інституті, працюючи разом над програмами і
працюючи з усіма, хто тільки бажав працювати з нами. Це стало основою руху
-за вільне програмне забезпечення&nbsp;&nbsp; на основі досвіду мого життя в
-Лабораторії штучного інтелекту&nbsp;&nbsp; працюйте над людським знанням і
+за вільне програмне забезпечення&nbsp;&mdash; на основі досвіду мого життя в
+Лабораторії штучного інтелекту&nbsp;&mdash; працюйте над людським знанням і
не стовбичте ні в кого на шляху до подальшого застосування та подальшого
поширення людського знання.</p>
@@ -215,38 +229,38 @@ Unix, яку багато хто помилково називає &ldquo;Linux&
врешті-решт коли-небудь призводило до збою.</p>
<p>Машина Ліспа була в змозі виконувати команди майже так само швидко, як ті
-інші машини, але кожна команда... команда <code>car</code> виконувала
-перевірку типів&nbsp;&mdash; тому коли ви намагалися взяти <code>car</code>
-від числа у скомпілованій програмі, це негайно давало помилку. Ми побудували
-машину і у нас була для неї операційна система Ліспа. Вона майже повністю
-була написана на Ліспі, за винятком частин, записаних в мікрокоді. Виник
-інтерес до виробництва машин, а це означало, що потрібно створити компанію.</p>
+інші машини, але кожна команда, як-от <code>car</code>, перевіряла типи
+даних&nbsp;&mdash; тому коли ви намагалися взяти <code>car</code> від числа
+у скомпільованій програмі, це негайно давало помилку. Ми побудували машину і
+у нас була для неї операційна система на Ліспі. Вона майже повністю була
+написана на Ліспі, за винятком частин, записаних мікрокодом. Виник інтерес
+до виробництва машин, а це означало, що потрібно створити компанію.</p>
<p>Було два різних уявлення про те, якою повинна бути ця компанія. Грінблет
хотів створити те, що він називав &ldquo;хакерською&rdquo; компанією. Це
-означало, що це була б компанія під управлінням хакерів і працює сприятливо
-для хакерів. Іншою метою була підтримка культури Лабораторії штучного
-інтелекту&nbsp;<a href="#foot-3">(3)</a>. На жаль, у Грінблета не було
-ніякого ділового досвіду, тому інші люди з групи машини Ліспа говорили, що
-вони сумніваються в його спроможності це зробити. Вони думали, що уникнути
-зовнішніх капіталовкладень, як він планував, не вдасться.</p>
+означало, що компанією керували б хакери сприятливим саме для хакерів
+чином. Іншою метою була підтримка культури Лабораторії штучного
+інтелекту&nbsp;<a class="ftn" href="#foot-3">[3]</a>. На жаль, у Грінблета
+не було ніякого ділового досвіду, тому інші люди з групи машини Ліспа
+говорили, що вони сумніваються в його спроможності це зробити. Вони думали,
+що уникнути зовнішніх капіталовкладень, як він планував, не вдасться.</p>
<p>Але чому він хотів уникнути зовнішніх капіталовкладень? Тому що коли у
компанії є зовнішні вкладники, вони беруть контроль в свої руки і не
дозволяють вам бути педантичним; а якщо ви скільки-небудь педантичні, то
вони врешті-решт поставлять на керівну посаду кого-небудь іншого.</p>
-<p>Отож, у Грінблета була думка, що він знайде клієнта, який заплатить за
-комплектуючі вперед. Вони зібрали б машини і поставили їх йому; отримуючи
-таким чином дохід з цих комплектуючих, вони змогли б купити комплектуючі ще
-для декількох машин, продати їх, а потім купити комплектуючі для більшого
-числа машин і так далі. Інші люди з групи думали, що так працювати не вийде.</p>
+<p>Отож, у Грінблета була думка, що він знайде клієнта, який платитиме за
+складники наперед. Вони збирали б машини й поставляли їх йому; отримуючи
+таким чином дохід із цих складників, вони змогли б купувати складники ще для
+декількох машин, продавати їх і купувати складники для більшого числа машин
+тощо. Інші люди з групи думали, що так працювати не вийде.</p>
-<p>Гринблэтт залучив Расела Нофтскера, людину, яка найняла мене, а в згодом
+<p>Грінблет залучив Расселла Нофтскера, людину, яка найняла мене, а згодом
пішла з Лабораторії штучного інтелекту і створила прибуткову
-компанію. Вважалося, що у Расела є ділова хватка. Він продемонстрував цю
-ділову хватку, сказавши людям в групі: &ldquo;Давайте кинемо Грінблета і
-забудемо про його ідеї; а ми створимо іншу компанію&rdquo;. Вдарив у спину,
+компанію. Вважалося, що у Расселла є ділова хватка. Він продемонстрував цю
+ділову хватку, сказавши людям в групі: &ldquo;Давайте кинемо Грінблета,
+забудемо про його ідеї й створимо іншу компанію&rdquo;. Вдарив у спину,
зовсім як справжній підприємець. Ці люди вирішили сформувати компанію під
назвою &ldquo;Symbolics&rdquo;, залучати зовнішній капітал, не бути
педантичними і робити все можливе, щоб перемогти.</p>
@@ -256,10 +270,9 @@ Unix, яку багато хто помилково називає &ldquo;Linux&
що б ви думали? Їм це вдалося! У них з'явився перший клієнт, і їм заплатили
наперед. Вони збирали машини, продавали їх і збирали ще і ще. Врешті-решт
вони стали на ноги, незважаючи на те, що більшість людей в групі їм не
-допомагали. Компанія Symbolics також почала успішну діяльність, тому було
-дві конкуруючі компанії, що виробляють машини-Ліспи. Коли в Symbolics
-зрозуміли, що LMI не думає вилітати в трубу, вони стали шукати способи
-зруйнувати її.</p>
+допомагали. Компанія Symbolics також почала успішну діяльність, тобто дві
+компанії конкурували у виробництві Лісп-машин. Коли в Symbolics зрозуміли,
+що LMI не думає вилітати в трубу, вони стали шукати способи зруйнувати її.</p>
<p>Таким чином, за відходом з нашої лабораторії настала &ldquo;війна&rdquo; в
нашій лабораторії. Відхід стався, коли компанія Symbolics переманила всіх
@@ -270,44 +283,44 @@ Unix, яку багато хто помилково називає &ldquo;Linux&
двома компаніями одну дуже дурну угоду. Це був тристоронній договір, у якому
обидві компанії ліцензували вихідні тексти системи машини Ліспа. Ці компанії
повинні були надавати свої зміни в користування інституту. Але в договорі не
-говорилося, що інститут має право розміщувати їх в системах своїх машин
-Ліспів, які ліцензували обидві компанії. Ніхто не передбачав, що групу
+говорилося, що інститут має право розміщувати їх в системах своїх
+Лісп-машин, які ліцензували обидві компанії. Ніхто не передбачав, що групу
хакерів Лабораторії штучного інтелекту розженуть, але так і сталося.</p>
-<p> Отже, в Symbolics дозрів план&nbsp;<a href="#foot-4">(4)</a>. Вони сказали
-лабораторії: &ldquo;Ми продовжимо надавати у ваше користування свої зміни в
-системі, але вам не можна розміщувати їх в системі машини Ліспа
-інституту. Замість цього ми надамо вам доступ до системи машини Ліспа
-Symbolics, і ви зможете працювати на ній, але це все, що ви можете робити.</p>
+<p> Отже, в Symbolics дозрів план&nbsp;<a href="#foot-4">[4]</a>. Вони сказали
+лабораторії: «Ми продовжимо надавати у ваше користування свої зміни в
+системі, але вам не можна розміщувати їх в системі Лісп-машини
+інституту. Замість цього ми надамо вам доступ до системи Лісп-машини
+Symbolics, і ви зможете працювати на ній, але це все, що ви можете робити.»</p>
-<p>Це фактично означало, що вони зажадали від нас стати на ту чи іншу бік і
+<p>Це фактично означало, що вони зажадали від нас стати на той чи інший бік і
користуватися або версією інституту, або версією Symbolics. Що б ми не
-вибрали, це визначало б, в яку систему підуть наші удосконалення. Якщо б ми
+вибрали, це визначало б, в яку систему підуть наші удосконалення. Якби ми
працювали над версією Symbolics і вдосконалювали її, ми підтримували б
-тільки Symbolics. Якщо б ми користувалися версією інституту і вдосконалювали
+тільки Symbolics. Якби ми користувалися версією інституту і вдосконалювали
її, ми надавали б роботу в розпорядження обох компаній, але в Symbolics
-розуміли, що з нашого боку це було б підтримкою LMI, тому що ми допомагали б
-їм продовжувати існування. Отож, нам не дозволили залишатися нейтральними.</p>
+вважали це підтримкою саме LMI з нашого боку, тому що ми допомагали б їм
+продовжувати існування. Отож, нам не дозволили залишатися нейтральними.</p>
<p>Аж до цього моменту я не приймав сторону жодної з компаній, хоча мені було
боляче бачити, що сталося з нашим співтовариством і програмами. Але тепер
компанія 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>
+<p>Через деякий час&nbsp;<a href="#foot-6">[6]</a> я дійшов висновку, що краще
+за все навіть не заглядати в їхні тексти. Коли вони оголошували про випуск
+випробувальної версії й описували її нововведення, я дивився, які там були
+функції, а потім впроваджував їх. До того часу, як вони випускали остаточну
+версію, я теж випускав таку версію.</p>
-<p>Таким чином, протягом двох років я не давав їм покінчити з LMI, і ці дві
+<p>Таким чином, протягом двох років я не давав їм покінчити з LMI, і обидві
компанії продовжували роботу. Але я не хотів витрачати довгі роки на те, щоб
покарати когось, просто заважаючи злій справі. Я побачив, що вони покарані
досить ґрунтовно, тому що вони натрапили на конкуренцію, яка не йшла і не
-збиралася зникати&nbsp;<a href="#foot-7">(7)</a>. Тим часом прийшла пора
+збиралася зникати&nbsp;<a href="#foot-7">[7]</a>. Тим часом настала пора
почати облаштування нового співтовариства замість того, яке було знищено
їхніми діями та діями інших.</p>
@@ -315,13 +328,13 @@ href="#foot-5">(5)</a>, я почав дублювати всі поліпшен
штучного інтелекту Массачусетського технологічного інституту, і не всі
хакери були в цьому інституті. Війна, яку розпочала компанія Symbolics,
спустошила Массачусетський технологічний інститут, але в той час відбувалися
-і інші події. Були люди, які припиняли співпрацю, і все це разом спустошило
-наше співтовариство, і від нього майже нічого не залишилося.</p>
+й інші події. Люди припиняли діяти спільно, і все це разом спустошило наше
+співтовариство, і від нього майже нічого не залишилося.</p>
-<p>Коли я припинив карати Symbolics, мені довелося вигадувати, що робити
-далі. Мені потрібно було зробити вільну операційну систему, це було
-ясно&nbsp;&nbsp; єдиним способом дати людям спільно працювати і обмінюватися
-була вільна операційна система.</p>
+<p>Припинивши карати Symbolics, мені довелося планувати наступні дії. Мені
+потрібно було зробити вільну операційну систему, це було ясно&nbsp;&mdash;
+єдиним способом дати людям спільно працювати і обмінюватися була вільна
+операційна система.</p>
<p>Спершу я думав про створення системи на базі Ліспа, але усвідомив, що з
технічної точки зору це не добре. Щоб отримати щось подібне до системи
@@ -331,98 +344,93 @@ href="#foot-5">(5)</a>, я почав дублювати всі поліпшен
звелося б до чогось на кшталт компіляторів Ліспа для інших машин. Програми
були б швидшими, але водночас нестабільними. Так от, це припустимо, якщо
виконувати одну програму на системі з поділом часу&nbsp;&mdash; якщо одна
-програма дає збій, це не катастрофа, це щось, що ваша програма час від часу
-робить. Але це робило її не досить гарною, щоб писати на ній операційну
+програма дає збій, це не катастрофа, це щось цілком очікуване від
+програми. Але це робило її не досить гарною, щоб писати на ній операційну
систему, тому я відмовився від думки про те, щоб зробити систему на взірець
-машини Ліспа.</p>
+Лісп-машини.</p>
<p>Замість цього я вирішив зробити операційну систему типу Unix, в якій були б
-реалізації Лиспа для виконання користувальницьких програм. Ядро було б
-написаним не на Ліспі, але Лісп у нас був би. Тому сама розробка цієї
-операційної системи, операційної системи GNU, привела мене до написання GNU
-Emacs. В процесі цього я прагнув зробити абсолютно мінімально можливу
-реалізацію Ліспа. Розмір програм мав надзвичайне значення.</p>
+реалізації Ліспа для виконання користувацьких програм. Ядро було б написаним
+не на Ліспі, але Лісп у нас був би. Тому сама розробка цієї операційної
+системи, операційної системи GNU, привела мене до написання GNU Emacs. В
+процесі цього я прагнув зробити абсолютно мінімально можливу реалізацію
+Ліспа. Розмір програм мав надзвичайне значення.</p>
-<p>В той час, в&nbsp;1985&nbsp;році, існували люди, які мали одномегабайтові
+<p>У той час, у&nbsp;1985&nbsp;році, в деяких людей ще були одномегабайтові
машини без віртуальної пам'яті. Вони хотіли бути в змозі використовувати GNU
-Emacs. Це означало, що мені потрібно обмежувати програму якнайменшим
-розміром.</p>
-
-<p>Наприклад, у той час єдиною циклічною конструкцією була &ldquo;while&rdquo;,
-яка є вкрай простою. Не було ніяких способів дострокового виходу з оператора
-&ldquo;while&rdquo;, доводилося просто користуватися механізмом виключень
-або перевіряти змінну в циклі. Це показує, як далеко я зайшов у обмеженнях
-на розмір. У нас не було &ldquo;caar&rdquo;, &ldquo;cadr&rdquo; і так далі;
-&ldquo;вичавити все можливе&rdquo;&nbsp;&nbsp; таким духом був просякнутий
+Emacs. Це означало, що мені потрібно було робити програму якнайменшою.</p>
+
+<p>Наприклад, у той час єдиною циклічною конструкцією була <code>while</code> у
+примітивній формі. Не було ніяких способів дострокового виходу з оператора
+<code>while</code>: доводилося просто користуватися механізмом винятків або
+перевіряти змінну в циклі. Це показує, як далеко я зайшов у обмеженнях на
+розмір. У нас не було <code>caar</code>, <code>cadr</code> тощо;
+&ldquo;вичавити все можливе&rdquo;&nbsp;&mdash; таким духом був просякнутий
GNU Emacs і його Лісп з самого початку.</p>
-<p>Зрозуміло, машин зараз більше і ми вже так не робимо. Ми заклали
-&ldquo;caar&rdquo;, &ldquo;cadr&rdquo; і так далі, і зараз при нагоді ми
-могли б закласти іншу циклічну конструкцію. Ми охоче розширимо його в деяких
-межах, але ми не хочемо розширювати його до рівня Загального Ліспа. Я одного
-разу реалізовував Загальний Лісп на машині-Ліспі, і мені він не так вже
-сподобався. Одна з речей, які мені страшенно не подобаються&nbsp;&nbsp;
-аргументи-ключові слова&nbsp;<a href="#foot-8">(8)</a>. На мій погляд, це
-виглядає не зовсім по-ліспівськи; іноді я пишу так, але зводжу до мінімуму
-кількість випадків, коли я це роблю.</p>
-
-<p>На цьому проекти GNU, пов'язані з Лиспом, не закінчилися. Згодом, приблизно
-в&nbsp;1995&nbsp;році, ми розмірковували над організацією проекту графічного
-робочого середовища. Було ясно, що для програм середовища нам потрібна мова
-програмування, на якій була б написана значна її частина, щоб зробити його
-легко розширюваною, як редактор. Постало питання про те, якою повинна бути
-мова.</p>
-
-<p>У той час для цих цілей посилено просувався TCL&nbsp;<a
-href="#tf2">[2]</a>. Я був дуже невисокої думки про TCL, в основному тому,
-що це був не Лісп. Він виглядав злегка подібним на Лісп, але семантично він
-ним не був, і він був не таким зрозумілим. Потім хтось показав мені
-оголошення, в якому компанія Sun намагалася найняти кого-небудь для роботи
-над TCL, щоб зробити його &ldquo;стандартом де-факто для мови
-розширень&rdquo; в усьому світі. А я подумав: &ldquo;Нам потрібно запобігти
-цьому&rdquo;. Тому ми почали робити Scheme стандартною мовою розширень
-GNU. Не Загальний Лісп, бо він був занадто великий. Ідея була в тому, що у
-нас буде інтерпретатор Scheme, спроектований для компонування у додатки так
-само, як це робили з TCL. Тоді ми стали б рекомендувати це як бажаний пакет
-розширень для всіх програм GNU.</p>
-
-<p>Є одна цікава вигода, яку можна отримати з застосування такого потужної
-мови, як варіант Ліспа, в якості первинної мови розширень. Ви можете
-реалізовувати інші мови переведенням їх на вашу первинну мову. Якщо ваша
-первинна мова&nbsp;&nbsp; TCL, ви не можете легко впровадити Лісп
-переведенням його на TCL. Але якщо ваш первинна мова&nbsp;&nbsp; Лісп, то
-неважко реалізовувати інші мови, переводячи їх. Наша ідея полягала в тому,
-що якщо б кожний відкритий додаток підтримував Scheme, то ви могли б
-написати реалізацію TCL, Python або Perl на Scheme, яка переводить цю
-програму на Scheme. Тоді ви могли б завантажувати її в будь-який додаток і
-надбудовувати його під свою улюблену мову і він працював би і з іншими
-надбудовами.</p>
-
-<p>До тих пір, поки мови розширення слабкі, користувачам доводиться
-застосовувати тільки ту мову, яку ви їм надаєте. Що означає, що людям,
-залюбленим, в яку б то не було дану мову, доводиться боротися за вибір
-розробників додатків&nbsp;&nbsp; кажучи розробнику програми:
-&ldquo;Закладіть, будь ласка, в свій додаток мою мову, а не
-його&rdquo;. Тоді у користувачів взагалі не буде вибору&nbsp;&nbsp; яким би
-додатком вони не користувалися, він приходить з однією мовою, і у них немає
-іншого виходу. Але коли у вас потужна мова, яка може реалізовувати інші
-мови, переводячи з них, то ви надаєте користувачеві вибір мови, і нам більше
-не доводиться вести війну мов. Саме це, як ми сподіваємося, зробить Guile,
-наш інтерпретатор Scheme. У нас є людина, яка цього літа працює над
-завершенням транслятора з Python на Scheme. Я не знаю, чи повністю він
-завершений, але якщо хтось зацікавлений у цьому проекті, нехай
-зв'яжеться. Ось такі у нас плани на майбутнє.</p>
-
-<p>Я не говорив про вільне програмне забезпечення, але дозвольте мені коротко
+<p>Зрозуміло, машини зараз більші, тож ми вже так не робимо. Ми заклали
+<code>caar</code>, <code>cadr</code> і так далі, і зараз при нагоді ми могли
+б закласти іншу циклічну конструкцію. Ми охоче розширимо його в деяких
+межах, але ми не хочемо розширювати його до рівня Common Lisp. Я одного разу
+реалізовував Common Lisp на Лісп-машині, й мені він не так вже й
+сподобався. Одна з речей, які мені страшенно не подобаються,&nbsp;&mdash; це
+аргументи — ключові слова&nbsp;<a href="#foot-8">[8]</a>. На мій погляд,
+вони виглядають зовсім не по-ліспівськи; іноді я пишу так, але зводжу до
+мінімуму кількість випадків, коли я це роблю.</p>
+
+<p>На цьому проекти GNU, пов'язані з Ліспом, не закінчилися. Згодом, приблизно
+в&nbsp;1995&nbsp;році, ми розмірковували над організацією проекту графічної
+стільниці. Було ясно, що стільничні програми нам потрібно писати переважно
+такою мовою програмування, яка робила б стільницю легко розширюваною, ніби
+наш редактор. Постало питання того, яку мову обрати.</p>
+
+<p>У той час для таких цілей посилено просували <abbr title="Tool Command
+Language — мову контролю знарядь">TCL</abbr>. Я був дуже невисокої думки про
+TCL, оскільки це був зовсім не Лісп: TCL злегка нагадує Лісп, але семантично
+відрізняється й не така елегантна. Потім мені показали оголошення: компанія
+Sun намагалася найняти кого-небудь для роботи над TCL, щоб зробити його
+&ldquo;стандартом де-факто для мови розширень&rdquo; в усьому світі. А я
+подумав: &ldquo;Нам потрібно запобігти цьому&rdquo;. Тому ми почали робити
+Scheme стандартною мовою розширень GNU. Не Common Lisp, бо він був занадто
+великий. Ідея була в тому, щоб розробити інтерпретатор Scheme, спроектований
+для компонування у застосунки по аналогії з TCL, і радити всім програмам GNU
+використовувати саме його для втілення розширень.</p>
+
+<p>Є одна цікава вигода, яку можна отримати з застосування такої потужної мови,
+як варіант Ліспа, в якості первинної мови розширень. Ви можете втілювати
+інші мови перекладом їх вашою первинною мовою. Якщо ваша первинна
+мова&nbsp;&mdash; TCL, ви не можете легко втілити Лісп перекладом його на
+TCL. Але якщо ваш первинна мова&nbsp;&mdash; Лісп, то неважко реалізовувати
+інші мови, перекладаючи їх. Наша ідея полягала в тому, що якби кожний
+відкритий застосунок підтримував Scheme, то ви могли б написати на Scheme
+реалізацію TCL, Python або Perl, яка перекладає ту чи іншу програму на
+Scheme. Тоді ви могли б завантажити її в будь-який застосунок, надбудувати
+його своєю улюбленою мовою — й надбудова вашою мовою працювала б разом з
+іншими.</p>
+
+<p>Використання слабких мов розширення примушує користувачів застосовувати лише
+ту мову, яку ви їм надаєте. Тобто прихильникам різних мов доводиться
+змагатися за вибір розробників застосунків, кажучи розробнику програми:
+«Закладіть, будь ласка, в свій застосунок мою мову, а не його». Тоді у
+користувачів взагалі не буде вибору: яким би застосунком вони не
+користувалися, його мову вже обрано й у них нема альтернатив. Але коли у вас
+потужна мова, здатна реалізовувати інші мови, перекладаючи їх, то ви надаєте
+користувачеві вибір мови, і нам більше не доводиться вести війну мов. Саме
+цього, як ми сподіваємося, досягне Guile — наш інтерпретатор Scheme. У нас є
+людина, яка цього літа працює над завершенням транслятора з Python на
+Scheme. Я не знаю, чи повністю він завершений, але якщо ви зацікавлені в
+цьому проекті — зв'яжіться, будь ласка. Ось такі у нас плани на майбутнє.</p>
+
+<p>Я ще не згадував вільне програмне забезпечення, але дозвольте мені коротко
розповісти вам трохи про те, що це означає. Вираз &ldquo;вільна
програма&rdquo; передбачає не вартість; воно не означає, що ви отримаєте її
безкоштовно. (Можливо, ви заплатили за копію або отримали копію
безкоштовно.) Воно означає, що у вас як у користувача є свобода. Життєво
важливо те, що ви вільні виконувати програму, вільні вивчати, що вона
-робить, можете змінювати її під свої потреби, вільні перерозповсюджувати
-копії серед інших і вільні публікувати поліпшені, розширені версії. Ось що
-означає вільна програма. Якщо ви користуєтеся невільною програмою, то ви
-втратили життєво важливу свободу, тому ніколи цього не робіть.</p>
+робить, вільні змінювати її під свої потреби, вільні розповсюджувати копії
+інших і вільні публікувати поліпшені, розширені версії. Ось що означає
+вільна програма. Якщо ви користуєтеся невільною програмою, то ви втратили
+життєво важливу свободу, тому ніколи цього не робіть.</p>
<p>Призначення проекту GNU полягає в тому, щоб полегшити людям відмову від
зневажаючих свободу, пануючих над користувачем невільних програм наданням
@@ -434,42 +442,43 @@ GNU. Не Загальний Лісп, бо він був занадто вел
співпрацю і вільне життя.</p>
<p>Співпраця&nbsp;&mdash; це питання свободи. Ми звикли думати про свободу і
-співпрацю з товариством як про протилежності. Але в даному випадку вони на
-одній стороні. При вільних програмах ви вільні співпрацювати з іншими і
+співпрацю з суспільством як про протилежності. Але в даному випадку вони на
+одному боці. При вільних програмах ви вільні співпрацювати з іншими й
допомагати самим собі. При невільних програмах хтось домінує над вами і
роз'єднує людей. Вам не дозволяють обмінюватися з ними, ви не вільні
співпрацювати або допомагати суспільству, точно так само, як ви не вільні
-допомогти самим собі. Роз'єднаність і безпорадність&nbsp;&nbsp; стан
+допомогти самим собі. Роз'єднаність і безпорадність&nbsp;&mdash; стан
користувачів, які застосовують невільні програми.</p>
<p>Ми виробили запаморочливе число вільних програм. Ми зробили те, що, як
стверджувалося, ми ніколи не зможемо зробити; у нас є дві операційні системи
-з вільних програм. У нас є безліч додатків, і нам, очевидно, ще багато
+з вільних програм. У нас є безліч застосунків, і нам, очевидно, ще багато
належить пройти. Отож, нам потрібна ваша допомога. Я хотів би попросити вас
стати добровольцями проекту 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>
-
+для нових завдань. Загляньте на <a href="/help/help.html">gnu.org/help</a>
+за пропозиціями того, як допомогти. Якщо ви хочете замовити щось, на це є
+посилання з домашньої сторінки. Якщо ви хочете почитати про філософські
+питання, загляньте в /philosophy. Якщо ви шукаєте вільні програми для
+користування, загляньте в /directory, де зараз перераховано близько
+1900&nbsp;пакетів (це тільки частинка всіх вільних програм світу). Будь
+ласка, пишіть нові програми і передавайте нам. Мій збірник нарисів,
+&ldquo;Вільні програми і вільне суспільство&rdquo;, знаходиться у продажу, і
+його можна придбати на www.gnu.org&#8239;<a
+href="#foot-9">[9]</a>. Успішного хакерства!</p>
+<div class="column-limit"></div>
+
+<h3 class="footnote">Виноски</h3>
<ol>
-<li id="foot-1">Гай Стіл склав початковий симетричний набір команд Emacs; потім ми з ним
+<li id="foot-1">Гай Стіл розробив початковий симетричний набір команд Emacs; потім ми з ним
почали реалізовувати Emacs (на базі TECO), але після однієї тривалої
-спільної сесії розробки Стіл почав відходити, тому Emacs закінчував я. Інші,
-зокрема, Юджин Чиччареллі і Майк Мак-Магон внесли свій внесок значно
-пізніше.</li>
+спільної сесії розробки Стіл втомився, тож Emacs дописав я. Інші, зокрема
+Юджин Чиччареллі й Майк Макмегон, згодом додали й свої великі внески.</li>
-<li id="foot-2">Берні Грінберг стверджує, що реалізація Emacs Дана Уайнреба для машини-Ліспа
+<li id="foot-2">Берні Грінберг стверджує, що реалізація Emacs Дена Вайнреба для Лісп-машини
вийшла раніше реалізації Грінберга для Multics. Я прошу вибачення за цю
помилку.</li>
-<li id="foot-3">План Ґрінблета наскільки я розумію, полягав у тому, щоб наймати людей з
+<li id="foot-3">План Грінблета, наскільки я розумію, полягав у тому, щоб наймати людей з
лабораторії за сумісництвом, щоби вони могли продовжувати працювати в
Лабораторії штучного інтелекту. Symbolics замість цього наймала їх на повний
робочий день, тому вони припиняли працювати в інституті.</li>
@@ -477,7 +486,7 @@ href="http://www.gnu.org/">www.gnu.org</a>. Всього найкращого!</
<li id="foot-4">Цей план базувався на тому (у тій промові я цього не сказав явно), що в
початковий період колишні хакери Лабораторії штучного інтелекту, як у
Symbolics, так і в LMI, продовжували вносити свої зміни в систему
-машини-Ліспа інституту&nbsp;&nbsp; хоча за контрактом цього не
+Лісп-машини інституту&nbsp;&mdash; хоча за контрактом цього не
вимагалося. План Symbolics полягав у тому, щоб перервати цю співпрацю у
односторонньому порядку.</li>
@@ -488,22 +497,26 @@ Symbolics нажитися на своїй агресії по відношен
<li id="foot-6">З цього твердження було зроблено неправильний висновок, що я ніколи-ніколи
не заглядав у програми Symbolics. Насправді тут йдеться, що я це робив
спочатку. Вихідний текст Symbolics був доступний в інституті, де я мав право
-його читати і спочатку саме так я дізнавався про їхні зміни.
+його читати, й спочатку саме так я дізнавався про їхні зміни.
-<p>Але це означало, що я був змушений вживати особливі зусилля, щоб вирішувати
-кожну задачу по-іншому, аби уникнути копіювання програм Symbolics. Через
-деякий час я зробив висновок, що краще навіть не дивитися. Так я міг писати
+<p>Але тому я був змушений докладати особливих зусиль, щоб розв'язувати кожне
+завдання по-іншому, аби уникнути копіювання програм Symbolics. Через деякий
+час я зробив висновок, що краще навіть не дивитися. Так я міг писати
програми яким завгодно найкращим чином, не озираючись на те, що могло бути в
текстах Symbolics.</p></li>
-<li id="foot-7">Symbolics якось висловила в інституті протест, в якому говорилося, що моя
-робота, перешкодивши їхнім планом, коштувала компанії Symbolics мільйон
-доларів.</li>
+<li id="foot-7">Symbolics якось висловила інституту претензію, ніби моя робота, перешкодивши
+їхнім планам, коштувала компанії Symbolics мільйон доларів.</li>
<li id="foot-8">Я не заперечую, якщо дуже складна і громіздка функція приймає
аргументи-кодові слова. Турбує мене випадок, коли ними користуються такі
прості функції, як &ldquo;member&rdquo;.</li>
+
+<li id="foot-9">У 2021 цю книгу можна придбати в <a
+href="https://shop.fsf.org/books-docs/free-software-free-society-selected-essays-richard-m-stallman-3rd-edition">
+GNU Press</a>.</li>
</ol>
+</div>
<div class="translators-notes">
@@ -513,13 +526,13 @@ Symbolics нажитися на своїй агресії по відношен
<!-- for id="content", starts in the include above -->
<!--#include virtual="/server/footer.uk.html" -->
-<div id="footer">
+<div id="footer" role="contentinfo">
<div class="unprintable">
<p>Будь ласка, надсилайте загальні запити фонду та GNU за адресою <a
href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>. Наявні також <a
-href="/contact/">інші способи зв'язку</a> з фондом. Звіти про непрацюючі
-посилання і інші виправлення чи пропозиції можна надсилати за адресою <a
+href="/contact/">інші способи зв'язку</a> з фондом. Звіти про хибні
+посилання й інші виправлення чи пропозиції можна надсилати за адресою <a
href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>
<p>
@@ -533,7 +546,7 @@ href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>
&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>. -->
@@ -562,13 +575,13 @@ 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 Фонд вільного програмного
-забезпечення, Inc.</p>
+<p>Copyright &copy; 2003, 2007, 2013, 2021 Free Software Foundation, Inc. (Фонд
+вільного програмного забезпечення, Inc.)</p>
<p>Ця сторінка доступна на умовах <a rel="license"
href="http://creativecommons.org/licenses/by-nd/4.0/deed.uk"> ліцензії
-Creative Commons Attribution-NoDerivatives (<em>Із зазначенням
-авторства&nbsp;&mdash; Без похідних творів</em>) 4.0 Міжнародна</a>.</p>
+Creative Commons Attribution-NoDerivatives 4.0 International (<em>Із
+зазначенням авторства — Без похідних творів 4.0 Міжнародна</em>)</a>.</p>
<!--#include virtual="/server/bottom-notes.uk.html" -->
<div class="translators-credits">
@@ -580,11 +593,12 @@ Creative Commons Attribution-NoDerivatives (<em>Із зазначенням
<p class="unprintable"><!-- timestamp start -->
Оновлено:
-$Date: 2020/07/04 09:00:35 $
+$Date: 2022/05/06 12:06:32 $
<!-- timestamp end -->
</p>
</div>
</div>
+<!-- for class="inner", starts in the banner include -->
</body>
</html>