taler-merchant-demos

Python-based Frontends for the Demonstration Web site
Log | Files | Refs | Submodules | README | LICENSE

stallman-kth.html (188071B)


      1 <!--#set var="ENGLISH_PAGE" value="/philosophy/stallman-kth.en.html" -->
      2 
      3 <!--#include virtual="/server/header.ru.html" -->
      4 <!-- Parent-Version: 1.96 -->
      5 <!-- This page is derived from /server/standards/boilerplate.html -->
      6 <!--#set var="TAGS" value="speeches" -->
      7 <!--#set var="DISABLE_TOP_ADDENDUM" value="yes" -->
      8 
      9 <!-- This file is automatically generated by GNUnited Nations! -->
     10 <title>Лекция RMS в КТИ в Швеции - Проект GNU - Фонд свободного программного
     11 обеспечения</title>
     12 <style type="text/css" media="screen"><!--
     13 #content span { font-style: italic; color: #505050; }
     14 -->
     15 </style>
     16 
     17 <!--#include virtual="/philosophy/po/stallman-kth.translist" -->
     18 <!--#include virtual="/server/banner.ru.html" -->
     19 <!--#include virtual="/philosophy/ph-breadcrumb.ru.html" -->
     20 <!--GNUN: OUT-OF-DATE NOTICE-->
     21 <!--#include virtual="/server/top-addendum.ru.html" -->
     22 <div class="article reduced-width">
     23 <h2>Лекция RMS в КТИ (Швеция), 1986&nbsp;год</h2>
     24 
     25 <div class="infobox">
     26 <p>Запись выступления Ричарда Столмена в <i lang="sv" xml:lang="sv">Kungliga
     27 Tekniska H&ouml;gskolan</i> (Королевском техническом институте) в Стокгольме
     28 (Швеция), организованного студенческим общестом <i lang="sv"
     29 xml:lang="sv">Datorf&ouml;reningen Stacken</i> 30&nbsp; октября
     30 1986&nbsp;года.
     31 </p>
     32 </div>
     33 <hr class="thin" />
     34 
     35 <div class="introduction">
     36 <p><i>Примечание. Это слегка отредактированный конспект рассказа. Как таковой,
     37 он содержит и ложные вступления, и обороты, которые естественны в
     38 разговорном английском, но на бумаге выглядят странно. Неясно, как выправить
     39 их в духе литературного английского языка без &lsquo;насилия над исходной
     40 речью&rsquo;.</i></p>
     41 </div>
     42 
     43 <p><b>Rms</b>. Кажется, что есть три вещи, о которых люди хотели бы от меня
     44 услышать. С одной стороны, я подумал, что лучшее, о чём можно рассказать
     45 здесь клубу хакеров,&mdash; это на что был похож MIT (Массачусетский
     46 технический институт) в прежние времена. Что делало Лабораторию
     47 искусственного интеллекта таким особенным местом. Но мне говорят ещё, что
     48 поскольку здесь совсем не те люди, которые были на конференции в понедельник
     49 и во вторник, что я должен рассказать о том, что происходит в проекте GNU, и
     50 что мне следует рассказать о том, почему программы и информация не могут
     51 принадлежать кому бы то ни было, это значит&nbsp;&mdash; всего три рассказа,
     52 а поскольку два из этих предметов заняли по часу каждый, значит, мы тут
     53 будем довольно долго. Так что у меня была мысль, что, наверно, я мог бы
     54 разбить это на три части, и люди могли бы выйти на тех частях, которые им
     55 неинтересны, и что тогда, когда я подойду к концу части, я могу сказать, что
     56 это конец, и люди могут выйти, а я могу послать Яна Рюнинга привести других
     57 людей.</p>
     58 
     59 <p><span>[Кто-то говорит: &ldquo;<i lang="sv" xml:lang="sv">Janne, han trenger
     60 ingen mike</i>&rdquo; (перевод: &ldquo;Янне, ему не надо
     61 микрофона.&rdquo;).]</span></p>
     62 
     63 <p>Ян, вы готовы выбегать и приводить других людей?</p>
     64 
     65 <p><b>Jmr</b>. Я ищу микрофон, и что-то подсказывает мне, что он&nbsp;&mdash;
     66 внутри этого запертого шкафа.</p>
     67 
     68 <p><b>Rms</b>. Ну, в прежние времена в Лаборатории ИИ мы взяли бы кувалду и
     69 взломали его, и сломанная дверца была бы уроком всякому, кто посмел бы
     70 закрыть что-нибудь, в чём люди нуждаются. Но я, к счастью, практиковался в
     71 болгарском пении, так что я могу легко обойтись без микрофона.</p>
     72 
     73 <p>А всё-таки, установить ли мне эту систему, чтобы оповещать вас о частях
     74 рассказа, или вы просто хотите отсидеть все три части? <span>[Ответ:
     75 Да-а]</span></p>
     76 
     77 <p>Когда я начал программировать, это было в 1969&nbsp;году в лаборатории IBM в
     78 Нью-Йорке. После этого я пошёл в училище с отделением информатики, наверное,
     79 таким же, как большинство из них. Там было несколько профессоров, которые
     80 отвечали за то, что предполагалось делать, и были люди, которые решали, кто
     81 чем может пользоваться. Большинство ощущало недостаток в терминалах, но у
     82 многих профессоров были собственные терминалы в кабинетах, это было
     83 расточительно, но типично для них. Когда я посетил Лабораторию
     84 искусственного интеллекта в MIT, я обнаружил там более свежую
     85 атмосферу. Например, там терминалы считались общими, и профессора, запирая
     86 двери в свои кабинеты, рисковали найти свои двери взломанными. Мне даже
     87 показывали тележку с большим куском железа, которую употребили для взлома
     88 двери кабинета одного профессора, когда тот имел наглость запереть
     89 терминал. В те дни было очень мало терминалов, было, наверное, что-то вроде
     90 пяти терминалов в системе, так что если один из них был заперт, это было
     91 настоящим бедствием.</p>
     92 
     93 <p>В последующие годы я был вдохновлён этими идеями, и много раз я карабкался
     94 за потолки или под полы, чтобы открыть комнаты, где были машины, которые
     95 нужны были людям для дела, и я обычно оставлял за собой записку, объяснявшую
     96 людям, что они не должны быть настолько эгоистичны, чтобы запирать
     97 дверь. Те, кто запирал дверь, в основном думали только о себе. У них,
     98 конечно, были причины, там было что-нибудь, что, как они думали, могло быть
     99 украдено, и они хотели запереть это, но они не заботились о других людях,
    100 которым были нужны другие вещи, запертые в той же комнате. Почти всякий раз,
    101 когда это происходило, как только я обращал их внимание, что то, должна ли
    102 быть заперта комната, касается не только их, они обычно были в состоянии
    103 найти компромиссное решение: какое-нибудь другое место, чтобы сложить вещи,
    104 о которых они беспокоились&nbsp;&mdash; стол, который они могли запереть,
    105 или другую каморку. Но дело в том, что люди обычно не утруждают себя
    106 размышлениями об этом. Они думают: &ldquo;Эта комната&nbsp;&mdash; Моя, я
    107 могу запереть её, и наплевать на всех остальных&rdquo;, а это именно то
    108 отношение, от которого мы должны их отучить.</p>
    109 
    110 <p>Но этот дух отпирания дверей не был чем-то изолированным, это была часть
    111 целого образа жизни. Хакеры в лаборатории были настоящими энтузиастами в
    112 написании хороших программ, интересных программ. И как раз потому, что они с
    113 таким нетерпением хотели сделать больше, они не выносили запертых терминалов
    114 и многого другого, чем люди могут помешать полезной работе. Есть разница
    115 между высоконравственными людьми, действительно переживающими за то, что они
    116 делают, и людьми, думающими об этом просто как о заработке. Если это просто
    117 заработок, кому какое дело, что люди, нанявшие тебя, настолько глупы, что
    118 заставляют тебя сидеть и ждать, это их время, их деньги, но в таком месте
    119 выполняется не много работы, и в том, чтобы быть на таком месте, нет ничего
    120 интересного.</p>
    121 
    122 <p>Другое, чего у нас в лаборатории не было,&mdash; это защита файлов. На
    123 компьютере не было никакой безопасности. И мы совершенно сознательно шли на
    124 это. Хакеры, писавшие Несовместимую Систему Разделения Времени (ITS),
    125 решили, что защита файлов обычно применялась самозваным системным
    126 администратором, чтобы получить власть надо всеми остальными. Они не желали,
    127 чтобы кто-то был способен таким образом взять власть над ними, поэтому они
    128 не реализовали такого рода особенность. В результате когда бы в системе
    129 что-нибудь ни сломалось, ты всегда мог это наладить. Тебе никогда не надо
    130 было сидеть с чувством безысходности из-за того, что нельзя НИКАК, потому
    131 что ты знал точно, что было не так, а кто-то решил, что они не доверяют тебе
    132 этого. Тебе не приходится бросать всё и ехать домой в ожидании, пока
    133 кто-нибудь придёт утром и наладит систему, когда ты в десять раз лучше его
    134 знаешь, что нужно сделать.</p>
    135 
    136 <p>И точно так же мы не давали профессорам и начальству решать, какую работу
    137 делать в первую очередь, потому что наше дело было улучшать систему! Мы,
    138 конечно, говорили с пользователями; если этого не делаешь, ты не можешь
    139 знать, что нужно. Но после этого мы были теми, кто лучше всех мог понять,
    140 какого рода улучшения были реальны, и мы всегда обсуждали друг с другом,
    141 какие изменения в системе мы хотели бы увидеть и какие грамотные идеи мы
    142 видели в других системах и могли бы быть в состоянии применить. Итак, в
    143 результате у нас была размеренно функционирующая анархия, и по моему опыту
    144 там я убеждён, что это лучший образ жизни для людей.</p>
    145 
    146 <p>К несчастью, Лаборатория ИИ в таком виде была разрушена. Много лет мы
    147 опасались, что Лаборатория ИИ будет разрушена другой лабораторией MIT,
    148 лабораторией информатики, директор которой был из разряда строителей
    149 империй, он делал всё, что мог, чтобы выдвинуться внутри MIT, сделать свою
    150 организацию больше, и он постоянно пытался сделать так, чтобы Лаборатория ИИ
    151 стала частью его лаборатории, и никто не хотел плясать под его дудку, потому
    152 что он считал, что люди должны подчиняться приказам и тому подобному.</p>
    153 
    154 <p>Но от этой опасности мы сумели защититься, только для того, чтобы быть
    155 разрушенными тем, чего мы никогда не предчувствовали, и это была
    156 коммерциализация. Примерно в начале восьмидесятых хакеры внезапно
    157 обнаружили, что теперь есть коммерческий интерес в том, что они
    158 делают. Можно было стать богатым, работая в частной компании. Всё, что было
    159 нужно&nbsp;&mdash; это прекратить делиться своим трудом с остальным миром и
    160 разрушить Лабораторию ИИ MIT, и они так и сделали, несмотря на все мои
    161 старания им помешать.</p>
    162 
    163 <p>По существу, всех компетентных программистов, кроме меня, сманили из
    164 лаборатории, и это вызвало нечто большее, чем эпизодическое
    165 изменение&nbsp;&mdash; это вызвало необратимое преобразование, потому что
    166 это нарушило непрерывность культуры хакеров. Новые хакеры всегда
    167 привлекались старыми хакерами; там были интереснейшие компьютеры, люди,
    168 делающие интереснейшие вещи, и атмосфера, быть частью которой было дико
    169 интересно. Когда это ушло, не стало ничего, что притягивало бы кого-нибудь
    170 нового, так что новички прекратили появляться. Не было никого, кто бы мог
    171 вдохновить их, никого, от кого бы можно было перенять
    172 традиции. Вдобавок&nbsp;&mdash; никого, от кого можно было бы научиться
    173 хорошему программированию. Когда есть только кучка профессоров и аспирантов,
    174 которые на самом деле не знают, как заставить программу работать, ты не
    175 можешь научиться писать хорошие программы. Так кончилась Лаборатория ИИ MIT,
    176 которую я любил. И после пары лет боёв с теми, кто это сделал, чтобы
    177 наказать их за это, я решил посвятить себя попытке создать новое сообщество
    178 в таком духе.</p>
    179 
    180 <p>Но одной из проблем, с которыми мне пришлось столкнуться, была проблема <a
    181 href="/philosophy/categories.html#ProprietarySoftware">несвободных
    182 программ</a>. Например, после ухода хакеров в лаборатории произошло вот
    183 что. Машины и программы, которые мы разработали, невозможно было больше
    184 поддерживать. Программы, конечно, работали и продолжали работать, если никто
    185 их не изменял, но машины&nbsp;&mdash; нет. Машины ломались, и не было
    186 никого, кто мог бы их починить, и в конце концов их выбрасывали. В былые
    187 времена, да, у нас были договоры на обслуживание, но это была по существу
    188 шутка. Это был способ достать запчасти после того, как опытные хакеры из
    189 лаборатории устраняли проблему. Потому что если ты дашь выездному
    190 специалисту по обслуживанию устранить это, это займёт у них несколько дней,
    191 а ты не хочешь этого, ты хочешь, чтобы оно работало. Так что люди, которые
    192 знали, как это сделать, просто шли и быстро устраняли это, и поскольку они
    193 были вдесятеро компетентнее любого из выездных специалистов по обслуживанию,
    194 они могли сделать это гораздо лучше. И потом, когда у них оставались
    195 пережжённые платы, они просто оставляли их там и говорили выездному
    196 специалисту: &ldquo;заберите их и пришлите нам новых&rdquo;.</p>
    197 
    198 <p>В по-настоящему старые времена наши хакеры обычно дорабатывали и машины,
    199 которые поступали из Digital. Например, они построили страничные модули для
    200 PDP-10. Сейчас я думаю, здесь [в Стокгольме] есть люди, которые тоже делают
    201 такое, но это было очень необычно в те времена. В по-настоящему старые
    202 времена, в начале шестидесятых, люди привыкли дорабатывать компьютеры:
    203 добавлять всевозможные новые команды, новые замысловатые возможности
    204 разделения времени, так что у PDP-1 в MIT к тому времени, когда её списывали
    205 в середине семидесятых, было примерно вдвое больше команд, чем было, когда
    206 её поставили Digital в начале шестидесятых; у неё были особые аппаратные
    207 возможности для распределения ресурсов и необычайные возможности
    208 переадресации памяти, что давало возможность назначать отдельные аппаратные
    209 устройства конкретным задачам разделённого времени, и ещё многое, о чём я
    210 даже толком не знаю. По-моему, они даже встроили своего рода расширенные
    211 режимы адресации, они добавили индексные регистры и косвенную адресацию и
    212 они по существу превратили её из слабой машины в полуприличную.</p>
    213 
    214 <p>Мне кажется, один из недостатков сверхбольших интегральных
    215 микросхем&nbsp;&mdash; что в машины больше невозможно добавлять команды.</p>
    216 
    217 <p>У PDP-1 также была одна интересная черта: можно было уместить интересные
    218 программы в очень небольшое число команд. Меньше, чем для любой другой
    219 машины с тех пор. Скажем, например, знаменитая экранная заставка
    220 &ldquo;секущиеся квадраты&rdquo;, которая делала квадраты, которые росли и
    221 разбивались на много меньших квадратов, которые росли и разбивались на
    222 меньшие квадраты. Это уместилось во что-то вроде пяти команд на PDP-1. И
    223 много других прекрасных экранных программ можно было уместить в несколько
    224 команд.</p>
    225 
    226 <p>Вот чем была Лаборатория ИИ. Но чем ещё отличалась культура хакеров, кроме
    227 их анархизма? Во времена PDP-1 только один человек мог пользоваться машиной,
    228 по крайней мере, поначалу. Через несколько лет они написали систему
    229 разделения времени, и они добавили для этого массу аппаратуры. Но вначале
    230 приходилось просто записываться на какое-то время. Ну, конечно, профессора и
    231 исследователи, работающие над официальными проектами, всегда приходили в
    232 дневное время. Так что люди, которые хотели получить побольше времени,
    233 записывались на вечер, когда было меньше желающих, и это породило обычай
    234 хакеров работать по ночам. Даже когда была многозадачность, всё равно было
    235 легче получить время, ты мог получить больше циклов ночью, потому что было
    236 меньше пользователей. Так что люди, которые хотели переделать много дел, всё
    237 равно приходили вечером. Но потом это стало кое-чем другим, потому что ты
    238 был не один, было ещё несколько хакеров, и так это стало социальным
    239 явлением. В дневное время, если ты приходил, ты мог ожидать увидеть
    240 исследователей и профессоров, которые не любили машину по-настоящему, в то
    241 время как если ты приходил вечером, ты видел хакеров. Стало быть, хакеры
    242 приходили вечером, чтобы быть со своей культурой. И у них возникли другие
    243 традиции, такие, как принимать китайскую еду в три часа утра. И я помню
    244 много восходов из окна автомобиля, возвращающегося из китайского
    245 квартала. На самом деле это было очень красиво&nbsp;&mdash; встречать
    246 восход, потому что это такое тихое время суток. Это чудесное время суток,
    247 чтобы идти спать. Это так славно&nbsp;&mdash; идти домой, когда небо чуть
    248 светлеет и птицы начинают чирикать, ты можешь получить мягкое чувство
    249 полного удовлетворения, спокойствия за работу, которую ты сделал этой ночью.</p>
    250 
    251 <p>Другой традицией, возникшей у нас, была традиция устраивать места в
    252 лаборатории, где можно было бы спать. На моей памяти в лаборатории всегда
    253 была хотя бы одна кровать. И я, возможно, прожил в лаборатории немного
    254 больше, чем большинство людей, потому что каждый год или два по той или иной
    255 причине у меня не было жилья, и я несколько месяцев жил в лаборатории. И я
    256 всегда находил, что это очень удобно и в то же время приятно и прохладно
    257 летом. Но вид людей, спящих в лаборатории, не был чем-то необычным,
    258 опять-таки из-за их энтузиазма; ты остаёшься на рабочем месте, пока только
    259 можешь программировать, просто потому, что не хочешь останавливаться. А
    260 когда ты полностью выдохся, ты взбираешься на ближайшую мягкую
    261 горизонтальную поверхность. Очень неформальная атмосфера.</p>
    262 
    263 <p>Но когда все хакеры ушли из лаборатории, это вызвало демографический сдвиг,
    264 потому что профессора и исследователи, которые не любили машину по-
    265 настоящему, были так же многочисленны, как и раньше, так что они были теперь
    266 доминирующей стороной, а они очень боялись. &ldquo;Без хакеров, которые
    267 поддерживали бы систему&rdquo;,&mdash; говорили они,&mdash; &ldquo;у нас
    268 будет катастрофа, у нас должно быть коммерческое программное
    269 обеспечение&rdquo;, и они говорили: &ldquo;мы можем ожидать, что компания
    270 будет поддерживать его&rdquo;. Время показало, что они были совершенно
    271 неправы, но они так и сделали.</p>
    272 
    273 <p>Это было как раз когда ожидалось появление новой системы KL-10, и встал
    274 вопрос, будет ли на ней установлена Несовместимая Система Разделения Времени
    275 или система Twenex компании Digital. Поскольку хакеры, которые, наверное,
    276 поддержали бы ITS, ушли, эти академические типы выбрали коммерческое
    277 программное обеспечение, и это имело несколько немедленных
    278 результатов. Некоторые из них на самом деле не были такими немедленными, но
    279 они следовали неизбежно, как понял бы любой, кто размышлял об этом.</p>
    280 
    281 <p>Один из результатов&nbsp;&mdash; что программы были гораздо хуже написаны и
    282 их было труднее понимать; как следствие, людям было труднее вносить в них
    283 изменения, которые фактически были необходимы. Другой&nbsp;&mdash; что эти
    284 программы приходили со средствами безопасности, что неизбежно заставляло
    285 людей меньше сотрудничать друг с другом. В старые времена на ITS считалось
    286 желательным, чтобы каждый мог заглянуть в любой файл, изменить любой файл,
    287 потому что у нас были на это причины. Я помню один интересный скандал, когда
    288 кто-то прислал запрос на помощь по использованию программы Macsyma. Это
    289 программа символьной алгебры, разработанная в MIT. Он послал одному из
    290 людей, работавших над ней, запрос на помощь, и получил ответ через несколько
    291 часов от кого-то другого. Он ужаснулся, он послал сообщение: &ldquo;такой-то
    292 и такой-то, должно быть, читает вашу почту, наверное, файлы почты не
    293 защищены в вашей системе, как следует?&rdquo; &ldquo;Конечно; никакие файлы
    294 в нашей системе не защищены. В чём дело? Вы получили ответ раньше. Чем вы
    295 недовольны? Конечно, мы читаем почту друг друга, чтобы находить таких людей,
    296 как вы, и помогать им&rdquo;. Некоторые просто не понимают, что для них
    297 лучше.</p>
    298 
    299 <p>Но, конечно, в Twenex не только есть безопасность, и по умолчанию она
    300 включена, но она также разработана в предположении о том, что безопасность
    301 используется. Так что там много такого, что очень легко сделать, и это может
    302 причинить большой ущерб, и единственное, что может тебя уберечь от
    303 совершения такого действия по ошибке,&mdash; это безопасность. В ITS мы
    304 развили другие средства, делающие маловероятным совершение таких действий по
    305 ошибке, но в Twenex у тебя их не было, потому что они предполагали, что там
    306 будет действовать строгая безопасность и только у начальства будет власть
    307 делать это. Так что они не заложили никакого другого механизма,
    308 затрудняющего такие случайные действия. В результате ты не можешь просто
    309 взять Twenex и выключить безопасность и получить то, что ты на самом деле
    310 хотел, и больше не было хакеров, чтобы сделать изменения и заложить те
    311 другие механизмы, так что люди были вынуждены применять безопасность. И
    312 примерно через шесть месяцев после того, как появилась машина, они начали
    313 некий переворот. То есть, сперва у нас было предположение, что у каждого,
    314 кто работал в лаборатории, будет флаг wheel, который даёт полную власть
    315 отменять все меры безопасности, но в один прекрасный день ты приходил и
    316 видел, что флаг wheel почти у всех снят.</p>
    317 
    318 <p>Когда я обнаружил это, я перекинул всё назад. В первый раз оказалось, что я
    319 знаю пароль одного из тех, кто был включён в элиту, так что я мог
    320 воспользоваться этим, чтобы включить всех обратно. Во второй раз он изменил
    321 пароль, он теперь поменял симпатии, он теперь был частью аристократической
    322 партии. Итак, мне пришлось выключить машину и применить однозадачный ДДТ,
    323 чтобы обойти это. Я немного покопался в мониторе и наконец понял, как
    324 заставить его загрузиться и позволить мне его подлатать, так что я мог
    325 выключить проверку пароля, и тогда я включил людям всю кучу флагов wheel и
    326 послал системное сообщение. Я должен пояснить, что имя этой машины было OZ,
    327 так что я послал системное сообщение: &ldquo;Была ещё одна попытка захвата
    328 власти. До сих пор аристократические силы терпели поражение&nbsp;&mdash;
    329 Радио &lsquo;Свободная OZ&rsquo;&rdquo;. Позднее я обнаружил, что
    330 &ldquo;Радио &lsquo;Свободная OZ&rsquo;&rdquo; есть в театре Firesign. В то
    331 время я этого не знал.</p>
    332 
    333 <p>Но постепенно становилось всё хуже и хуже, просто природа принципов, на
    334 которых была построена система, вынуждала людей требовать всё больше и
    335 больше безопасности. До тех пор, пока я наконец не был вынужден прекратить
    336 пользоваться машиной, потому что я отказывался хранить пароль в секрете. С
    337 тех пор, как пароли появились в Лаборатории ИИ MIT, я пришёл к заключению,
    338 что для того, чтобы следовать своему убеждению о том, что паролей не должно
    339 быть, нужно, чтобы у меня всегда был самый очевидный из возможных паролей, и
    340 мне следует всем рассказывать, какой это пароль. Из-за того, что я не верю,
    341 что на компьютере безопасность на самом деле желательна, я не должен
    342 добровольно помогать поддерживать режим безопасности. В системах, которые
    343 допускают это, я задаю &ldquo;пустой пароль&rdquo;, а в системах, где это
    344 запрещено или где это значит, что ты не можешь войти туда из других мест,
    345 или ещё что-нибудь, я задаю своё имя пользователя в качестве пароля. Это
    346 один из самых очевидных среди возможных паролей. А когда мне указывают на
    347 то, что таким образом люди могли бы войти в систему под моим именем, я
    348 говорю: &ldquo;Да, в том-то и мысль, что кому-то может быть необходимо
    349 получить какие-то данные с этой машины. Я хочу гарантировать, что
    350 безопасность их не отошьёт&rdquo;.</p>
    351 
    352 <p>А другое, что я всегда делаю&nbsp;&mdash; я всегда снимаю всю защиту с моих
    353 каталогов и файлов, потому что время от времени у меня там появляются
    354 полезные программы, и если там есть ошибка, я хочу, чтобы люди могли
    355 исправить её.</p>
    356 
    357 <p>Но та машина также не была задумана для поддержки феномена под названием
    358 &ldquo;туризм&rdquo;. Сейчас &ldquo;туризм&rdquo;&nbsp;&mdash; очень старая
    359 традиция в Лаборатории ИИ, которая жила вместе с другими нашими формами
    360 анархии, она состояла в том, что мы позволяли посторонним приходить и
    361 пользоваться машиной. Так вот, во времена, когда каждый мог подойти к машине
    362 и войти под каким угодно именем, это было само собой: если ты заглянул в
    363 лабораторию, ты можешь войти в систему и работать. Позднее мы это немного
    364 формализовали как официальную традицию, особенно когда началась Arpanet и
    365 люди со всей страны начали подключаться к нашим машинам. Так вот, на что мы
    366 надеялись&nbsp;&mdash; это что эти люди на самом деле будут учиться
    367 программировать и начнут изменять систему. Если вы скажете это системному
    368 администратору в любом другом месте, он будет в ужасе. Если вы предложите,
    369 чтобы любой посторонний мог пользоваться машиной, он скажет: &ldquo;Но что,
    370 если он начнёт изменять системные программы?&rdquo; Но для нас, когда
    371 посторонний начинал изменять системные программы, это значило, что он
    372 выказывает неподдельное желание стать активным членом сообщества. Мы всегда
    373 поощряли их к этому. Начиная, конечно, с написания новых системных утилит,
    374 небольших, мы приглядывали за тем, что они сделали, и поправляли это, но
    375 затем они переходили к добавлению возможностей к существующим большим
    376 утилитам. А это&nbsp;&mdash; программы, существовавшие десять или, может
    377 быть, пятнадцать лет, вырастая часть за частью по мере того, как один
    378 искусник за другим добавлял новые возможности.</p>
    379 
    380 <p>Типа того, как города во Франции, можно сказать, где видишь крайне старые
    381 здания с пристройками, которые добавляли в течение нескольких веков вплоть
    382 до нашего времени. В области вычислений программа, которая была начата в
    383 1965 году,&mdash; по существу то же самое. Итак, мы всегда надеялись, что
    384 туристы станут сопровождать систему, и возможно, потом их наймут, после
    385 того, как они уже начали работать над системными программами и показали нам,
    386 что они способны выполнять хорошую работу.</p>
    387 
    388 <p>Но у машин ITS были определённые особенности, которые помогали предотвратить
    389 выход этого из-под контроля, одной из них была возможность
    390 &ldquo;шпионить&rdquo;, когда любой мог подсмотреть, что делает кто угодно
    391 другой. И, конечно, туристы обожали шпионить, они думают, это такая классная
    392 штука, немного некрасиво подглядывать, но в результате если турист начинает
    393 делать что-то, что вызывает неприятности, всегда есть кто-то, кто смотрит за
    394 ним. Так что очень скоро его друзья начинают сходить с ума, потому что они
    395 знают, что существование туризма зависит сознательности туристов. Так что
    396 обычно оказывалось, что кто-нибудь знает, кто был тот парень, и мы были в
    397 состоянии указать ему на дверь. А если мы не могли, мы полностью выключали
    398 доступ из определённых мест, на некоторое время, а когда мы включали его
    399 обратно, к тому времени он уже уходил и забывал нас. И так это продолжалось
    400 годы, и годы, и годы.</p>
    401 
    402 <p>Но система Twenex не была разработана для такого рода вещей, и в конце
    403 концов они перестали терпеть меня и то, что мой пароль все знали: туристы
    404 всегда работали под моим именем по двое и по трое сразу, так что они начали
    405 блокировать мою учётную запись. А к тому времени я всё равно уже в основном
    406 работал на других машинах, так что в конце концов я прекратил включать её
    407 обратно. Вот в чём дело. Я не входил в систему под своим
    408 именем&hellip;<span>[В этом месте RMS был прерван бурными
    409 аплодисментами]</span>&hellip;</p>
    410 
    411 <p>Но когда они впервые получили эту систему Twenex, у них было на уме
    412 несколько изменений, которые они хотели внести. Изменений в том, как
    413 работала безопасность. Они также хотели, чтобы машина была как в сети ARPA,
    414 так и в сети MIT-chaos, и вышло, что они были не в состоянии сделать это,
    415 что они не могли найти кого-нибудь, кто был бы достаточно компетентен, чтобы
    416 внести такие изменения. Больше не было талантов, чтобы это сделать, и её
    417 было трудно изменять. В этой системе было гораздо труднее разобраться,
    418 потому что она была так плохо написана, и, конечно, Digital не собирались
    419 этим заниматься, так что их мысль о том, что коммерческая система будет по
    420 существу сама себя поддерживать, оказалась ошибочной. Они всё так же
    421 нуждались в системных хакерах, но у них больше не было возможностей
    422 приманивать системных хакеров. И сейчас в MIT больше людей, заинтересованных
    423 изощрении ITS, чем заинтересованных в изощрении Twenex.</p>
    424 
    425 <p>И заключительная причина, по которой это происходит&nbsp;&mdash; это что
    426 Twenex нельзя передавать. Twenex&nbsp;&mdash; это несвободная программа, и
    427 тебе позволено иметь исходные тексты, только если ты будешь хранить их в
    428 секрете на определённых скверных условиях, и это придаёт им дурной
    429 запах. Если только человек не забывчив (в мире компьютеров есть такие люди,
    430 есть люди, которые будут делать что угодно, если их это забавляет, не
    431 задумываясь ни на минуту о том, сотрудничают ли они с кем-нибудь другим, но
    432 нужно быть изрядно забывчивым, чтобы не замечать, как грустно работать над
    433 подобной программой, а это отвращает ещё больше). А если этого недостаточно,
    434 есть факт, что каждый год или около того они выдают тебе новый выпуск,
    435 заполненный полусотней тысяч дополнительных строк, набитых
    436 обезьянами. Потому что они в общем следуют предписаниям школы системной
    437 разработки  &ldquo;миллион барабанящих по кнопкам обезьян в конце концов
    438 придут к чему-нибудь полезному&rdquo;.</p>
    439 
    440 <p>Для меня было ясно из того, что, как  я видел, происходило с этими
    441 несвободными системами, что единственное, что позволило бы нам сохранить дух
    442 старой Лаборатории ИИ,&mdash; это свободная операционная
    443 система. Операционная система, построенная из свободных программ, которыми
    444 можно обмениваться с кем угодно. Так, чтобы мы могли бы пригласить всех
    445 присоединиться к улучшению её. А это&nbsp;&mdash; то, что привело к проекту
    446 GNU. Итак, я полагаю, мы дошли до второй части беседы.</p>
    447 
    448 <p>Примерно три с половиной года назад для меня было ясно, что мне следует
    449 начать разработку системы <a href="/philosophy/free-sw.html">свободных
    450 программ</a>. Мне представлялись возможными две разновидности системы:
    451 во-первых, система типа машины LISP,&mdash; по существу, система,
    452 точь-в-точь такая же, как машина LISP MIT, которую тогда только что
    453 разработали, только свободная и работающая на универсальной аппаратуре, а не
    454 на специальных машинах LISP. А другая возможность&nbsp;&mdash; более
    455 ортодоксальная операционная система, и для меня было ясно, что если я делаю
    456 ортодоксальную систему, то мне следует сделать её совместимой с Unix, потому
    457 что это сделает переход на неё лёгким для всех окружающих. Очень скоро я
    458 пришёл к заключению, что мне следует выбрать второе по той причине, что я
    459 понимал, что нельзя сделать что-нибудь действительно подобное системе машины
    460 LISP на универсальной аппаратуре. Система машины LISP пользуется специальной
    461 аппаратурой плюс специальным модифицируемым микрокодом, чтобы добиться
    462 одновременно хорошей скорости вычислений и устойчивого обнаружения ошибок,
    463 особенно ошибок в типе данных. Чтобы заставить систему LISP достаточно
    464 быстро работать на обычной аппаратуре, мы должны начать делать
    465 предположения. Предполагать, что определённый аргумент имеет определённый
    466 тип, а когда это не так, система просто даёт сбой.</p>
    467 
    468 <p>Конечно, можно вставить явные проверки, можно писать надёжные программы,
    469 если захотите, но фактически ты будешь получать вещи вроде ошибок адресации
    470 памяти, когда ты скармливаешь функции аргумент не того типа, если ты не
    471 вставишь чего-нибудь для проверки этого.</p>
    472 
    473 <p>Так что в результате тебе нужно что-то выполняющееся под оболочкой системы
    474 LISP, чтобы отлавливать эти ошибки и позволять пользователю продолжать
    475 вычисления и давать ему отчёт о том, что произошло. Наконец, я пришёл к
    476 заключению, что если я собираюсь делать операционную систему на более низком
    477 уровне, то я мог бы с таким же успехом сделать хорошую операционную
    478 систему&nbsp;&mdash; то есть был выбор между операционной системой с LISP и
    479 просто операционной системой; стало быть, мне надо сделать сперва
    480 операционную систему и мне надо сделать её совместимой с Unix. Наконец,
    481 когда я осознал, что я могу воспользоваться самым занятным в английском
    482 языке словом в качестве названия для системы, стало ясно, какой выбор я был
    483 просто вынужден сделать. А тем словом было, конечно, GNU, что значит
    484 &ldquo;Gnu's Not Unix&rdquo; (GNU&nbsp;&mdash; не Unix). Рекурсивное
    485 сокращение&nbsp; &mdash; это очень старая традиция в обществе хакеров
    486 MIT. Она началась, я думаю, с редактора, названного TINT, что значит:
    487 &ldquo;Tint Is Not Teco&rdquo; (&ldquo;Tint&nbsp;&mdash; это не
    488 Teco&rdquo;), а затем она прошла через такие названия, как
    489 &ldquo;SINE&rdquo; (&ldquo;SINE Is Not Emacs&rdquo;:
    490 &ldquo;SINE&nbsp;&mdash; это не Emacs&rdquo;), и  FINE (&ldquo;Fine Is Not
    491 Emacs&rdquo;: &ldquo;Fine&nbsp;&mdash; это не Emacs&rdquo;),  и EINE
    492 (&ldquo;Еine Is Not Emacs&rdquo;: &ldquo;Еine&nbsp;&mdash; это не
    493 Emacs&rdquo;), и ZWEI (&ldquo;Zwei Was Eine Initially&rdquo;: &ldquo;Zwei
    494 изначально был Emacs&rdquo;), и в конце концов теперь она дошла до GNU.</p>
    495 
    496 <p>Я бы сказал, что с того времени, около двух с половиной лет назад, когда я
    497 на самом деле начал работу над GNU, я сделал больше половины всей работы.
    498 Когда я готовился начать работу над проектом, я сперва поискал вокруг, что
    499 из свободного я мог найти уже готовым. Я узнал об интересной переносимой
    500 системе компиляторов, которая называлась &ldquo;набор свободного
    501 университета для компиляторов&rdquo;<a href="#ft1">[1]</a>, и я думал, что с
    502 таким названием, я, наверное, могу получить его. Итак, я послал сообщение
    503 лицу, разрабатывавшему его, с вопросом, не мог ли бы он передать его проекту
    504 GNU, и он сказал: &ldquo;Нет, университет, может быть, и свободный, а
    505 программы, которые он разрабатывает&nbsp;&mdash; нет&rdquo;, но потом он
    506 сказал, что тоже хочет получить систему, совместимую с Unix, и он хочет
    507 написать что-то вроде ядра для неё, так что почему бы мне не написать
    508 утилиты, и вместе их можно было бы распространять с его несвободным
    509 компилятором, чтобы поощрить людей покупать этот компилятор. А я подумал,
    510 что это предложение смехотворно, так что я сказал ему, что первым моим
    511 проектом будет компилятор.</p>
    512 
    513 <p>В то время я на самом деле знал об оптимизирующих компиляторах не много,
    514 потому что я ни над одним из них никогда не работал. Но я запустил свои руки
    515 в компилятор, о котором мне в то время сказали, что он&nbsp;&mdash;
    516 свободный. Это был компилятор под названием  PASTEL, что, по словам авторов,
    517 означает &ldquo;болезненный PASCAL&rdquo;.</p>
    518 
    519 <p>Pastel был очень сложным языком, включающим такие особенности, как
    520 параметризованные типы, и явные параметры типа, и много сложных
    521 вещей. Компилятор, конечно, был написан на этом языке, и у него было много
    522 сложных особенностей для оптимизации использования всего этого. Например,
    523 тип &ldquo;строка&rdquo; в этом языке был параметризованным; можно было
    524 сказать <code>строка(n)</code>, если тебе нужна была строка определённой
    525 длины; ты также мог просто сказать <code>строка</code>, и параметр
    526 определялся из контекста. Ну вот, строки очень важны, и для многих
    527 конструкций, пользующихся ими, необходимо быстрое исполнение, а это значит,
    528 что у них должно быть много особенностей для обнаружения таких вещей, как:
    529 когда объявленная длина строки&nbsp;&mdash; аргумент, о котором известно,
    530 что он неизменен на протяжении функции, сохранить значение и оптимизировать
    531 код, который они собираются сгенерировать, много сложных вещей. Но мне
    532 удалось увидеть в этом компиляторе, как делать автоматическое размещение
    533 регистров, и некоторые идеи о том, как обращаться с разными типами машин.</p>
    534 
    535 <p>Ну, вот. Поскольку этот компилятор уже компилировал PASTEL, что мне нужно
    536 было сделать&nbsp;&mdash; это добавить предобработчик для C, что я и делал,
    537 и добавить постобработчик для 68000, который, как я ожидал, станет моей
    538 первой целевой машиной. Но я столкнулся с серьёзной проблемой. Из-за того,
    539 что язык PASTEL был определён так, чтобы не требовать от тебя, чтобы ты
    540 объявлял что-нибудь перед тем, как ты будешь обращаться к этому, объявления
    541 и обращения могли быть в любом порядке, другими словами, паскалевское
    542 &ldquo;предварительное&rdquo; объявление было в прошлом, поэтому необходимо
    543 было прочесть всю программу и держать её в памяти, а потом обрабатывать её
    544 всю целиком. В результате промежуточная память, используемая в компиляторе,
    545 размер необходимой памяти, был пропорционален размеру вашего файла. И это
    546 относилось также к пространству стека, тебе нужны были колоссальные
    547 количества стекового пространства, и результатом, к которому я пришёл, было
    548 то, что на доступной мне системе 68000 нельзя было запустить
    549 компилятор. Потому что это была ужасная версия Unix, которая давала тебе
    550 лимит во что-то вроде 16K слов стека, это несмотря на существование шести
    551 мегабайт в машине, у тебя могло быть только 16K слов стека или что-то вроде
    552 этого. И, конечно, чтобы генерировать свою матрицу конфликтов, чтобы
    553 увидеть, какие временные значения конфликтуют или живут в то же время, что и
    554 другие, ему нужна была квадратная матрица бит, и для больших функций это
    555 занимало сотни тысяч байт. Так что мне удалось отладить первый проход из
    556 десяти или около того проходов компилятора, кросс-компилировать на ту машину
    557 и затем обнаружить, что второй никогда не сможет выполниться.</p>
    558 
    559 <p>Пока я размышлял о том, что делать с этими проблемами, и гадал, стоит ли мне
    560 попытаться решить их или написать полностью новый компилятор, между делом я
    561 начал работать над GNU Emacs. GNU Emacs&nbsp;&mdash; это главная
    562 распространяемая часть системы GNU. Это расширяемый текстовый редактор, во
    563 многом сходный с изначальным Emacs, который я разработал десять лет назад,
    564 кроме того, что он пользуется настоящим LISP в качестве языка
    565 расширений. Сам редактор реализован на C, как и интерпретатор LISP, так что
    566 интерпретатор LISP полностью переносим, и тебе не нужна система LISP,
    567 внешняя по отношению к редактору. Редактор содержит собственную систему
    568 LISP, и все команды редактирования написаны на LISP, так что они
    569 обеспечивают тебя примерами того, как писать свои собственные команды
    570 редактирования, и то, с чего начать, так что ты можешь делать из них команды
    571 редактирования, какие тебе на самом деле нужны.</p>
    572 
    573 <p>Летом того года, сейчас это около двух лет назад, один мой друг рассказал
    574 мне, что из-за его участия в ранней стадии разработки Emacs Гослинга у него
    575 было разрешение от Гослинга  в сообщении, которое ему прислали,
    576 распространять свою версию этого. Гослинг первоначально организовал свой
    577 Emacs и распространял его свободно и получил в помощь разработке много
    578 людей, в ожидании, основанном на собственных словах Гослинга из его
    579 собственного руководства, что он собирается продолжать в том же духе, в
    580 котором я начал первоначальный Emacs. Потом он дал всем пинка под зад,
    581 заявив авторские права на него, заставляя людей обещать не
    582 перераспространять его и затем продав его в фирму, занимавшуюся
    583 программами. Мои дальнейшие дела лично с ним показали, что он был ровно
    584 настолько труслив и ничтожен, как вы могли бы понять из этой истории.</p>
    585 
    586 <p>Но как бы то ни было, мой друг дал мне эту программу, и моим намерением было
    587 поменять команды редактирования высокого уровня, чтобы сделать их
    588 совместимыми с первоначальным Emacs, к которому я привык. И заставить их
    589 обрабатывать все комбинации численных аргументов и так далее, всё, что можно
    590 было бы от них ожидать, и получить все возможности, которые я хотел. Но
    591 спустя короткое время я обнаружил, что язык расширений этого редактора,
    592 который называется MOCKLISP, не был достаточен для этой задачи. Я обнаружил,
    593 что мне придётся немедленно поменять его, чтобы делать то, что я
    594 планировал. До этого у меня была мысль, может быть, когда-нибудь заменить
    595 MOCKLISP на настоящий LISP, но я обнаружил, что это нужно было сделать с
    596 самого начала. Ну, вот, MOCKLISP называется MOCK (фальшивым) потому, что в
    597 нём нет никакого рода типов структур: в нём нет списков; в нём нет никакого
    598 рода массивов. В нём также нет символов LISP, то есть объектов с именами:
    599 для каждого конкретного имени есть только один объект, так что ты можешь
    600 напечатать имя и ты всегда получишь тот же самый объект. А это невероятно
    601 затрудняет написание многих видов программ, тебе приходится делать
    602 вычисления сложными манипуляциями строк, которые на самом деле плохо
    603 отражают происходящее.</p>
    604 
    605 <p>Так что я написал интерпретатор LISP и поставил его на место MOCKLISP, и в
    606 процессе этого я обнаружил, что мне пришлось переписать много внутренних
    607 структур данных редактора, потому что я хотел, чтобы они были объектами
    608 LISP. Я хотел, чтобы связи между LISP и редактором были чистыми, это
    609 означает, что объекты, такие, как буферы редактора, подпроцессы, окна и
    610 позиции в буфере,&mdash; всё это должно быть объектами LISP, так что
    611 примитивы редактора, которые работают с ними, на самом деле можно вызывать
    612 как функции LISP с данными LISP. Это значило, что мне требовалось переделать
    613 форматы данных всех этих объектов и переписать все функции, которые работали
    614 с ними, и в результате примерно через шесть месяцев я переписал в редакторе
    615 почти всё.</p>
    616 
    617 <p>Вдобавок, из-за того, что было так трудно писать на MOCKLISP, всё, что было
    618 написано на нём, было очень нечисто, и переписывая это с использованием мощи
    619 настоящего LISP, я мог сделать это гораздо эффективнее и гораздо проще и
    620 гораздо быстрее. Итак, я сделал это, и в результате, когда я начал
    621 распространять эту программу, от того, что я получил, осталась только
    622 небольшая доля.</p>
    623 
    624 <p>В этот момент компания, которой Гослинг, как он думает, продал программу,
    625 оспорила право моего друга распространять её, а сообщение было в архиве на
    626 лентах, так что он не мог найти его. А Гослинг отрицал, что он дал ему
    627 разрешение. И тогда произошло нечто странное.  Он вёл переговоры с этой
    628 компанией, и казалось, что компанию в основном заботило, чтобы он не
    629 поставлял ничего напоминающего то, что они поставляли. Понимаете, он
    630 по-прежнему поставлял, и компания, где он работал, то есть Megatest,
    631 по-прежнему поставляла то же самое, что он дал мне, что на самом деле было
    632 старой версией Emacs Гослинга с его изменениями, так что он собирался
    633 заключить с ними соглашение, по которому он прекратил бы поставлять это и
    634 перешёл бы на GNU Emacs, и они потом признали бы, что у него, в конце
    635 концов, в самом деле было разрешение, и предположительно все были бы
    636 довольны. И эта компания вела со мной переговоры о том, что она хочет
    637 поставлять GNU Emacs, конечно, свободно, но также продавать разного рода
    638 услуги по поддержке, и они хотели нанять меня для помощи в этом. Так что
    639 есть что-то странное в том, что они потом передумали и отказались подписать
    640 соглашение, и вывесили в сети объявление, что мне не разрешено
    641 распространять программу. На самом деле они не сказали, что предпримут
    642 что-нибудь, они просто сказали, что неясно, могут ли они когда-нибудь
    643 сделать что-то. А этого было достаточно, чтобы запугать людей так, что никто
    644 не стал бы больше пользоваться ей, а это печально.</p>
    645 
    646 <p>(Иногда я думаю, что, наверное, одно из лучших дел, которое я мог бы сделать
    647 в жизни,&mdash; это найти огромную кучу несвободных программ, которые были
    648 бы коммерческой тайной, и начать раздавать копии на каждом углу, так чтобы
    649 это не было бы больше коммерческой тайной, и наверное, это был бы гораздо
    650 более эффективный способ для меня дать людям новые свободные программы, чем
    651 на самом деле писать их самому; но все слишком трусливы, чтобы хотя бы взять
    652 их.)</p>
    653 
    654 <p>Итак, я был принуждён переписать всё остальное, что оставалось, и я это
    655 сделал, это заняло у меня недели полторы. Так что они одержали грандиозную
    656 победу. А я уж никогда не стал бы сотрудничать с ними как бы то ни было
    657 после этого.</p>
    658 
    659 <p>Потом, когда GNU Emacs стал довольно стабилен, что заняло на всё про всё
    660 года полтора, я начал возвращаться к другим частям системы. Я разработал
    661 отладчик, который я назвал GDB, это символьный отладчик для программ на C,
    662 который недавно вошёл в дистрибутив. Сейчас это отладчик в значительной мере
    663 в духе DBX,&mdash; отладчика, который входит в берклиевскую Unix. Команды
    664 состоят из слова, которое говорит, что ты хочешь сделать, с последующими
    665 аргументами. В этом отладчике команды могут сокращаться, и частые команды
    666 сокращаются до одной буквы, но любое уникальное сокращение всегда
    667 допускается. В нём есть расширяемые средства справки, ты можешь напечатать
    668 HELP с последующей командой или даже подкомандами и получить обширное
    669 описание того, как применять эту команду. Конечно, можно напечатать любое
    670 выражение на C, и он выведет значение.</p>
    671 
    672 <p>Можно также делать кое-что необычное для символьных отладчиков C, например,
    673 ты можешь сослаться на любой тип C по любому адресу и проверить величину
    674 либо присвоить значение. Так что, например, если хочешь разместить число с
    675 плавающей точкой по определённому адресу, ты просто говоришь: &ldquo;Дай мне
    676 объект типа FLOAT или DOUBLE по этому адресу&rdquo;, и затем присваиваешь
    677 его. Ещё ты можешь проверить все величины, которые проверялись в
    678 прошлом. Каждое проверяемое значение заносится в &ldquo;историю
    679 величины&rdquo;. Можно сослаться на любой элемент в истории по его
    680 порядковому номеру, или можно легко сослаться на последний элемент просто
    681 знаком доллара. А это значительно облегчает отслеживание структуры
    682 списка. Если есть любого рода структура C, которая содержит указатель на
    683 другую структуру, можно просто сделать что-нибудь вроде <code>PRINT
    684 *$.next</code>, это значит: &ldquo;Взять следующее поле из последнего, что
    685 ты мне показал, и показать структуру, которая указывает на это&rdquo;. И
    686 можно повторять эту команду, и каждый раз ты увидишь следующую структуру в
    687 списке. В то время как в любом другом отладчике C, который я видел,
    688 единственный способ сделать это&nbsp;&mdash; печатать каждый раз всё более
    689 длинную команду. А когда это сочетается с особенностью, что просто нажатие
    690 на возврат каретки повторяет последнюю команду, которую ты ввёл, это
    691 становится очень удобно. Просто нажимаешь возврат каретки для каждого
    692 элемента в списке, который хочешь просмотреть.</p>
    693 
    694 <p>Ещё в отладчике есть переменные, которые можно явно присваивать, любое число
    695 переменных. Ты говоришь знак доллара с последующим именем, и
    696 это&nbsp;&mdash; переменная. Можно присваивать этим переменным значения
    697 любого типа C, и потом можно проверять их впоследствии. Кроме прочего, это
    698 полезно для такого: если есть конкретная величина, и ты знаешь, что ты
    699 собираешься часто обращаться к ней, тогда вместо того, чтобы запоминать её
    700 номер в истории, можно дать ей имя. Также можно найти им применение, когда
    701 устанавливаешь условные точки останова. Условные точки останова есть во
    702 многих символьных отладчиках, ты говоришь: &ldquo; остановиться, когда ты
    703 дойдёшь до этого места в программе, но только если данное выражение
    704 истинно&rdquo;. Переменные в отладчике позволяют сравнивать переменную в
    705 программе с предыдущим значением, которое ты сохранил в переменной
    706 отладчика. Другое, для чего их можно применять&nbsp;&mdash; это подсчёт,
    707 потому что, кроме прочего, присваивания&nbsp;&mdash; это выражения C,
    708 следовательно, ты можешь сделать <code>$foo+=5</code> для увеличения
    709 величины <code>$foo</code> на пять, или просто сделать
    710 <code>$foo++</code>. Это можно делать даже в условной точке останова, так
    711 что это дешёвый способ останавливать его каждый десятый раз, когда
    712 проходится точка, можно сделать <code>$foo--==0</code>. Всем понятно?
    713 Уменьшить foo, и если это&nbsp;&mdash; ноль, остановиться. И тогда ты
    714 устанавливаешь <code>$foo</code> равным числу раз, которое хочешь
    715 пропустить, и отпускаешь его. Ещё это можно применять для проверки элементов
    716 массива. Предположим, у тебя есть массив указателей, тогда ты можешь
    717 сделать:</p>
    718 
    719 <pre><code>PRINT X[$foo++]</code></pre>
    720 
    721 <p>Но сначала ты делаешь</p>
    722 
    723 <pre><code>SET $foo=0</code></pre>
    724 
    725 <p>Ладно, когда делаешь это [показывает на выражение <code>PRINT</code>], ты
    726 получаешь нулевой элемент X, а тогда делаешь это снова и получаешь первый
    727 элемент, и предположим, это указатели на структуры, тогда ты, наверное,
    728 поставишь здесь звёздочку [перед X в выражении <code>PRINT</code>], и каждый
    729 раз он выводит следующую структуру, на которую указывает элемент массива. И,
    730 конечно, ты можешь повторять эту команду, нажимая возврат каретки. Если
    731 повторять единственную команду недостаточно, можно создать пользовательскую
    732 команду. Можно сказать: <code>Define Mumble</code>, а потом ты даёшь
    733 несколько строк команд, а потом говоришь <code>end</code>. И уже определена
    734 команда <code>Mumble</code>, которая выполняет эти строки. И очень полезно
    735 помещать эти определения в командный файл. В каждом каталоге у тебя может
    736 быть командный файл, который будет автоматически загружаться, когда
    737 запускаешь отладчик, находясь в этом каталоге. Так что для каждой программы
    738 можно определить набор пользовательских команд для доступа к структурам
    739 данных,  полезный для этой программы. Можно даже снабжать свои
    740 пользовательские команды документацией, так что они станут обрабатываться
    741 средствами справки точно так же, как встроенные команды.</p>
    742 
    743 <p>Другая необычная особенность этого отладчика&nbsp;&mdash; способность
    744 отбрасывать кадры из стека. Потому что я считаю, что важно не только иметь
    745 возможность проверять, что происходит в программе, которую ты отлаживаешь,
    746 но также изменять это любым мыслимым способом. Так что после того, как ты
    747 нашёл одну проблему и ты знаешь, что неправильно, можно поправить всё так,
    748 как если бы эта часть была бы правильной, и найти следующую ошибку без
    749 необходимости сначала перекомпилировать программу. Это означает не только
    750 возможность гибко менять данные в программе, но также возможность менять
    751 поток команд. В этом отладчике можно поменять поток команд очень просто,
    752 говоря:</p>
    753 
    754 <pre><code>SET $PC=&lt;некоторое число&gt;</code></pre>
    755 
    756 <p>Так можно устанавливать счётчик команд. Можно также устанавливать указатель
    757 стека, или можно сказать:</p>
    758 
    759 <pre><code>SET $SP+=&lt;что-нибудь&gt;,</code></pre>
    760 
    761 <p>если хочешь увеличить указатель стека на определённую величину. Но вдобавок
    762 можно велеть ему начать с определённой строки в программе, можно установить
    763 счётчик команд на определённую строку исходного текста. Но что, если ты
    764 обнаружишь, что вызвал функцию по ошибке, что ты на самом деле вообще не
    765 хотел вызывать эту функцию? Скажем, эта функция так наворочена, что на самом
    766 деле ты хочешь вернуться из неё назад и сделать вручную то, что эта функция
    767 должна была сделать. Для этого можно воспользоваться командой
    768 <code>RETURN</code>. Ты выбираешь кадр стека и говоришь:
    769 <code>RETURN</code>, и это приводит к тому, что этот кадр стека и всё, что
    770 он включает, отбрасывается, как если бы эта функция завершилась прямо
    771 сейчас, и ты также можешь задать значение, которое она должна
    772 вернуть. Выполнение не продолжается; он делает вид, что произошло
    773 завершение, и снова останавливает программу, так что ты можешь продолжить
    774 изменять что-нибудь другое.</p>
    775 
    776 <p>И со всем этим, взятым вместе, ты, стало быть, отлично контролируешь то, что
    777 происходит в программе.</p>
    778 
    779 <p>В дополнение, одна немножко забавная вещица: в C есть строковые константы,
    780 что происходит, если использовать строковую константу в выражении, которое
    781 вычисляется в отладчике? Он вынужден создать строку в программе, которую ты
    782 отлаживаешь. Ну, он и создаёт. Он формирует вызов MALLOC в этой отлаживаемой
    783 программе, даёт MALLOC выполниться и затем получает назад управление. Итак,
    784 он невидимо находит место для размещения строковой константы.</p>
    785 
    786 <p>В конце концов, когда этот отладчик будет выполняться в настоящей системе
    787 GNU, я намерен встроить в него средства для проверки всего внутреннего
    788 состояния процесса, который выполняется в отладчике. Например, для проверки
    789 состояния карты памяти,  какие страницы есть, какие можно читать, в
    790 какие&nbsp;&mdash; писать, для проверки состояния терминала программы на
    791 низком уровне. Кое-что из этого уже есть: этот отладчик, в отличие от
    792 отладчиков под Unix, полностью разделяет состояния терминала отладчика и
    793 программы, которую отлаживаешь, так что он работает с программами в режиме
    794 потоковой обработки, он работает с программами, которые производят ввод по
    795 прерыванию, также есть команда, позволяющая узнавать кое-что о настройках
    796 терминала, которые на самом деле установила программа, которую
    797 отлаживаешь. Я считаю, что отладчик вообще должен позволять узнавать всё,
    798 что происходит в низкоуровневом процессе.</p>
    799 
    800 <p>Есть ещё две главных части системы GNU, которые уже
    801 существуют. Одна&nbsp;&mdash; это новый компилятор C, а вторая&nbsp;&mdash;
    802 это ядро TRIX.</p>
    803 
    804 <p>Новый компилятор C&nbsp;&mdash; это то, что я написал в этом году, начиная с
    805 этой весны. Я решил наконец выбросить PASTEL. Этот компилятор C пользуется
    806 некоторыми идеями из PASTEL и некоторыми идеями из Переносимого оптимизатора
    807 Аризонского университета. Их интересная идея была в том, чтобы адресовать
    808 много различных видов машин, генерируя простые команды, а затем комбинируя
    809 несколько простых команд в сложную команду, когда целевая машина это
    810 допускает. Чтобы делать это унифицированно, они представляют команды в
    811 алгебраической записи. Например, команду ADD можно было бы представить так:</p>
    812 
    813 <pre>
    814   <code>r[3]=r[2]+4</code>
    815 </pre>
    816 
    817 <p>Это в их компиляторе представляло бы команду, которая берёт содержимое
    818 регистра два, прибавляет четыре и помещает результат в регистре три. Таким
    819 манером можно представить все возможные команды для любой машины. Итак, они
    820 и представили все команды таким образом, а затем, когда приходило время
    821 попытаться объединить их, они делали это, подставляя одно выражение в
    822 другое, составляя более сложное алгебраическое выражение для объединённой
    823 команды.</p>
    824 
    825 <p>Иногда, в зависимости от того, используется ли как-нибудь в дальнейшем
    826 результат первой команды, может быть необходимо сделать объединённую команду
    827 с двумя операторами присваивания. Одно&nbsp;&mdash; для этой величины
    828 [указывает на ???], а второе&nbsp;&mdash; с этой величиной [указывает на
    829 ???], заменённой на то, что приходит из второй команды. Но если этим
    830 значением пользовались только один раз, его можно исключить после
    831 подстановки; не нужно вычислять его ещё раз. Так что на самом деле несколько
    832 сложно сделать подстановку правильно, проверяя, что промежуточные команды не
    833 меняют никакую из этих величин, и тому подобное. Когда поддерживаешь такие
    834 вещи, как адресация с автоинкрементом или автодекрементом, а я это сейчас
    835 делаю, тебе приходится также делать разные проверки этого, чтобы проверять
    836 ситуации, где то, что ты делаешь, не сохраняет величины.</p>
    837 
    838 <p>Но после проверки всего этого ты берёшь подставленное объединённое выражение
    839 и пропускаешь его через распознаватель комбинаций, который распознаёт все
    840 допустимые команды твоей выбранной целевой машины. А если оно распознано,
    841 тогда ты заменяешь те две команды одной комбинированной, в противном случае
    842 оставляешь их по одной. Их техника заключается в том, чтобы комбинировать
    843 две или три команды, связанные потоком данных, таким образом.</p>
    844 
    845 <p>В аризонском компиляторе они на самом деле представляют всё как текстовые
    846 строки вроде этой, и их компилятор ужасно медленный. Сперва у меня была
    847 мысль просто взять их компилятор и доработать его, но мне было ясно, что мне
    848 придётся полностью переписать его, чтобы получить ту скорость, какую я
    849 хотел, так что я переписал его, чтобы он использовал представления списочной
    850 структуры для всех этих выражений. Что-то вроде этого:</p>
    851 
    852 <pre>
    853      <code>(set (reg 2)</code>
    854           <code>(+ (reg 2)</code>
    855              <code>(int 4)))</code>
    856 </pre>
    857 
    858 <p>Это выглядит, как LISP, но семантика этого не совсем, как в LISP, потому что
    859 каждый символ здесь распознаётся обособленно. Есть конкретный фиксированный
    860 набор этих символов, который определён, всё, что нужно. И у каждого есть
    861 конкретная комбинация типов параметров, например, у <code>reg</code> это
    862 всегда целое, потому что регистры перенумерованы, а <code>+</code> принимает
    863 два подвыражения, и так далее. И у каждого из этих выражений есть также тип
    864 данных, который по существу говорит, фиксированная запятая или плавающая, и
    865 сколько байтов&nbsp;&mdash; длина. Это можно расширить, чтобы принимать во
    866 внимание другие аспекты, если понадобится.</p>
    867 
    868 <p>А автоматическое распределение регистров я делаю так, что когда я изначально
    869 генерирую этот код и когда я делаю объединение и всё такое, для каждой
    870 переменной, которую только можно разместить в регистре, я выделяю то, что я
    871 называю номером псевдорегистра, то есть номер, начинающийся с шестнадцати
    872 или чего угодно, слишком большого, чтобы быть регистром в вашей целевой
    873 машине. Итак, настоящие регистры нумеруются от нуля до пятнадцати или
    874 чего-то ещё, а сверх того идут псевдорегистры. И потом одна из последних
    875 частей компилятора состоит из прохождения и замены всех псевдорегистров
    876 настоящими регистрами. Он опять строит граф конфликтов, он видит
    877 псевдорегистры, живущие в одной и той же точке, и они, конечно, не могут
    878 пойти в один и тот же настоящий регистр, а потом он пытается упаковать
    879 псевдорегистры в настоящие регистры, сколько сможет, назначая их по
    880 приоритету того, насколько они важны.</p>
    881 
    882 <p>И наконец, потом он должен исправить код из-за различных проблем, таких, как
    883 те, что возникают, когда остались псевдорегистры, которые не уместились в
    884 настоящие регистры, которые приходится вместо этого помещать в ячейки
    885 стека. Когда это случается на определённых машинах, некоторые команды могут
    886 стать недопустимыми. Например, на 68000 можно прибавить регистр к памяти и
    887 память к регистру, но нельзя прибавлять одно место памяти к другому. Так что
    888 если у тебя команда сложения и ты компилируешь для 68000 и оба операнда
    889 оказываются в памяти, она недопустима. Так что этот завершающий проход
    890 просматривает и копирует всё в регистры и из регистров, как это нужно для
    891 решения этих проблем.</p>
    892 
    893 <p>Проблемы также могут возникать с индексными регистрами. Если пытаешься
    894 индексировать чем-нибудь, то код всё время становится недопустимым, если
    895 индексирующая величина находится в памяти, за исключением немногих случаев
    896 на некоторых машинах, где косвенной адресацией это делать можно. В случаях,
    897 когда делаешь автоинкремент над индексным регистром, может понадобиться
    898 скопировать величину в регистр, выполнить команду, а затем скопировать
    899 увеличенное значение назад в ячейку памяти, где оно на самом деле живёт.</p>
    900 
    901 <p>Там есть место для большой путаницы, и я ещё не кончил реализовывать все
    902 тонкости, которые нужны, чтобы сделать по-настоящему полностью эффективным.</p>
    903 
    904 <p>Этот компилятор в настоящее время работает с синтаксическим анализатором,
    905 который обращает программу C по существу в синтаксическое дерево,
    906 аннотированное сведениями о типах данных C. Затем другой проход, который
    907 смотрит на это дерево и генерирует код вроде этого [код, похожий на
    908 LISP]. Потом несколько проходов оптимизации. Один&nbsp;&mdash; чтобы
    909 обрабатывать вещи вроде переходов через переходы, переходы на переходы,
    910 переходы на <code>.+1</code>, всё, что может быть упрощено немедленно. Потом
    911 распознаватель общих подвыражений, потом нахождение базовых блоков и
    912 выполнение анализа потоков данных, чтобы знать, какие величины используются
    913 в каждой команде, и никогда&nbsp;&mdash; после неё. А также связывание
    914 каждой команды с местами, где величины, которые ей нужны, генерируются, так
    915 что если у меня есть одна команда, которая генерирует псевдорегистр R[28], а
    916 потом другая команда позднее, которая пользуется этим псевдорегистром, и
    917 это&nbsp;&mdash; первое место, где используется R[28], я заставляю второе
    918 место указывать на первое, и этот указатель применяется в управлении
    919 попытками объединения команд. Объединяются не смежные команды, объединяется
    920 команда, использующая величину, с командой, которая произвела эту
    921 величину. Даже если есть другие команды между ними, в данном случае это не
    922 важно,  нужно просто проверить их и убедиться, что они никак не
    923 вмешиваются. Потом, после объединителя, к делу приступает динамический
    924 распределитель регистров, и наконец нечто, преобразующее это в ассемблерный
    925 код.</p>
    926 
    927 <p>В аризонском компиляторе распознаватель команд генерировался компилятором
    928 LEX. Описание машины&nbsp;&mdash; это просто программа на LEX, которую LEX
    929 превращает в функцию C для распознавания допустимых команд в виде строк. А у
    930 меня вместо этого&nbsp;&mdash; дерево решений особого назначения, которое
    931 генерируется из описания машины, написанном в рамках этого синтаксиса, как
    932 если бы это был LISP. И этот распознаватель служит подпрограммой во многих
    933 разных частях компилятора.</p>
    934 
    935 <p>В настоящий момент этот компилятор примерно так же быстр, как PCC. Он
    936 выполняется заметно быстрее, если ему не велеть делать запутанные размещения
    937 регистров, в этом случае он размещает регистры так же, как PCC. В своём
    938 сверхзапутанном режиме он размещает регистры гораздо лучше, чем PCC, и по
    939 моим наблюдениям, на VAX он генерирует лучший код, который я когда-либо
    940 видел у компилятора C на VAX.</p>
    941 
    942 <p>Для 68000 код ещё не идеален. Я знаю места, где ранние стадии выполняются не
    943 наилучшим образом, потому что он не может полностью заглянуть вперёд. У него
    944 есть выбор на ранней стадии, и он делает то, что по его мнению обещает быть
    945 лучше всего, но на самом деле, если бы он сделал по-другому, более поздняя
    946 стадия достаточно прозорлива, чтобы сделать что-нибудь ещё лучше. Но ранняя
    947 стадия не знает, что собирается делать поздняя стадия, так что мне нужно ещё
    948 поработать кое над чем из этого.</p>
    949 
    950 <p>Иногда это приводит к ненужному освобождению регистров. Потому что когда всё
    951 закручивается в памяти и ему нужно копировать это в регистры, нужно получить
    952 регистры для копий. Это означает, что надо занять регистры, которые уже были
    953 распределены, и выпихнуть временные величины в ячейки стека. Конечно, это
    954 может сделать недопустимыми новые команды, потому что теперь это всё в
    955 памяти, а не в регистрах, так что ему приходится проверять это снова и
    956 снова. Иногда он думает, что ему надо копировать что-то в регистры, а на
    957 самом деле ему это не потребуется, так что он может освободить слишком много
    958 всего, и стало быть не пользоваться регистрами, которыми мог бы.</p>
    959 
    960 <p><span>[Вопрос: У вас есть генератор кода для 32000?]</span> Пока нет, но,
    961 опять-таки, вам нужен будет не генератор кода, а просто описание
    962 машины. Список всех машинных команд в этом [лиспоподобном] виде. Так что
    963 фактически кроме работы по воплощению идеи об ограничениях на то, какие
    964 аргументы могут быть в регистрах и в каких видах регистров, что было нужно
    965 для 68000 и не нужно для VAX, работа по переносу этого компилятора с VAX на
    966 68000 заняла всего несколько дней. Так что переносить очень легко.</p>
    967 
    968 <p>В настоящее время компилятор генерирует ассемблерный код и может
    969 генерировать отладочные данные как в формате, который понимает DBX, так и в
    970 особом внутреннем формате GDB. Я бы сказал, компилятор требует работы только
    971 в трёх областях. Первая: мне надо добавить возможность
    972 &ldquo;профилирования&rdquo; вроде той, которая есть в компиляторах
    973 Unix. Вторая: мне надо сделать эти распределения регистров поумнее, чтобы
    974 больше не видеть глупостей в выходных файлах. И третья: есть различные
    975 ошибки, вещи, которые пока не отрабатываются правильно, хотя он
    976 скомпилировал себя верно. Я ожидаю, что это займёт всего несколько месяцев,
    977 и тогда я выпущу компилятор.</p>
    978 
    979 <p>Другая немалая часть системы, которая существует&nbsp;&mdash; это
    980 ядро. <span>[Вопрос: перерыв?]</span> А, да, по-моему, мы забыли про
    981 перерывы. Почему бы мне не закончить про ядро, это должно занять только
    982 около пяти минут, а потом мы можем сделать перерыв.</p>
    983 
    984 <p>Ну вот, в качестве ядра я планирую взять систему под названием TRIX
    985 (насколько я знаю, это ничего не означает), которая возникла как
    986 исследовательский проект в MIT. Эта система основана на удалённом вызове
    987 процедур. Так что программы называются доменами. Каждый домен&nbsp;&mdash;
    988 это адресное пространство и различные допуски, а допуск&nbsp;&mdash; это не
    989 что иное, как способность вызывать домен. Любой домен может создать
    990 &ldquo;порты допуска&rdquo; для вызова, и потом он может передать эти порты
    991 другим доменам, и нет никакой разницы между вызовом системы и вызовом
    992 другого пользовательского домена. Фактически ты не знаешь, что у тебя. Таким
    993 образом, очень легко получить реализацию устройств другими пользовательскими
    994 программами. Файловую систему можно реализовать пользовательской программой,
    995 прозрачно. Сообщения между сетями тоже прозрачны. Ты думаешь, что прямо
    996 вызываешь другой домен, а на самом деле ты вызываешь домен сетевого
    997 сервера. Он получает данные, которые ты даёшь в вызове, и передаёт их через
    998 сеть программе другого сервера, который затем вызывает домен, с которым ты
    999 пытаешься общаться. Но вы с тем другим доменом видите это как происходящее
   1000 невидимо.</p>
   1001 
   1002 <p>Ядро TRIX запускается, и у него есть определённое ограниченное количество
   1003 совместимости с Unix, но нужно гораздо больше. В настоящее время у него есть
   1004 файловая система с той же структурой диска, как в древней файловой системе
   1005 Unix. Это облегчило отладку, потому что можно организовать файлы в Unix, а
   1006 потом запустить TRIX, но у той файловой системы нет ни одной из
   1007 особенностей, которые, как я полагаю, необходимы.</p>
   1008 
   1009 <p>Особенности, которые, как я считаю, должны быть добавлены, включают номера
   1010 версий, восстановление удалённых файлов, сведения о том, когда и как и где
   1011 файл заархивирован на ленте, атомарное замещение файлов. Я считаю, что в
   1012 Unix хорошо, что когда файл записывается, можно уже посмотреть на то, что
   1013 там происходит, например, можно вызвать <code>tail</code> и узнать, как
   1014 далеко зашло дело, это очень славно. А если программа умирает, частично
   1015 записав файл, видно, что она сделала. Всё это хорошо, но тот частично
   1016 записанный вывод никогда не должен приниматься за полный вывод, который ты
   1017 ожидал в конце концов получить. Предыдущая версия этого должна продолжать
   1018 быть видимой, чтобы каждый, кто пытается пользоваться этим, пользовался ею,
   1019 пока новая версия не будет сделана полностью и верно. Это значит, что новая
   1020 версия должна быть видима в файловой системе, но не под тем именем, которое
   1021 предполагалось. Её следует переименовывать, когда она завершена. Это, между
   1022 прочим, то, что происходит в ITS, хотя там каждая пользовательская программа
   1023 делает это явно. Для совместимости с Unix и пользовательскими программами
   1024 это нужно делать невидимо.</p>
   1025 
   1026 <p>У меня есть хитро запутанная схема, как попытаться заставить номера версий
   1027 уложиться в существующие пользовательские программы Unix. Это&nbsp;&mdash;
   1028 идея, что ты указываешь имя файла, оставляя номер версии неявным, если ты
   1029 просто указываешь имя файла обычным образом. Но если ты хочешь указать
   1030 точное имя, либо потому, что ты хочешь явно задать, какую версию брать, либо
   1031 потому, что ты вообще не хочешь никаких версий, ты помещаешь в конец
   1032 точку. Так что если задаёшь имя файла <code>FOO</code>, это значит:
   1033 &ldquo;Искать версии, которые есть у FOO, и взять самую свежую&rdquo;. Но
   1034 если ты говоришь <code>FOO.</code>, это значит: &ldquo;взять в точности имя
   1035 FOO, и ничто другое&rdquo;. Если ты говоришь <code>FOO.3.</code>,  это
   1036 говорит: &ldquo;взять в точности имя <code>FOO.3</code>&rdquo;, то есть,
   1037 конечно, версию три FOO, и никакую другую. При выводе, если ты просто
   1038 говоришь <code>FOO</code>, она в конце концов создаст новую версию FOO, но
   1039 если ты говоришь <code>FOO.</code>, она запишет файл, названный в точности
   1040 &ldquo;FOO&rdquo;.</p>
   1041 
   1042 <p>Ну, есть кое-какие сложности, связанные с проработкой всех деталей этого и
   1043 обследованием, не кроются ли там какие-нибудь проблемы, не выйдут ли из
   1044 строя некоторые программы Unix, несмотря на то, что им скормят имена с
   1045 точками и так далее, чтобы попытаться добиться от них того же поведения.</p>
   1046 
   1047 <p>Я бы ожидал, что когда открываешь файл для вывода с именем, заканчивающемся
   1048 на точку, на самом деле надо открыть это имя, так что получается... так что
   1049 получается то же самое поведение Unix, частично записанные данные видимы
   1050 немедленно, в то время, как когда открываешь имя, которое не заканчивается
   1051 на точку, должна появиться новая версия, когда закрываешь его, и только если
   1052 ты закроешь его явно. Если он оказывается закрыт оттого, что задача умирает,
   1053 или из-за отказа системы, или что угодно вроде этого, он должен быть под
   1054 другим именем.</p>
   1055 
   1056 <p>И эту идею можно соединить с &ldquo;выбором звёздочкой&rdquo;, говоря, что
   1057 имя, которое не заканчивается на точку, подходит ко всем именам без номеров
   1058 их версий, так что если в определённом каталоге есть, например, файлы:</p>
   1059 
   1060 <pre>
   1061   <code>foo.1 foo.2 bar.8</code>
   1062 </pre>
   1063 
   1064 <p>Если я говорю  <code>*</code>, это эквивалентно</p>
   1065 <pre>
   1066   <code>foo bar</code>
   1067 </pre>
   1068 
   1069 <p>потому что она берёт все имена и отбрасывает их версии, и берёт все
   1070 различные имена. Но если я говорю: <code>*.</code>, тогда она берёт все
   1071 имена в точности, ставит точку после каждого, и сопоставляет с ними. Так что
   1072 это даёт мне все имена для всех индивидуальных версий, которые существуют. И
   1073 аналогично, понятна разница между <code>*.c</code> и <code>*.c.</code>: это
   1074 [первое] даст по существу ссылки на все файлы <code>*.c</code> без версий, в
   1075 то время как это [второе] даст все версии ... ну, на самом деле не даст,
   1076 надо сказать <code>*.c.*.</code>; здесь я ещё не продумал деталей.</p>
   1077 
   1078 <p>Другая вещь, которая невидима пользователю и которую определённо можно
   1079 внести без потери совместимости,&mdash; это стойкость файловой системы к
   1080 сбоям. А именно, записывая все данные на диск в нужном порядке, устроить
   1081 так, чтобы можно было нажать <kbd>останов</kbd> в любое время без
   1082 какого-либо нарушения файловой системы на диске. Как это делать, настолько
   1083 хорошо известно, я просто не могу представить, почему кто-то мог бы
   1084 пренебрегать этим. Другая идея&nbsp;&mdash; ещё более избыточная
   1085 информация.  Я не уверен, буду я это делать или нет, но у меня есть идеи,
   1086 как хранить в каждом файле все его имена, и таким образом сделать возможным,
   1087 если любой каталог на диске пропадёт, реконструировать его по остальному
   1088 содержимому диска.</p>
   1089 
   1090 <p>Также я думаю, что я знаю, как сделать возможным атомарное обновление любой
   1091 части файла. Так, что если хочешь поменять определённый подобъём файла на
   1092 новые данные таким манером, чтобы любая попытка чтения файла видела либо
   1093 только старые данные, либо только новые данные. Я считаю, я могу это
   1094 сделать, даже безо всякого блокирования.</p>
   1095 
   1096 <p>Что касается поддержки сети, я намерен когда-нибудь реализовать TCP/IP для
   1097 этой системы. Я также думаю, что можно воспользоваться KERMIT, чтобы
   1098 получить что-нибудь эквивалентное UUCP.</p>
   1099 
   1100 <p>Командный интерпретатор, я считаю, уже написан. У него есть два режима: один
   1101 имитирует командный интерпретатор BOURNE, а другой имитирует C-shell в той
   1102 же программе. Я ещё не получил его копию, и я не знаю, сколько работы он от
   1103 меня потребует. Также существует много других утилит. Существует MAKE, LS,
   1104 есть замена YACC под названием BISON, который сейчас
   1105 поставляется. Существует кое-что весьма близкое к LEX, но оно не полностью
   1106 совместимо, оно требует некоторой работы. И в общем, то, что остаётся
   1107 сделать, гораздо меньше того, что сделано, но мы всё ещё нуждаемся в помощи
   1108 большого числа людей.</p>
   1109 
   1110 <p>Люди меня всегда спрашивают: &ldquo;Когда это может быть завершено?&rdquo;
   1111 Конечно, я не могу знать, когда это будет завершено, но задавать мне этот
   1112 вопрос&nbsp;&mdash; неправильно. Если бы вы планировали платить за это, для
   1113 вас имело бы смысл пожелать узнать в точности, что вы собираетесь получить и
   1114 когда. Но поскольку вы платить за это не собираетесь, правильным для вас
   1115 было бы спрашивать: &ldquo;чем вы можете помочь ускорить завершение?&rdquo;
   1116 У меня есть список проектов, он в файле в MIT, и люди, заинтересованные в
   1117 оказании помощи, могли бы посылать мне почту по этому адресу Internet, а я
   1118 вышлю в ответ список проектов. (Интересно, работает ли это (глядя на
   1119 мел)). Это видно? Это &ldquo;RMS@GNU.ORG&rdquo; (просто следите за скачущим
   1120 мячиком). А теперь давайте сделаем перерыв, а после перерыва я скажу нечто
   1121 действительно противоречивое. Так что не уходите пока. Если вы уйдёте
   1122 сейчас, вы пропустите самое интересное.</p>
   1123 
   1124 <p><strong>[Тут у нас был пятнадцатиминутный перерыв.]</strong></p>
   1125 
   1126 <p>Меня просили объявить, как можно получить копии программ GNU. Ну, один
   1127 способ, конечно, если у вас есть знакомый приятель, у которого есть копия,
   1128 вы можете скопировать, но если у вас нет знакомого приятеля с копией и вы не
   1129 подключены к Internet, не можете взять её по FTP, то вы всегда можете
   1130 заказать ленту с дистрибутивом и послать денег в Фонд свободного
   1131 программного обеспечения. Разумеется, свободные программы&nbsp;&mdash; это
   1132 не то же самое, что бесплатное распространение. Я дальше подробно это
   1133 объясню.</p>
   1134 
   1135 <p>Вот у меня руководство по EMACS, прекрасно изданное. С него сделали
   1136 диапозитивы и напечатали офсетным способом. Хотя вы тоже можете сами
   1137 распечатать его из исходных текстов, которые включены в дистрибутив EMACS,
   1138 вы можете получить эти копии из Фонда свободного программного
   1139 обеспечения. Потом можно будет подойти и посмотреть, и в нём также есть
   1140 бланк заказа, оттуда можно списать кое-какие данные, и эта картинка [на
   1141 обложке] тоже некоторым понравилась. Это [указывая на фигуру, за которой
   1142 гонится RMS верхом на гну]&nbsp;&mdash; испуганный программозапиратель, я в
   1143 своё время о нём расскажу.</p>
   1144 
   1145 <p>Программное обеспечение&nbsp;&mdash; относительно новое явление. Люди начали
   1146 распространять программы, наверное, тридцать лет назад. Только около
   1147 двадцати лет назад у кого-то возникла мысль сделать из этого
   1148 предприятие. Это была отрасль без традиций того, как люди делают дела или
   1149 какие права есть у кого-либо. И было несколько идей о том, из каких других
   1150 областей жизни можно заимствовать традиции по аналогии.</p>
   1151 
   1152 <p>Одна из аналогий, за которую были многие профессора в Европе,&mdash;
   1153 аналогия между программами и математикой. Программа&nbsp;&mdash; это что-то
   1154 вроде большой формулы. Ну, традиционно никто не может владеть математической
   1155 формулой. Любой может копировать их и пользоваться ими.</p>
   1156 
   1157 <p>Аналогия, которая понятнее всего для простых людей&nbsp;&mdash; это
   1158 рецепты. Если подумать, то вещь, с которой встречаешься в обычной жизни и
   1159 которая больше всего похожа на программу&nbsp;&mdash; это рецепт, это
   1160 указания по выполнению чего-нибудь. Различия возникают, потому что рецепту
   1161 следует человек, а не машина автоматически. Верно, что исходный текст и
   1162 объектный код в данном случае не различаются, но это всё же самое близкое. И
   1163 никому не позволено владеть рецептом.</p>
   1164 
   1165 <p>Но выбрана была аналогия с книгами, у которых есть авторские права. А почему
   1166 был сделан такой выбор? Потому что людям, которым этот конкретный вариант
   1167 был выгоднее всего, было позволено сделать этот выбор. Людям, которые писали
   1168 программы, а не людям, которые ими пользовались, было позволено решать, и
   1169 они приняли совершенно эгоистичное решение, и в результате они превратили
   1170 отрасль программирования в безобразие.</p>
   1171 
   1172 <p>Когда я вошёл в эту отрасль, когда я начал работать в MIT в 1971 году, мысль
   1173 о том, что программами, которые мы разрабатывали, нельзя обмениваться, даже
   1174 не обсуждалась. И то же самое было в Стенфорде и CMU, и у всех, и даже в
   1175 Digital. Операционная система Digital в то время была свободной. Очень и
   1176 очень часто я брал программу из системы Digital, например кросс-ассемблер
   1177 PDP-11, и переносил его на ITS и добавлял кучу особенностей. На эту
   1178 программу не было авторских прав.</p>
   1179 
   1180 <p>И только в конце семидесятых это начало меняться. Меня крайне впечатлял дух
   1181 взаимоотдачи, который у нас был. Мы делали то, что, как мы надеялись,
   1182 полезно, и были счастливы, если люди могли пользоваться этим. Так, когда я
   1183 разработал первый EMACS и люди захотели начать пользоваться им вне MIT, я
   1184 сказал, что он принадлежит &ldquo;Коммуне&rdquo; EMACS, что для того, чтобы
   1185 пользоваться EMACS, нужно быть членом коммуны, и это значило, что на вас
   1186 лежит ответственность за то, чтобы приносить все улучшения, которые вы
   1187 делаете. Все улучшения изначального EMACS надо было присылать мне, чтобы я
   1188 мог включать их в новые версии EMACS, чтобы каждый в обществе мог получать
   1189 от них пользу.</p>
   1190 
   1191 <p>Но это начало разрушаться, когда SCRIBE был разработан в CMU, а затем продан
   1192 компании. Это очень беспокоило многих из нас во многих университетах, потому
   1193 что мы видели, что это было искушением для каждого, что было так выгодно
   1194 отказываться от сотрудничества, и у тех из нас, кто всё-таки верил в
   1195 сотрудничество, не было оружия, чтобы попытаться вынудить людей сотрудничать
   1196 с нами. Понятно, что один за другим люди сдавали и прекращали сотрудничество
   1197 с остальным обществом, и в конце концов только те из нас, в ком была очень
   1198 сильна сознательность, продолжали сотрудничать по-прежнему. Вот что
   1199 произошло.</p>
   1200 
   1201 <p>Теперь отрасль программирования стала отвратительной, там каждый цинично
   1202 думает о том, сколько денег он собирается получить тем, что не будет добр к
   1203 другим людям в этой отрасли и к пользователям.</p>
   1204 
   1205 <p>Я хочу показать, что практика владения программами как материально
   1206 расточительна, так и духовно вредна для общества и дурна. Все эти три вещи
   1207 взаимосвязаны. Это духовно вредно, потому что вовлекает каждого члена
   1208 общества, кто вступает в контакт с компьютерами, в практику, которая
   1209 очевидно материально расточительна для других людей. А каждый раз, когда
   1210 делаешь что-то для своего собственного блага, что, как ты знаешь, вредит
   1211 другим людям больше, чем помогает тебе, ты вынужден стать циничным, чтобы
   1212 сознательно принять это. И это дурно, потому что это преднамеренно расточает
   1213 работу, сделанную в обществе, и приводит общество в упадок.</p>
   1214 
   1215 <p>Сперва я хочу объяснить, какого рода вред наносят попытки владеть
   1216 программами и другими сведениями, которые универсально полезны, потом я
   1217 перейду к опровержению аргументов в поддержку этой практики, а затем я хочу
   1218 поговорить о том, как бороться с этим явлением и как я борюсь с ним.</p>
   1219 
   1220 <p>Идея информационной собственности вредна на трёх разных уровнях. Материально
   1221 вредна на трёх разных уровнях, и каждому виду материального вреда
   1222 соответствует свой духовный вред.</p>
   1223 
   1224 <p>Первый уровень&nbsp;&mdash; это просто то, что она отвращает от применения
   1225 программы, это ведёт к тому, что меньшее число людей пользуется программой,
   1226 но фактически эта программа для меньшего числа людей требует не меньшей
   1227 работы. Когда установлена плата за использование программы, это
   1228 стимул,&mdash; вот в какое слово влюблены эти программозапиратели,&mdash;
   1229 плата&nbsp;&mdash; для людей это стимул не пользоваться программой, а это
   1230 расточительство. Если, например, только половинное число людей применяет
   1231 программу из-за того, что за неё берут плату, программа наполовину
   1232 разбазаривается. То же количество работы произвело только вдвое меньшее
   1233 количество благ.</p>
   1234 
   1235 <p>Вот. Фактически не надо делать ничего особенного, чтобы заставить программу
   1236 разойтись по всем тем, кто хочет ею пользоваться, потому что они сами могут
   1237 прекрасно копировать её, и она дойдёт до каждого. Всё, что вам нужно после
   1238 того, как вы написали программу,&mdash; это присесть в сторонке и дать людям
   1239 делать, что они хотят. Но этого не происходит: вместо этого кто-то
   1240 преднамеренно пытается воспрепятствовать обмену программой, а фактически он
   1241 не просто пытается воспрепятствовать этому, он пытается давить на других
   1242 людей, чтобы они помогали в этом. Всегда, когда пользователь подписывает
   1243 договор о неразглашении, он по существу продаёт своих
   1244 товарищей-пользователей. Вместо того, чтобы следовать золотому правилу и
   1245 сказать: &ldquo;Мне нравится эта программа, моему соседу она тоже
   1246 понравилась бы, я хочу, чтобы она была у нас обоих&rdquo;, вместо этого он
   1247 сказал: &ldquo;Угу, дайте её мне. Чёрт с ним, с моим соседом! Я помогу вам
   1248 уберечь её от моего соседа, только дайте её мне!&rdquo;, а такое
   1249 мировоззрение наносит духовный ущерб. Такое отношение: &ldquo;Чёрт с ними, с
   1250 моими соседями, дайте МНЕ копию&rdquo;.</p>
   1251 
   1252 <p>После того как я наткнулся на людей, которые говорили, что они не позволят
   1253 мне скопировать что-нибудь, потому что они подписали некое соглашение о
   1254 секретности, то когда кто-нибудь просил меня подписать что-то вроде этого, я
   1255 знал, что это неправильно. Я не мог делать с другими то, что так меня
   1256 разозлило, когда это сделали со мной.</p>
   1257 
   1258 <p>Но это&nbsp;&mdash; только один из уровней вреда. Второй уровень вреда
   1259 начинается, когда люди хотят изменить программу, потому что никакая
   1260 программа на самом деле не подходит для всех людей, которые хотят применять
   1261 её. Точно так же, как людям нравится изменять рецепты, например уменьшая
   1262 количество соли, или, может быть, они захотят добавить болгарского перцу,
   1263 так же людям нужно изменять и программы, чтобы получить необходимые эффекты.</p>
   1264 
   1265 <p>Вот. Для владельцев программ на самом деле не важно, смогут люди изменить
   1266 программу или нет, но для их целей полезно предотвратить это. Вообще говоря,
   1267 когда программа несвободна, нельзя взять исходные тексты и править их, а это
   1268 ведёт к растратам большого количества труда программистов, как и ко многим
   1269 огорчениям пользователей. Например: у меня есть знакомая, которая рассказала
   1270 мне, как она много месяцев работала в банке, где она была программистом,
   1271 пишущим новую программу. Вот. Была коммерчески доступная программа, которая
   1272 почти подходила, но это было не совсем то, что нужно, и фактически в том
   1273 виде она была бесполезна для них. Количество изменений, которые пришлось бы
   1274 внести, чтобы заставить её делать то, что им было нужно, наверное, было бы
   1275 невелико, но из-за того, что исходные тексты той программы не были доступны,
   1276 это было невозможно. Ей пришлось начать всё заново и растратить много
   1277 труда. И мы можем только гадать о том, какая часть всех программистов в мире
   1278 растрачивает своё время таким манером.</p>
   1279 
   1280 <p>А потом, есть ещё ситуация, когда программа работает адекватно, но она
   1281 неудобна. Например: в первый раз, когда мы получили графический принтер в
   1282 MIT, мы сами написали программы, и мы внесли много замечательных
   1283 особенностей, например, она посылала тебе сообщение, когда твоё задание
   1284 заканчивало печать, и она посылала тебе сообщение, если в принтере кончалась
   1285 бумага, а у тебя было задание на очереди, и много другого, это было то, что
   1286 мы хотели. Потом мы получили гораздо более великолепный графический принтер,
   1287 один из первых лазерных принтеров, но тогда программу поставляла Xerox, и мы
   1288 не могли править её. Они не собирались закладывать эти особенности, а мы не
   1289 могли, так что нам приходилось иметь дело с вещами, которые
   1290 &ldquo;наполовину работали&rdquo;. И было очень огорчительно знать, что мы
   1291 были готовы, мы желали, мы были в состоянии исправить это, но нам не
   1292 разрешали. Нас саботировали.</p>
   1293 
   1294 <p>А потом все те люди, которые пользуются компьютерами и говорят, что
   1295 компьютеры для них&nbsp;&mdash; тайна за семью печатями,&mdash; они не
   1296 знают, как они работают. Ну как же они узнают? Они не могут прочесть
   1297 программы, которыми пользуются. Единственный способ, которым люди узнают,
   1298 как следует писать программы или как программы делают то, что они
   1299 делают,&mdash; это чтение исходных текстов.</p>
   1300 
   1301 <p>Так что я мог бы только догадываться, не является ли мысль о пользователе,
   1302 который думает о компьютере просто как об инструменте, на самом деле
   1303 самовоплощающимся предсказанием, результатом практики хранения исходных
   1304 текстов в секрете.</p>
   1305 
   1306 <p>Вот. Духовный вред, который соответствует материальному вреду этого
   1307 рода,&mdash; это дух самодостаточности. Когда личность проводит много
   1308 времени за вычислительной системой, конфигурация этой системы становится
   1309 городом, в котором она живёт. Точно так же, как планировка наших домов и
   1310 расстановка мебели определяет, на что похожа наша жизнь среди них, так же и
   1311 с вычислительной системой, которой мы пользуемся, и если мы не можем
   1312 изменять под себя вычислительную систему, которой пользуемся, то в
   1313 действительности наша жизнь находится под контролем других. А личность,
   1314 которая видит это, в определённом смысле деморализуется: &ldquo;Нет никакого
   1315 толку в том, чтобы пытаться это изменить, это всегда будет плохо. Нет смысла
   1316 даже ворошить это. Я просто потрачу на это своё время, и... когда это
   1317 закончится, я уйду и попытаюсь больше не думать об этом&rdquo;. К такого
   1318 рода настроениям, к этому неэнтузиазму приводит запрет улучшать вещи, когда
   1319 у вас есть чувство духа общественности.</p>
   1320 
   1321 <p>Третий уровень вреда&nbsp;&mdash; взаимодействие между самими разработчиками
   1322 программ. Потому что любая область знания прогрессирует больше всего, когда
   1323 люди могут основываться на труде других, но информационная собственность
   1324 нарочно организована для того, чтобы не дать никому другому делать это. Если
   1325 бы люди могли основываться на труде других людей, то собственность стала бы
   1326 неясной, так что они следят за тем, чтобы каждую новую позицию в этой
   1327 области приходилось начинать с начала, и таким образом они сильно замедляют
   1328 прогресс в этой области.</p>
   1329 
   1330 <p>Вот мы и видим: сколько систем табличных вычислений было сделано,
   1331 каждая&nbsp;&mdash; новой компанией, каждая&nbsp;&mdash; безо всякой пользы
   1332 от понимания того, как это делалось раньше? Да, верно, первая такая система
   1333 не была совершенством. Она, наверное, работала только на определённых видах
   1334 компьютеров, и что-то она делала не наилучшим из возможных способов. Так что
   1335 были разные причины, по которым определённые люди хотели бы переписать её
   1336 части. Но если бы им приходилось переписывать только части, которые они на
   1337 самом деле желали улучшить, работы было бы гораздо меньше. Ты можешь
   1338 понимать, как улучшить  систему в одном аспекте, и не понимать, как улучшить
   1339 ту же самую систему в другом аспекте; фактически, у тебя может быть много
   1340 головной боли с тем, чтобы сделать это так же хорошо. И вот, если бы ты мог
   1341 взять часть, которая тебе нравится, и переделать только часть, к которой у
   1342 тебя лежит душа, ты мог бы получить систему, которая лучше во всех
   1343 отношениях, положив на это гораздо меньше труда, чем это теперь нужно для
   1344 написания новой системы целиком. Да, мы все знаем, что система часто может
   1345 выиграть от того, что её полностью перепишут, но это только если ты можешь
   1346 сначала прочесть старую.</p>
   1347 
   1348 <p>Итак, люди в отрасли программирования выработали метод разбазаривания
   1349 большого количества своего времени и, таким образом, естественно, увеличения
   1350 потребности в программистах сверх необходимости. Почему имеется нехватка
   1351 программистов? Потому что из-за интеллектуальной собственности программисты
   1352 организованы так, чтобы разбазаривать половину работы, которую они делают,
   1353 так что нам кажется, что нужно вдвое больше программистов. И таким образом,
   1354 когда люди указывают на систему интеллектуальной собственности, говоря:
   1355 &ldquo;взгляните на высокие показатели статистики занятости, посмотрите,
   1356 какая это большая отрасль промышленности&rdquo;, это на самом деле
   1357 доказывает только то, что люди расточают много денег и времени. Если они
   1358 говорят о методах повышения производительности программиста, они охотно
   1359 делают это, если речь идёт о превосходных пакетах разработки, но чтобы
   1360 улучшить производительность программиста избавлением от того, что сделано
   1361 явно для снижения его производительности,&mdash; нет, они против
   1362 этого. Потому что это снизило бы число занятых программистов. Есть в этом
   1363 что-то слегка шизофреническое.</p>
   1364 
   1365 <p>А духовный вред, который соответствует этому уровню материального
   1366 вреда,&mdash; в том, что дух научного сотрудничества, который некогда был
   1367 так силён, что учёные даже в воюющих странах продолжали сотрудничать, потому
   1368 что они знали, что то, что они делают, никак не связано с войной, это было
   1369 просто для долгосрочной выгоды человечества. В наше время людей больше не
   1370 заботит долгосрочная выгода человечества.</p>
   1371 
   1372 <p>Чтобы получить представление о том, что значит препятствовать применению
   1373 программы, давайте представим, что у нас есть бутерброд, который можно
   1374 съесть, а он не будет израсходован. Его можете съесть вы, его может съесть
   1375 другой человек,&mdash; тот же самый бутерброд, сколько угодно раз,&mdash; а
   1376 он всегда будет оставаться таким же аппетитным, как изначально.</p>
   1377 
   1378 <p>Лучшее, что можно сделать, что мы обязаны сделать с этим бутербродом,&mdash;
   1379 это пронести его по тем местам, где есть голодные; разнести его по стольким
   1380 ртам, по скольким возможно, чтобы он насытил столько людей, сколько
   1381 можно. Ни в коем случае у нас не должно быть платы на то, чтобы съесть от
   1382 этого бутерброда, потому что тогда люди не смогут позволить себе есть его, и
   1383 он будет растрачен впустую.</p>
   1384 
   1385 <p>Программа подобна этому бутерброду, но даже более того, потому что её можно
   1386 есть одновременно во многих разных местах, применять разным людям, одному за
   1387 другим. Это как если бы тот бутерброд был достаточен для того, чтобы
   1388 насытить каждого, везде, навсегда, а этому не позволили произойти, потому
   1389 что кто-то считает, что он должен владеть им.</p>
   1390 
   1391 <p>Ну вот; люди, которые считают, что они могут владеть программами, в общем
   1392 приводят два аргумента в пользу этого. Первый&nbsp;&mdash; это &ldquo;я
   1393 написал её, это дитя моего духа, в ней&nbsp;&mdash; моё сердце, моя
   1394 душа. Как может кто-то забрать её у меня? Где бы она ни оказалась, она моя,
   1395 моя, МОЯ!!&rdquo;. Ну, как-то странно, что большинство из них подписывает
   1396 соглашения, по которым она принадлежит компании, на которую они работают.</p>
   1397 
   1398 <p>Итак, я убеждён, что это одна из вещей, о которой легко можно дорассуждаться
   1399 до убеждения, что она важна, но точно так же легко можно убедить себя, что
   1400 это не имеет никакого значения.</p>
   1401 
   1402 <p>Обычно эти люди применяют этот аргумент, чтобы требовать права
   1403 контролировать даже то, как люди могут изменять программу. Они говорят:
   1404 &ldquo;Никто не должен быть в состоянии превратить моё произведение
   1405 искусства в мешанину&rdquo;. Ну, представьте, что у лица, которое изобрело
   1406 блюдо, которое вы планируете приготовить, было бы право контролировать то,
   1407 как вы можете его готовить, потому что это его произведение искусства. Вы
   1408 хотите изъять соль, но он говорит: &ldquo;Ну, нет. Я составил это блюдо, и в
   1409 нём должно быть ровно столько соли!&rdquo; &ldquo;Но врач говорит, что соль
   1410 для меня небезопасна. Что мне делать?&rdquo;.</p>
   1411 
   1412 <p>Очевидно, тот, кто пользуется программой, гораздо ближе к этому
   1413 случаю. Применение программы касается его очень непосредственно, в то время
   1414 как оно имеет только что-то вроде отвлечённого отношения к тому, кто написал
   1415 программу. И следовательно, если мы хотим дать людям наибольший возможный
   1416 контроль над их собственной жизнью, то принимать решения об этих вещах
   1417 должен именно пользователь.</p>
   1418 
   1419 <p>Второй ряд их аргументов&nbsp;&mdash; экономический. Они говорят: &ldquo;Как
   1420 люди будут получать плату за программирование?&rdquo;, и в этом есть зерно
   1421 реальной проблемы. Но многое из того, что они говорят,&mdash;
   1422 заблуждение. Оно состоит в том, что не одно и то же&nbsp;&mdash; говорить:
   1423 &ldquo;если мы хотим, чтобы было много людей, пишущих программы, мы должны
   1424 обеспечить, чтобы им не приходилось зарабатывать на жизнь другим
   1425 путём&rdquo;, с одной стороны, и &ldquo;нам нужна существующая система,
   1426 ремесло программиста должно приносить богатство&rdquo;, с другой
   1427 стороны. Есть большая разница между обеспечением просто прожиточного
   1428 минимума и созданием класса денежных программистов, по крайней мере, как это
   1429 делается сейчас в Штатах. Они всегда говорят: &ldquo;Что я буду
   1430 есть?&rdquo;, но вопрос на самом деле не &ldquo;что он будет есть?&rdquo;, а
   1431 &ldquo;как он заработает на суши?&rdquo;. &ldquo;Будет ли у меня крыша над
   1432 головой?&rdquo;, но в действительности подразумевается &ldquo;как ему купить
   1433 отдельную квартиру?&rdquo;</p>
   1434 
   1435 <p>Существующая система была выбрана людьми, которые вкладывают капитал в
   1436 разработку программ, потому что это даёт им возможность получать наибольшие
   1437 деньги, а не потому, что это единственный способ найти деньги для поддержки
   1438 усилий по разработке системы. Фактически даже не далее, как десять или
   1439 пятнадцать лет назад, было обычным поддерживать разработку программ другими
   1440 способами. Например, те операционные системы Digital, которые были свободны,
   1441 даже в начале семидесятых, разрабатывались людьми, которым платили за
   1442 работу. Много полезных программ было разработано в университетах. Сейчас те
   1443 программы зачастую продаются, но пятнадцать лет назад они были обычно
   1444 свободны, и всё же людям платили за их работу.</p>
   1445 
   1446 <p>Когда у вас есть что-нибудь подобное программе, как бесконечный бутерброд,
   1447 как дорога, которую нужно проложить один раз, но как только она проложена,
   1448 совсем не важно, сколько вы будете ездить по ней, нет никаких затрат на её
   1449 использование, вообще говоря, лучше, если мы не берём плату за пользование
   1450 ей. И есть множество того, что мы сейчас развиваем и платим людям за
   1451 строительство. Например, все эти улицы в городе. Очень легко найти людей,
   1452 которые будут программировать бесплатно; на самом деле невозможно найти
   1453 людей, которые будут строить улицы бесплатно. Строить улицы&nbsp;&mdash; это
   1454 не такое творческое и интересное занятие, как программирование. Но у нас
   1455 много улиц, мы находим деньги, чтобы оплатить это, и способ, которым мы это
   1456 делаем, гораздо лучше, чем если бы мы сказали: &ldquo;Пусть компании строят
   1457 улицы и расставят киоски, и тогда каждый раз, когда сворачиваешь за угол, ты
   1458 будешь платить таксу. И тогда компании, которые выберут хорошие места для
   1459 улиц,&mdash; те будут рентабельны, а другие обанкротятся&rdquo;.</p>
   1460 
   1461 <p>Есть одна забавная вещь, которая происходит, когда кто-то начинает делать
   1462 много денег огораживанием чего-нибудь. До этого, бывает, находятся многие и
   1463 многие люди, которые с неподдельным энтузиазмом и рвением желают работать в
   1464 этой отрасли, единственный вопрос&nbsp;&mdash; как им получить хоть какие-то
   1465 средства для жизни. Если взять, например, математиков, есть куда как больше
   1466 людей, которые хотят заниматься чистой математикой, чем фондов на то, чтобы
   1467 кто-то был чистым математиком. И даже когда вы получаете фонды, вы не
   1468 получаете очень много, они не живут богато. А для музыкантов это ещё хуже. Я
   1469 видел статистику того, сколько получает средний музыкант, средний человек,
   1470 посвящающий большую часть своего времени тому, чтобы пытаться быть
   1471 музыкантом, в Массачусетсе; это было что-то вроде половины медианного дохода
   1472 или меньше. Этого едва хватает на то, чтобы жить, это трудно. Но есть много
   1473 таких, кто пытается делать это. А потом, когда становится вообще возможно
   1474 получать очень высокую плату за то, чтобы делать что-нибудь, все те люди
   1475 исчезают, и начинают говорить: &ldquo;никто не будет этим заниматься, если
   1476 им не будут хорошо платить за это&rdquo;.</p>
   1477 
   1478 <p>И я видел, как это произошло в отрасли программирования. Те самые люди,
   1479 которые работали себе в Лаборатории ИИ, получали очень мало и любили свою
   1480 работу, теперь не помышляли о том, чтобы работать меньше, чем за пятьдесят
   1481 тысяч долларов в год. Что произошло? Когда вы ставите людей перед
   1482 возможностью получать много денег, когда они видят, что другие за подобную
   1483 работу получают столько денег, они чувствуют, что должны получать то же
   1484 самое, и таким образом никто не хочет продолжать по-старому. И очень просто
   1485 после того, как это произошло, думать, что платить людям много
   1486 денег&nbsp;&mdash; единственный из возможных способов, но это не так. Если
   1487 бы не было возможности делать много денег, у нас были бы люди, которые были
   1488 бы согласны делать это за небольшие деньги, особенно когда это что-нибудь
   1489 творческое и интересное.</p>
   1490 
   1491 <p>Вот. Я понимал, что уникальный мир Лаборатории ИИ разрушен, я понимал, что
   1492 торговля программами была органической частью того, что разрушило его, и я
   1493 также понимал, как я объяснил раньше, насколько необходимы свободные
   1494 программы для того, чтобы существовало подобное общество. Но потом, подумав
   1495 об этом ещё, я осознал все эти аспекты, в которых запирание программ вредит
   1496 всему обществу, в особенности вынуждая людей продавать своих соседей и
   1497 вызывая упадок общества. Тот самый дух, который ведёт к тому, что люди
   1498 смотрят, как кого-нибудь убивают на улице, и никому не говорят. Дух,
   1499 постоянные проявления которого мы встречаем в таком большом числе компаний
   1500 вокруг нас. И для меня было ясно, что у меня был выбор, я мог стать частью
   1501 того мира и чувствовать себя несчастным оттого, что я делаю со своей жизнью,
   1502 или решить бороться с этим. Итак, я решил бороться с этим. Я посвятил свою
   1503 карьеру попытке воссоздать общество обмена программами, попытке положить
   1504 конец явлению запирания общеполезной информации. И система GNU&nbsp;&mdash;
   1505 средство для достижения этой цели. Это техническое средство для достижения
   1506 общественной цели. С помощью системы GNU я надеюсь сделать прививку
   1507 пользователям против угрозы программозапирателей.</p>
   1508 
   1509 <p>В настоящее время запиратели по существу заявляют о своей власти делать
   1510 компьютер человека бесполезным. Когда-то в США были люди, наиболее
   1511 распространено это было около пятидесяти лет назад, они были в мафии, они
   1512 приходили в магазины и бары, особенно в бары, когда бары были запрещены,
   1513 конечно. Они приходили и говорили: &ldquo;Много мест в округе недавно
   1514 сгорело. Вы ведь не хотите сгореть, не так ли? Ладно, мы защитим вас от
   1515 пожаров, вам только придётся платить тысячу долларов в месяц, и мы
   1516 гарантируем, что здесь пожара не будет&rdquo;. И это называлось
   1517 &ldquo;протекционный шантаж&rdquo;. А сейчас у нас ситуация, когда человек
   1518 говорит: &ldquo;У вас есть замечательный компьютер, и у вас есть программы,
   1519 которыми вы пользуетесь. Ну так вот, если вы не хотите, чтобы эти программы
   1520 исчезли, если вы не хотите, чтобы за вами пришла полиция, лучше заплатите
   1521 мне тысячу долларов, и я дам вам копию этой программы с лицензией&rdquo;, и
   1522 это называется &ldquo;программный протекционный шантаж&rdquo;.</p>
   1523 
   1524 <p>На самом деле всё, что они делают&nbsp;&mdash; это вмешиваются в дела всех
   1525 других людей, которые делают то, что нужно, но они убеждают, как самих себя,
   1526 так и нас, остальных, что они выполняют полезную функцию. Ну, на что я
   1527 надеюсь&nbsp;&mdash; это что когда тот парень из программной мафии придёт и
   1528 скажет: &ldquo;Ты хочешь, чтобы эти программы исчезли из твоего
   1529 компьютера?&rdquo;, пользователь сможет сказать: &ldquo;Я больше тебя не
   1530 боюсь. У меня есть вот эта свободная система GNU, и теперь ты ничего не
   1531 можешь мне сделать&rdquo;.</p>
   1532 
   1533 <p>Вот. Одно из оправданий, которые люди иногда предлагают для владения
   1534 программами,&mdash; это идея дать людям стимул к производству.  Вообще я
   1535 поддерживаю идею частного предпринимательства, так же как идею надежды
   1536 заработать деньги производством того, чем другие люди хотели бы
   1537 воспользоваться, но с этим в отрасли программирования сейчас полный
   1538 бардак. Производство несвободной программы&nbsp;&mdash; не такой же вклад в
   1539 общество, как производство той же самой программы с тем, чтобы она была
   1540 свободной. Потому что написание программы&nbsp;&mdash; только потенциальный
   1541 вклад в общество. Настоящий вклад в богатство общества происходит, только
   1542 когда программой пользуются. А если вы предотвращаете применение программы,
   1543 вклада в действительности не происходит. Итак, вклад, в котором нуждается
   1544 общество,&mdash; не эти несвободные программы, для производства которых у
   1545 каждого есть такой стимул; вклад, который нам на самом деле нужен,&mdash;
   1546 это свободные программы, так что в обществе бардак из-за того, что оно
   1547 создаёт для людей стимул делать то, что не очень полезно, и не создаёт
   1548 стимула делать то, что полезно. Таким образом, основная идея частного
   1549 предпринимательства не реализуется, и можно даже сказать, что общество
   1550 невротично. В конце концов, когда индивидуум поощряет в других поведение,
   1551 которое плохо для этого индивидуума, мы называем это неврозом. А
   1552 тут&nbsp;&mdash; общество ведёт себя таким манером, поощряя программистов
   1553 делать то, что плохо для общества.</p>
   1554 
   1555 <p>Я&nbsp;&mdash; не такой, как все. Мне лучше думать, что я хороший член
   1556 общества и что я вношу какой-то вклад, чем чувствовать, что я успешно
   1557 паразитирую на обществе, и вот поэтому я решил сделать то, что я сделал. Но
   1558 каждого хотя бы немного беспокоит чувство, что им платят за то, что на самом
   1559 деле не полезно. Так что давайте прекратим защищать эту идею стимулирования
   1560 дурного и давайте хотя бы попытаемся найти средства поощрять людей делать
   1561 правильное, то есть делать свободные программы.</p>
   1562 
   1563 <p>Благодарю за внимание.</p>
   1564 
   1565 <p><strong> [После этого RMS отвечал на вопросы около часа. Я включил только
   1566 очень немногие из вопросов и ответов в эту версию. Запись была плохой, у
   1567 меня не было времени проработать, как следует, всю ленту] </strong></p>
   1568 
   1569 <dl>
   1570 <dt><b>В:</b> Кто-нибудь пытался создавать вам проблемы?</dt>
   1571 
   1572 <dd><p><b>О:</b> Единственный раз, когда кто-то пытался мне создать проблему, это
   1573 были те собственники, так называемые, самозваные собственники Emacs
   1574 Гослинга. Кроме этого, у них нет оснований для того, чтобы делать это, так
   1575 что они могут не так уж много. Между прочим, мне бы хотелось привлечь
   1576 внимание всех к тому, как люди применяют язык для того, чтобы попытаться
   1577 поощрять людей думать определённым образом и не думать по-другому. Многое из
   1578 современной терминологии в этой отрасли было выбрано самозваными
   1579 собственниками программ, чтобы попытаться поощрить вас, попытаться заставить
   1580 вас смотреть на программы по образу и подобию материальных объектов, которые
   1581 являются собственностью, и не замечать различий. Самый вопиющий пример
   1582 этого&nbsp;&mdash; термин &ldquo;пират&rdquo;. Пожалуйста, отказывайтесь
   1583 применять термин &ldquo;пират&rdquo; для описания тех, кто желает
   1584 обмениваться программами со своим соседом, как добрый гражданин.</p>
   1585 
   1586 <p>Я забыл вам сказать вот что: концепция авторских прав была разработана для
   1587 печатной продукции. В древние времена авторы свободно копировали друг друга,
   1588 и это не считалось дурным, и это даже было очень полезно: единственное,
   1589 почему работы определённых авторов дошли до нас,&mdash; это потому, что
   1590 некоторых из них щедро цитировали в других работах, которые сохранились.</p>
   1591 
   1592 <p>Так было потому, что книги копировались по одной штуке за раз. Было
   1593 вдесятеро труднее сделать десять копий, чем одну. Потом был изобретён
   1594 печатный станок, и это не помешало людям переписывать книги от руки, но по
   1595 сравнению с печатью копирование вручную было так неприятно, что это с таким
   1596 же успехом могло бы быть невозможным.</p>
   1597 
   1598 <p>Когда книги можно было делать только массовым производством, тогда авторские
   1599 права начали приобретать смысл, а кроме того, это не отнимало у читающей
   1600 общественности свободу. Как член общества, у которого не было печатного
   1601 пресса, вы всё равно не могли скопировать книгу. Так что вы не теряли
   1602 никакой свободы просто из-за того, что были авторские права. Таким образом,
   1603 авторское право было изобретено и приобрело нравственный смысл из-за
   1604 технического сдвига. Сейчас происходит обратный сдвиг. Индивидуальное
   1605 копирование информации всё улучшается и улучшается, и мы видим, что предел
   1606 прогресса техники&nbsp;&mdash; возможность копирования любого рода
   1607 информации. <span>[перерыв из-за переворота ленты]</span></p>
   1608 
   1609 <p>Итак, мы снова в том же положении, как в древнем мире, где в авторских
   1610 правах не было смысла.</p>
   1611 
   1612 <p>Если мы рассмотрим нашу концепцию собственности, они исходят от материальных
   1613 объектов. Материальные объекты удовлетворяют закону сохранения, очень
   1614 хорошо. Да, верно, я могу сломать мел напополам, но это&nbsp;&mdash; не то,
   1615 и он изнашивается, он расходуется. Но в основном это&nbsp;&mdash; один стул
   1616 [указывая на стул]. Я не могу просто типа щёлкнуть пальцами и получить два
   1617 стула. Единственный способ получить другой&nbsp;&mdash; сделать его так же,
   1618 как был сделан первый. Это требует дополнительного сырья, это требует
   1619 дополнительной работы по производству, и наша концепция собственности
   1620 развивалась, чтобы привести нравственные понятия в соответствие с этими
   1621 фактами.</p>
   1622 
   1623 <p>Для информации, которую каждый может копировать, верно другое. И,
   1624 следовательно, нравственные понятия, которые подходят к этому,&mdash;
   1625 другие. Наши нравственные понятия рождаются из размышлений о том, насколько
   1626 определённое дело поможет людям и насколько оно навредит людям. Если объект
   1627 материален, вы можете придти и забрать этот стул, но вы не можете придти и
   1628 скопировать его. А если вы заберёте стул, это ничего не будет производить,
   1629 поэтому оправданий нет. Если кто-то говорит: &ldquo;Я выполнил работу, чтобы
   1630 сделать этот стул, и этот стул может быть только у одного человека, почему
   1631 бы ему не быть у меня&rdquo;, почему бы и нам не сказать: &ldquo;Ну да, это
   1632 разумно&rdquo;. Когда человек говорит: &ldquo;Я вырезал биты на этом диске,
   1633 только у одного человека может быть этот диск, так что не смейте забирать
   1634 его у меня&rdquo;, ладно, в этом тоже есть смысл. Если только у одного
   1635 человека будет этот диск, почему бы ему не быть у парня, который владеет
   1636 этим диском.</p>
   1637 
   1638 <p>Но когда кто-то другой приходит и говорит: &ldquo;Я не собираюсь ломать твой
   1639 диск, я просто хочу по волшебству сделать другой точно такой же, как этот, а
   1640 потом я заберу его, а ты можешь продолжать пользоваться этим диском точно
   1641 так же, как раньше&rdquo;, ну, это то же самое, как если бы кто-нибудь
   1642 сказал: &ldquo;У меня есть волшебный копировщик стульев. Ты можешь
   1643 по-прежнему наслаждаться своим стулом, сидеть на нём, ставить его туда, куда
   1644 угодно, но у меня тоже будет стул&rdquo;. Это&nbsp;&mdash; хорошо.</p>
   1645 
   1646 <p>Если людям не нужно столярничать, они могут просто щёлкнуть пальцами и
   1647 раздвоить их,&mdash; это чудесно. Но этот сдвиг в технике не устраивает
   1648 людей, которые хотят быть в состоянии владеть отдельными копиями и получать
   1649 деньги за отдельные копии. Эта идея применима только к косной материи. Так
   1650 что они делают всё возможное, чтобы представить программы как материальные
   1651 объекты. Вы когда-нибудь задумывались, почему, когда вы приходите в магазин
   1652 программ и покупаете копию программы, она бывает упакована во что-то, что
   1653 выглядит, как книга? Они хотят, чтобы люди думали, будто они получают
   1654 материальный объект, и не осознавали, что они на самом деле получили в форме
   1655 цифровых данных, которые можно копировать.</p>
   1656 
   1657 <p>К конце концов, что такое компьютер, если не универсальная машина? Вы,
   1658 наверное, изучали универсальные машины Тьюринга, машины, которые могут
   1659 имитировать любую другую машину. Причина, по которой универсальная машина
   1660 так хороша&nbsp;&mdash; то, что вы можете заставить её имитировать любую
   1661 другую машину, а инструкции можно копировать и менять,&mdash; именно то, что
   1662 нельзя делать с материальным объектом. И это&nbsp;&mdash; именно то, что
   1663 программозапиратели хотят отнять у общественности. Они хотят получить выгоду
   1664 от технического сдвига к универсальным машинам, но они не хотят, чтобы эту
   1665 выгоду получила общественность.</p>
   1666 
   1667 <p>По существу они пытаются сохранить &ldquo;век материальных объектов&rdquo;,
   1668 но он прошёл, и мы должны привести свои идеи о добре и зле в соответствие с
   1669 действительными фактами мира, в котором мы живём.</p>
   1670 </dd>
   1671 
   1672 <dt><b>В:</b> Так что это сводится к владению информацией. Как вы думаете, есть
   1673 ли примеры, когда, по вашему мнению, нет ничего дурного в том, чтобы владеть
   1674 информацией?</dt>
   1675 
   1676 <dd><p><b>О:</b> Для сведений, которые не общеполезны или несут персональный
   1677 характер, я бы сказал, что это допустимо. Другими словами, не сведения о
   1678 том, как делать что-нибудь, а о том, что вы намереваетесь делать. Сведения,
   1679 единственная ценность которых спекулятивна, то есть они могут получить от
   1680 вас какие-то деньги, но не могут создать что-нибудь с их помощью. Есть все
   1681 основания, я бы сказал, хранить эти сведения в секрете и под контролем.</p>
   1682 
   1683 <p>Но когда речь идёт о творческой информации, информации, от которой люди
   1684 могут получить пользу или удовольствие и которой будет пользоваться и
   1685 наслаждаться всё больше и больше людей, у которых она будет, мы всегда
   1686 должны поощрять копирование.</p>
   1687 </dd>
   1688 </dl>
   1689 </div>
   1690 
   1691 <div class="translators-notes">
   1692 
   1693 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->
   1694 <h3>Примечания переводчиков</h3> <ol><li id="ft1">название &ldquo;free
   1695 university compiler kit&rdquo; может означать также &ldquo;свободный
   1696 университетский набор для компиляторов&rdquo;</li></ol></div>
   1697 </div>
   1698 
   1699 <!-- for id="content", starts in the include above -->
   1700 <!--#include virtual="/server/footer.ru.html" -->
   1701 <div id="footer" role="contentinfo">
   1702 <div class="unprintable">
   1703 
   1704 <p>Пожалуйста, присылайте общие запросы фонду и GNU по адресу <a
   1705 href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>. Есть также <a
   1706 href="/contact/">другие способы связаться</a> с фондом. Отчеты о
   1707 неработающих ссылках и другие поправки или предложения можно присылать по
   1708 адресу <a href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>
   1709 
   1710 <p>
   1711 <!-- TRANSLATORS: Ignore the original text in this paragraph,
   1712         replace it with the translation of these two:
   1713 
   1714         We work hard and do our best to provide accurate, good quality
   1715         translations.  However, we are not exempt from imperfection.
   1716         Please send your comments and general suggestions in this regard
   1717         to <a href="mailto:web-translators@gnu.org">
   1718 
   1719         &lt;web-translators@gnu.org&gt;</a>.</p>
   1720 
   1721         <p>For information on coordinating and contributing translations of
   1722         our web pages, see <a
   1723         href="/server/standards/README.translations.html">Translations
   1724         README</a>. -->
   1725 Мы старались сделать этот перевод точным и качественным, но исключить
   1726 возможность ошибки мы не можем. Присылайте, пожалуйста, свои замечания и
   1727 предложения по переводу по адресу <a
   1728 href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>.
   1729 </p><p>Сведения по координации и предложениям переводов наших статей см. в
   1730 <a href="/server/standards/README.translations.html">&ldquo;Руководстве по
   1731 переводам&rdquo;</a>.</p>
   1732 </div>
   1733 
   1734 <!-- Regarding copyright, in general, standalone pages (as opposed to
   1735      files generated as part of manuals) on the GNU web server should
   1736      be under CC BY-ND 4.0.  Please do NOT change or remove this
   1737      without talking with the webmasters or licensing team first.
   1738      Please make sure the copyright date is consistent with the
   1739      document.  For web pages, it is ok to list just the latest year the
   1740      document was modified, or published.
   1741      
   1742      If you wish to list earlier years, that is ok too.
   1743      Either "2001, 2002, 2003" or "2001-2003" are ok for specifying
   1744      years, as long as each year in the range is in fact a copyrightable
   1745      year, i.e., a year in which the document was published (including
   1746      being publicly visible on the web or in a revision control system).
   1747      
   1748      There is more detail about copyright years in the GNU Maintainers
   1749      Information document, www.gnu.org/prep/maintain. -->
   1750 <p>
   1751 Copyright &copy; 1987, 2022 Richard Stallman and Bjrn Remseth <br
   1752 />Copyright &copy; 2009, 2022 Free Software Foundation, Inc. (translation)
   1753 </p>
   1754 <p>
   1755 Permission is granted to make and distribute verbatim copies of this
   1756 transcript as long as the copyright and this permission notice
   1757 appear. </p><p> (Разрешается делать и распространять буквальные копии этой
   1758 записи при условии, что присутствуют примечание об авторских правах и это
   1759 разрешение)
   1760 </p>
   1761 
   1762 <!--#include virtual="/server/bottom-notes.ru.html" -->
   1763 <div class="translators-credits">
   1764 
   1765 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
   1766  </div>
   1767 
   1768 <p class="unprintable"><!-- timestamp start -->
   1769 Обновлено:
   1770 
   1771 $Date: 2022/06/17 02:00:07 $
   1772 
   1773 <!-- timestamp end -->
   1774 </p>
   1775 </div>
   1776 </div>
   1777 <!-- for class="inner", starts in the banner include -->
   1778 </body>
   1779 </html>