stallman-kth.html - en to ru translation catalogue (166 entries)

note: type: Content of: <title>
en: RMS lecture at KTH (Sweden), 1986 - GNU Project - Free Software Foundation
ru: Лекция RMS в КТИ в Швеции - Проект GNU - Фонд свободного программного обеспечения

note: type: Content of: <div><h2>
en: RMS lecture at KTH (Sweden), 1986
ru: Лекция RMS в КТИ (Швеция), 1986&nbsp;год

note: type: Content of: <div><div><p>
en: Transcript of Richard Stallman's speech at the <i>Kungliga Tekniska H&ouml;gskolan</i> (Royal Institute of Technology) in Stockholm, Sweden, arranged by the student society <i>Datorf&ouml;reningen Stacken</i> on 30&nbsp;October&nbsp;1986.
ru: Запись выступления Ричарда Столмена в <i lang="sv" xml:lang="sv">Kungliga Tekniska H&ouml;gskolan</i> (Королевском техническом институте) в Стокгольме (Швеция), организованного студенческим общестом <i lang="sv" xml:lang="sv">Datorf&ouml;reningen Stacken</i> 30&nbsp; октября 1986&nbsp;года.

note: type: Content of: <div><div><p>
en: <i>Note: This is a slightly edited transcript of the talk.  As such it contains false starts, as well as locutions that are natural in spoken English but look strange in print.  It is not clear how to correct them to written English style without doing violence to the original speech.</i>
ru: <i>Примечание. Это слегка отредактированный конспект рассказа. Как таковой, он содержит и ложные вступления, и обороты, которые естественны в разговорном английском, но на бумаге выглядят странно. Неясно, как выправить их в духе литературного английского языка без &lsquo;насилия над исходной речью&rsquo;.</i>

note: type: Content of: <div><p>
en: <b>Rms:</b> It seems that there are three things that people would like me to talk about.  On the one hand I thought that the best thing to talk about here for a club of hackers, was what it was like at the <abbr title="Massachusetts Institute of Technology">MIT</abbr> in the old days.  What made the Artificial Intelligence Lab such a special place.  But people tell me also that since these are totally different people from the ones who were at the conference Monday and Tuesday that I ought to talk about what's going on in the GNU Project and that I should talk about why software and information can not be owned, which means three talks in all, and since two of those subjects each took an hour it means we're in for a rather long time.  So I had the idea that perhaps I could split it in to three parts, and people could go outside for the parts they are not interested in, and that then when I come to the end of a part I can say it's the end and people can go out and I can send Jan Rynning out to bring in the other people.
ru: <b>Rms</b>. Кажется, что есть три вещи, о которых люди хотели бы от меня услышать. С одной стороны, я подумал, что лучшее, о чём можно рассказать здесь клубу хакеров,&mdash; это на что был похож MIT (Массачусетский технический институт) в прежние времена. Что делало Лабораторию искусственного интеллекта таким особенным местом. Но мне говорят ещё, что поскольку здесь совсем не те люди, которые были на конференции в понедельник и во вторник, что я должен рассказать о том, что происходит в проекте GNU, и что мне следует рассказать о том, почему программы и информация не могут принадлежать кому бы то ни было, это значит&nbsp;&mdash; всего три рассказа, а поскольку два из этих предметов заняли по часу каждый, значит, мы тут будем довольно долго. Так что у меня была мысль, что, наверно, я мог бы разбить это на три части, и люди могли бы выйти на тех частях, которые им неинтересны, и что тогда, когда я подойду к концу части, я могу сказать, что это конец, и люди могут выйти, а я могу послать Яна Рюнинга привести других людей.

note: type: Content of: <div><p>
en: <span>[Someone else says: &ldquo;<i>Janne, han trenger ingen mike.</i>&rdquo; (Translation: &ldquo;Janne, he doesn't need a mike.&rdquo;)]</span>
ru: <span>[Кто-то говорит: &ldquo;<i lang="sv" xml:lang="sv">Janne, han trenger ingen mike</i>&rdquo; (перевод: &ldquo;Янне, ему не надо микрофона.&rdquo;).]</span>

note: type: Content of: <div><p>
en: Jan, are you prepared to go running out to fetch the other people?
ru: Ян, вы готовы выбегать и приводить других людей?

note: type: Content of: <div><p>
en: <b>Jmr:</b> I am looking for a microphone, and someone tells me it is inside this locked box.
ru: <b>Jmr</b>. Я ищу микрофон, и что-то подсказывает мне, что он&nbsp;&mdash; внутри этого запертого шкафа.

note: type: Content of: <div><p>
en: <b>Rms:</b> Now in the old days at the AI lab we would have taken a sledgehammer and cracked it open, and the broken door would be a lesson to whoever had dared to lock up something that people needed to use.  Luckily however I used to study Bulgarian singing, so I have no trouble managing without a microphone.
ru: <b>Rms</b>. Ну, в прежние времена в Лаборатории ИИ мы взяли бы кувалду и взломали его, и сломанная дверца была бы уроком всякому, кто посмел бы закрыть что-нибудь, в чём люди нуждаются. Но я, к счастью, практиковался в болгарском пении, так что я могу легко обойтись без микрофона.

note: type: Content of: <div><p>
en: Anyway, should I set up this system to notify you about the parts of the talk, or do you just like to sit through all of it? <span>[Answer: Yeaaah]</span>
ru: А всё-таки, установить ли мне эту систему, чтобы оповещать вас о частях рассказа, или вы просто хотите отсидеть все три части? <span>[Ответ: Да-а]</span>

note: type: Content of: <div><p>
en: When I started programming, it was 1969, and I did it in an IBM laboratory in New York.  After that I went to a school with a computer science department that was probably like most of them.  There were some professors that were in charge of what was supposed to be done, and there were people who decided who could use what.  There was a shortage of terminals for most people, but a lot of the professors had terminals of their own in their offices, which was wasteful, but typical of their attitude. When I visited the Artificial Intelligence lab at MIT I found a spirit that was refreshingly different from that.  For example: there, the terminals were thought of as belonging to everyone, and professors locked them up in their offices on pain of finding their doors broken down.  I was actually shown a cart with a big block of iron on it, that had been used to break down the door of one professors office, when he had the gall to lock up a terminal.  There were very few terminals in those days, there was probably something like five display terminals for the system, so if one of them was locked up, it was a considerable disaster.
ru: Когда я начал программировать, это было в 1969&nbsp;году в лаборатории IBM в Нью-Йорке. После этого я пошёл в училище с отделением информатики, наверное, таким же, как большинство из них. Там было несколько профессоров, которые отвечали за то, что предполагалось делать, и были люди, которые решали, кто чем может пользоваться. Большинство ощущало недостаток в терминалах, но у многих профессоров были собственные терминалы в кабинетах, это было расточительно, но типично для них. Когда я посетил Лабораторию искусственного интеллекта в MIT, я обнаружил там более свежую атмосферу. Например, там терминалы считались общими, и профессора, запирая двери в свои кабинеты, рисковали найти свои двери взломанными. Мне даже показывали тележку с большим куском железа, которую употребили для взлома двери кабинета одного профессора, когда тот имел наглость запереть терминал. В те дни было очень мало терминалов, было, наверное, что-то вроде пяти терминалов в системе, так что если один из них был заперт, это было настоящим бедствием.

note: type: Content of: <div><p>
en: In the years that followed I was inspired by that ideas, and many times I would climb over ceilings or underneath floors to unlock rooms that had machines in them that people needed to use, and I would usually leave behind a note explaining to the people that they shouldn't be so selfish as to lock the door.  The people who locked the door were basically considering only themselves.  They had a reason of course, there was something they thought might get stolen and they wanted to lock it up, but they didn't care about the other people they were affecting by locking up other things in the same room.  Almost every time this happened, once I brought it to their attention, that it was not up to them alone whether that room should be locked, they were able to find a compromise solution: some other place to put the things they were worried about, a desk they could lock, another little room.  But the point is that people usually don't bother to think about that.  They have the idea: &ldquo;This room is Mine, I can lock it, to hell with everyone else,&rdquo; and that is exactly the spirit that we must teach them not to have.
ru: В последующие годы я был вдохновлён этими идеями, и много раз я карабкался за потолки или под полы, чтобы открыть комнаты, где были машины, которые нужны были людям для дела, и я обычно оставлял за собой записку, объяснявшую людям, что они не должны быть настолько эгоистичны, чтобы запирать дверь. Те, кто запирал дверь, в основном думали только о себе. У них, конечно, были причины, там было что-нибудь, что, как они думали, могло быть украдено, и они хотели запереть это, но они не заботились о других людях, которым были нужны другие вещи, запертые в той же комнате. Почти всякий раз, когда это происходило, как только я обращал их внимание, что то, должна ли быть заперта комната, касается не только их, они обычно были в состоянии найти компромиссное решение: какое-нибудь другое место, чтобы сложить вещи, о которых они беспокоились&nbsp;&mdash; стол, который они могли запереть, или другую каморку. Но дело в том, что люди обычно не утруждают себя размышлениями об этом. Они думают: &ldquo;Эта комната&nbsp;&mdash; Моя, я могу запереть её, и наплевать на всех остальных&rdquo;, а это именно то отношение, от которого мы должны их отучить.

note: type: Content of: <div><p>
en: But this spirit of unlocking doors wasn't an isolated thing, it was part of an entire way of life.  The hackers at the AI lab were really enthusiastic about writing good programs, and interesting programs.  And it was because they were so eager to get more work done, that they wouldn't put up with having the terminals locked up, or lots of other things that people could do to obstruct useful work.  The differences between people with high morale who really care about what they're trying to do, and people who think of it as just a job.  If it's just a job, who cares if the people who hired you are so stupid they make you sit and wait, it's their time, their money but not much gets done in a place like that, and it's no fun to be in a place like that.
ru: Но этот дух отпирания дверей не был чем-то изолированным, это была часть целого образа жизни. Хакеры в лаборатории были настоящими энтузиастами в написании хороших программ, интересных программ. И как раз потому, что они с таким нетерпением хотели сделать больше, они не выносили запертых терминалов и многого другого, чем люди могут помешать полезной работе. Есть разница между высоконравственными людьми, действительно переживающими за то, что они делают, и людьми, думающими об этом просто как о заработке. Если это просто заработок, кому какое дело, что люди, нанявшие тебя, настолько глупы, что заставляют тебя сидеть и ждать, это их время, их деньги, но в таком месте выполняется не много работы, и в том, чтобы быть на таком месте, нет ничего интересного.

note: type: Content of: <div><p>
en: Another thing that we didn't have at the AI lab was file protection.  There was no security at all on the computer.  And we very consciously wanted it that way.  The hackers who wrote the Incompatible Timesharing System decided that file protection was usually used by a self-styled system manager to get power over everyone else.  They didn't want anyone to be able to get power over them that way, so they didn't implement that kind of a feature.  The result was, that whenever something in the system was broken, you could always fix it.  You never had to sit there in frustration because there was NO WAY, because you knew exactly what's wrong, and somebody had decided they didn't trust you to do it.  You don't have to give up and go home, waiting for someone to come in in the morning and fix the system when you know ten times as well as he does what needs to be done.
ru: Другое, чего у нас в лаборатории не было,&mdash; это защита файлов. На компьютере не было никакой безопасности. И мы совершенно сознательно шли на это. Хакеры, писавшие Несовместимую Систему Разделения Времени (ITS), решили, что защита файлов обычно применялась самозваным системным администратором, чтобы получить власть надо всеми остальными. Они не желали, чтобы кто-то был способен таким образом взять власть над ними, поэтому они не реализовали такого рода особенность. В результате когда бы в системе что-нибудь ни сломалось, ты всегда мог это наладить. Тебе никогда не надо было сидеть с чувством безысходности из-за того, что нельзя НИКАК, потому что ты знал точно, что было не так, а кто-то решил, что они не доверяют тебе этого. Тебе не приходится бросать всё и ехать домой в ожидании, пока кто-нибудь придёт утром и наладит систему, когда ты в десять раз лучше его знаешь, что нужно сделать.

note: type: Content of: <div><p>
en: And we didn't let any professors or bosses decide what work was going to be done either, because our job was to improve the system! We talked to the users of course; if you don't do that you can't tell what's needed.  But after doing that, we were the ones best able to see what kind of improvements were feasible, and we were always talking to each other about how we'd like to see the system changed, and what sort of neat ideas we'd seen in other systems and might be able to use.  So the result is that we had a smoothly functioning anarchy, and after my experience there, I'm convinced that that is the best way for people to live.
ru: И точно так же мы не давали профессорам и начальству решать, какую работу делать в первую очередь, потому что наше дело было улучшать систему! Мы, конечно, говорили с пользователями; если этого не делаешь, ты не можешь знать, что нужно. Но после этого мы были теми, кто лучше всех мог понять, какого рода улучшения были реальны, и мы всегда обсуждали друг с другом, какие изменения в системе мы хотели бы увидеть и какие грамотные идеи мы видели в других системах и могли бы быть в состоянии применить. Итак, в результате у нас была размеренно функционирующая анархия, и по моему опыту там я убеждён, что это лучший образ жизни для людей.

note: type: Content of: <div><p>
en: Unfortunately the AI lab in that form was destroyed.  For many years we were afraid the AI lab would be destroyed by another lab at MIT, the Lab for Computer Science, whose director was a sort of empire builder type, doing everything he could to get himself promoted within MIT, and make his organization bigger, and he kept trying to cause the AI lab to be made a part of his lab, and nobody wanted to do things his way because he believed that people should obey orders and things like that.
ru: К несчастью, Лаборатория ИИ в таком виде была разрушена. Много лет мы опасались, что Лаборатория ИИ будет разрушена другой лабораторией MIT, лабораторией информатики, директор которой был из разряда строителей империй, он делал всё, что мог, чтобы выдвинуться внутри MIT, сделать свою организацию больше, и он постоянно пытался сделать так, чтобы Лаборатория ИИ стала частью его лаборатории, и никто не хотел плясать под его дудку, потому что он считал, что люди должны подчиняться приказам и тому подобному.

note: type: Content of: <div><p>
en: But that danger we managed to defend against, only to be destroyed by something we had never anticipated, and that was commercialism.  Around the early 80's the hackers suddenly found that there was now commercial interest in what they were doing.  It was possible to get rich by working at a private company.  All that was necessary was to stop sharing their work with the rest of the world and destroy the MIT-AI lab, and this is what they did despite all the efforts I could make to prevent them.
ru: Но от этой опасности мы сумели защититься, только для того, чтобы быть разрушенными тем, чего мы никогда не предчувствовали, и это была коммерциализация. Примерно в начале восьмидесятых хакеры внезапно обнаружили, что теперь есть коммерческий интерес в том, что они делают. Можно было стать богатым, работая в частной компании. Всё, что было нужно&nbsp;&mdash; это прекратить делиться своим трудом с остальным миром и разрушить Лабораторию ИИ MIT, и они так и сделали, несмотря на все мои старания им помешать.

note: type: Content of: <div><p>
en: Essentially all the competent programmers except for me, at the AI lab were hired away, and this caused more than a momentary change, it caused a permanent transformation because it broke the continuity of the culture of hackers.  New hackers were always attracted by the old hackers; there were the most fun computers and the people doing the most interesting things, and also a spirit which was a great deal of fun to be part of.  Once these things were gone, there is nothing to recommend the place to anyone new, so new people stopped arriving.  There was no-one they could be inspired by, no-one that they could learn those traditions from.  In addition no-one to learn how to do good programming from.  With just a bunch of professors and graduate students, who really don't know how to make a program work, you can't learn to make good programs work.  So the MIT AI lab that I loved is gone and after a couple of years of fighting against the people who did it to try to punish them for it I decided that I should dedicate my self to try to create a new community with that spirit.
ru: По существу, всех компетентных программистов, кроме меня, сманили из лаборатории, и это вызвало нечто большее, чем эпизодическое изменение&nbsp;&mdash; это вызвало необратимое преобразование, потому что это нарушило непрерывность культуры хакеров. Новые хакеры всегда привлекались старыми хакерами; там были интереснейшие компьютеры, люди, делающие интереснейшие вещи, и атмосфера, быть частью которой было дико интересно. Когда это ушло, не стало ничего, что притягивало бы кого-нибудь нового, так что новички прекратили появляться. Не было никого, кто бы мог вдохновить их, никого, от кого бы можно было перенять традиции. Вдобавок&nbsp;&mdash; никого, от кого можно было бы научиться хорошему программированию. Когда есть только кучка профессоров и аспирантов, которые на самом деле не знают, как заставить программу работать, ты не можешь научиться писать хорошие программы. Так кончилась Лаборатория ИИ MIT, которую я любил. И после пары лет боёв с теми, кто это сделал, чтобы наказать их за это, я решил посвятить себя попытке создать новое сообщество в таком духе.

note: type: Content of: <div><p>
en: But one of the problems I had to face was the problem of <a href="/philosophy/categories.html#ProprietarySoftware">proprietary software</a>.  For example one thing that happened at the lab, after the hackers left, was that the machines and the software that we had developed could no longer be maintained.  The software of course worked, and it continued to work if nobody changed it, but the machines did not.  The machines would break and there would be no-one who could fix them and eventually they would be thrown out. In the old days, yes we had service contracts for the machines, but it was essentially a joke.  That was a way of getting parts after the expert hackers from the AI lab fixed the problem.  Because if you let the field-service person fix it it would take them days, and you didn't want to do that, you wanted it to work.  So, the people who knew how to do those things would just go and fix it quickly, and since they were ten times as competent as any field service person, they could do a much better job.  And then they would have the ruined boards, they would just leave them there and tell the field service person &ldquo;take these back and bring us some new ones.&rdquo;
ru: Но одной из проблем, с которыми мне пришлось столкнуться, была проблема <a href="/philosophy/categories.html#ProprietarySoftware">несвободных программ</a>. Например, после ухода хакеров в лаборатории произошло вот что. Машины и программы, которые мы разработали, невозможно было больше поддерживать. Программы, конечно, работали и продолжали работать, если никто их не изменял, но машины&nbsp;&mdash; нет. Машины ломались, и не было никого, кто мог бы их починить, и в конце концов их выбрасывали. В былые времена, да, у нас были договоры на обслуживание, но это была по существу шутка. Это был способ достать запчасти после того, как опытные хакеры из лаборатории устраняли проблему. Потому что если ты дашь выездному специалисту по обслуживанию устранить это, это займёт у них несколько дней, а ты не хочешь этого, ты хочешь, чтобы оно работало. Так что люди, которые знали, как это сделать, просто шли и быстро устраняли это, и поскольку они были вдесятеро компетентнее любого из выездных специалистов по обслуживанию, они могли сделать это гораздо лучше. И потом, когда у них оставались пережжённые платы, они просто оставляли их там и говорили выездному специалисту: &ldquo;заберите их и пришлите нам новых&rdquo;.

note: type: Content of: <div><p>
en: In the real old days our hackers used to modify the machines that came from Digital also.  For example, they built paging-boxes to put on the PDP-10's.  Nowadays I think there are some people here [in Stockholm] who do such things too, but it was a pretty unusual thing in those days.  And the really old days, the beginning of the 1960's people used to modify computers adding all sorts of new instructions and new fancy timesharing features, so that the PDP-1 at MIT by the time it was retired in the mid-seventies had something like twice as many instructions as it had when it was delivered by Digital in the early sixties, and it had special hardware scheduler assisting features and strange memory-mapping features making it possible to assign individual hardware devices to particular timesharing jobs and lots of things that I hardly really know about.  I think they also built in some kind of extended addressing modes they added index registers and indirect addressing, and they turned it essentially from a weak machine into a semi-reasonable one.
ru: В по-настоящему старые времена наши хакеры обычно дорабатывали и машины, которые поступали из Digital. Например, они построили страничные модули для PDP-10. Сейчас я думаю, здесь [в Стокгольме] есть люди, которые тоже делают такое, но это было очень необычно в те времена. В по-настоящему старые времена, в начале шестидесятых, люди привыкли дорабатывать компьютеры: добавлять всевозможные новые команды, новые замысловатые возможности разделения времени, так что у PDP-1 в MIT к тому времени, когда её списывали в середине семидесятых, было примерно вдвое больше команд, чем было, когда её поставили Digital в начале шестидесятых; у неё были особые аппаратные возможности для распределения ресурсов и необычайные возможности переадресации памяти, что давало возможность назначать отдельные аппаратные устройства конкретным задачам разделённого времени, и ещё многое, о чём я даже толком не знаю. По-моему, они даже встроили своего рода расширенные режимы адресации, они добавили индексные регистры и косвенную адресацию и они по существу превратили её из слабой машины в полуприличную.

note: type: Content of: <div><p>
en: I guess it is one of the disadvantages of VLSI that it's no longer so feasible to add instructions to your machines.
ru: Мне кажется, один из недостатков сверхбольших интегральных микросхем&nbsp;&mdash; что в машины больше невозможно добавлять команды.

note: type: Content of: <div><p>
en: The PDP-1 also had a very interesting feature, which is that it was possible to write interesting programs in very few instructions.  Fewer than any other machine since then.  I believe for example that the famous display hack &ldquo;munching squares&rdquo; which made squares that get bigger and break up into lots of smaller squares which gets bigger and break up into smaller squares.  That was written in something like five instructions on the PDP-1.  And many other beautiful display programs could be written in few instructions.
ru: У PDP-1 также была одна интересная черта: можно было уместить интересные программы в очень небольшое число команд. Меньше, чем для любой другой машины с тех пор. Скажем, например, знаменитая экранная заставка &ldquo;секущиеся квадраты&rdquo;, которая делала квадраты, которые росли и разбивались на много меньших квадратов, которые росли и разбивались на меньшие квадраты. Это уместилось во что-то вроде пяти команд на PDP-1. И много других прекрасных экранных программ можно было уместить в несколько команд.

note: type: Content of: <div><p>
en: So, that was the AI lab.  But what was the culture of hackers like aside from their anarchism? In the days of the PDP-1 only one person could use the machine, at the beginning at least.  Several years later they wrote a timesharing system, and they added lots of hardware for it.  But in the beginning you just had to sign up for some time.  Now of course the professors and the students working on official projects would always come in during the day.  So, the people who wanted to get lots of time would sign up for time at night when there were less competition, and this created the custom of hackers working at night.  Even when there was timesharing it would still be easier to get time, you could get more cycles at night, because there were fewer users.  So people who wanted to get lots of work done, would still come in at night.  But by then it began to be something else because you weren't alone, there were a few other hackers there too, and so it became a social phenomenon.  During the daytime if you came in, you could expect to find professors and students who didn't really love the machine, whereas if during the night you came in you would find hackers.  Therefore hackers came in at night to be with their culture.  And they developed other traditions such as getting Chinese food at three in the morning.  And I remember many sunrises seen from a car coming back from Chinatown.  It was actually a very beautiful thing to see a sunrise, cause' that's such a calm time of day.  It's a wonderful time of day to get ready to go to bed.  It's so nice to walk home with the light just brightening and the birds starting to chirp, you can get a real feeling of gentle satisfaction, of tranquility about the work that you have done that night.
ru: Вот чем была Лаборатория ИИ. Но чем ещё отличалась культура хакеров, кроме их анархизма? Во времена PDP-1 только один человек мог пользоваться машиной, по крайней мере, поначалу. Через несколько лет они написали систему разделения времени, и они добавили для этого массу аппаратуры. Но вначале приходилось просто записываться на какое-то время. Ну, конечно, профессора и исследователи, работающие над официальными проектами, всегда приходили в дневное время. Так что люди, которые хотели получить побольше времени, записывались на вечер, когда было меньше желающих, и это породило обычай хакеров работать по ночам. Даже когда была многозадачность, всё равно было легче получить время, ты мог получить больше циклов ночью, потому что было меньше пользователей. Так что люди, которые хотели переделать много дел, всё равно приходили вечером. Но потом это стало кое-чем другим, потому что ты был не один, было ещё несколько хакеров, и так это стало социальным явлением. В дневное время, если ты приходил, ты мог ожидать увидеть исследователей и профессоров, которые не любили машину по-настоящему, в то время как если ты приходил вечером, ты видел хакеров. Стало быть, хакеры приходили вечером, чтобы быть со своей культурой. И у них возникли другие традиции, такие, как принимать китайскую еду в три часа утра. И я помню много восходов из окна автомобиля, возвращающегося из китайского квартала. На самом деле это было очень красиво&nbsp;&mdash; встречать восход, потому что это такое тихое время суток. Это чудесное время суток, чтобы идти спать. Это так славно&nbsp;&mdash; идти домой, когда небо чуть светлеет и птицы начинают чирикать, ты можешь получить мягкое чувство полного удовлетворения, спокойствия за работу, которую ты сделал этой ночью.

note: type: Content of: <div><p>
en: Another tradition that we began was that of having places to sleep at the lab.  Ever since I first was there, there was always at least one bed at the lab.  And I may have done a little bit more living at the lab than most people because every year of two for some reason or other I'd have no apartment and I would spend a few months living at the lab.  And I've always found it very comfortable, as well as nice and cool in the summer.  But it was not at all uncommon to find people falling asleep at the lab, again because of their enthusiasm; you stay up as long as you possibly can hacking, because you just don't want to stop.  And then when you're completely exhausted, you climb over to the nearest soft horizontal surface.  A very informal atmosphere.
ru: Другой традицией, возникшей у нас, была традиция устраивать места в лаборатории, где можно было бы спать. На моей памяти в лаборатории всегда была хотя бы одна кровать. И я, возможно, прожил в лаборатории немного больше, чем большинство людей, потому что каждый год или два по той или иной причине у меня не было жилья, и я несколько месяцев жил в лаборатории. И я всегда находил, что это очень удобно и в то же время приятно и прохладно летом. Но вид людей, спящих в лаборатории, не был чем-то необычным, опять-таки из-за их энтузиазма; ты остаёшься на рабочем месте, пока только можешь программировать, просто потому, что не хочешь останавливаться. А когда ты полностью выдохся, ты взбираешься на ближайшую мягкую горизонтальную поверхность. Очень неформальная атмосфера.

note: type: Content of: <div><p>
en: But when the hackers all left the lab this caused a demographic change, because the professors and the students who didn't really love the machine were just as numerous as before, so they were now the dominant party, and they were very scared.  Without hackers to maintain the system, they said, &ldquo;we're going to have a disaster, we must have commercial software,&rdquo; and they said &ldquo;we can expect the company to maintain it.&rdquo; It proved that they were utterly wrong, but that's what they did.
ru: Но когда все хакеры ушли из лаборатории, это вызвало демографический сдвиг, потому что профессора и исследователи, которые не любили машину по- настоящему, были так же многочисленны, как и раньше, так что они были теперь доминирующей стороной, а они очень боялись. &ldquo;Без хакеров, которые поддерживали бы систему&rdquo;,&mdash; говорили они,&mdash; &ldquo;у нас будет катастрофа, у нас должно быть коммерческое программное обеспечение&rdquo;, и они говорили: &ldquo;мы можем ожидать, что компания будет поддерживать его&rdquo;. Время показало, что они были совершенно неправы, но они так и сделали.

note: type: Content of: <div><p>
en: That was exactly when a new KL-10 system was supposed to arrive, and the question was, would it run the Incompatible Timesharing System or would it run Digital's Twenex system.  Once the hackers were gone who probably would have supported using ITS, the academic types chose to run the commercial software, and this had several immediate effects.  Some of them weren't actually so immediate but they followed inevitably as anyone who thought about it would see.
ru: Это было как раз когда ожидалось появление новой системы KL-10, и встал вопрос, будет ли на ней установлена Несовместимая Система Разделения Времени или система Twenex компании Digital. Поскольку хакеры, которые, наверное, поддержали бы ITS, ушли, эти академические типы выбрали коммерческое программное обеспечение, и это имело несколько немедленных результатов. Некоторые из них на самом деле не были такими немедленными, но они следовали неизбежно, как понял бы любой, кто размышлял об этом.

note: type: Content of: <div><p>
en: One thing was that that software was much more poorly written, and harder to understand; therefore making it harder for people to make the changes that were in fact needed.  Another was, that that software came with security, which had the inevitable effect of causing people to cooperate with each other less.  In the old days on ITS it was considered desirable that everyone could look at any file, change any file, because we had reasons to.  I remember one interesting scandal where somebody sent a request for help in using Macsyma.  Macsyma is a symbolic algebra program that was developed at MIT.  He sent to one of the people working on it a request for some help, and he got an answer a few hours later from somebody else.  He was horrified, he sent a message &ldquo;so-and-so must be reading your mail, can it be that mail files aren't properly protected on your system?&rdquo; &ldquo;Of course, no file is protected on our system.  What's the problem? You got your answer sooner; why are you unhappy? Of course we read each other's mail so we can find people like you and help them.&rdquo; Some people just don't know when they're well off.
ru: Один из результатов&nbsp;&mdash; что программы были гораздо хуже написаны и их было труднее понимать; как следствие, людям было труднее вносить в них изменения, которые фактически были необходимы. Другой&nbsp;&mdash; что эти программы приходили со средствами безопасности, что неизбежно заставляло людей меньше сотрудничать друг с другом. В старые времена на ITS считалось желательным, чтобы каждый мог заглянуть в любой файл, изменить любой файл, потому что у нас были на это причины. Я помню один интересный скандал, когда кто-то прислал запрос на помощь по использованию программы Macsyma. Это программа символьной алгебры, разработанная в MIT. Он послал одному из людей, работавших над ней, запрос на помощь, и получил ответ через несколько часов от кого-то другого. Он ужаснулся, он послал сообщение: &ldquo;такой-то и такой-то, должно быть, читает вашу почту, наверное, файлы почты не защищены в вашей системе, как следует?&rdquo; &ldquo;Конечно; никакие файлы в нашей системе не защищены. В чём дело? Вы получили ответ раньше. Чем вы недовольны? Конечно, мы читаем почту друг друга, чтобы находить таких людей, как вы, и помогать им&rdquo;. Некоторые просто не понимают, что для них лучше.

note: type: Content of: <div><p>
en: But of course Twenex not only has security, and by default turns on security, but it's also designed with the assumption that security is in use.  So there are lots of things that are very easy to do that can cause a lot of damage, and the only thing that would stop you from doing them by accident, is security.  On ITS we evolved other means of discouraging people from doing those things by accident, but on Twenex you didn't have them because they assumed that there was going to be be strict security in effect and only the bosses were going to have the power to do them.  So they didn't put in any other mechanism to make it hard to do by accident.  The result of this is that you can't just take Twenex and turn off the security and have what you'd really like to have, and there were no longer the hackers to make the changes to put in those other mechanisms, so people were forced to use the security.  And about six months after the machine was there they started having some coups d'etat.  That is, at first we had the assumption that everyone who worked for the lab was going to have the wheel bit which gave full powers to override all security measures, but some days you'd come in some afternoon and find out that the wheel bits of just about everybody had been turned off.
ru: Но, конечно, в Twenex не только есть безопасность, и по умолчанию она включена, но она также разработана в предположении о том, что безопасность используется. Так что там много такого, что очень легко сделать, и это может причинить большой ущерб, и единственное, что может тебя уберечь от совершения такого действия по ошибке,&mdash; это безопасность. В ITS мы развили другие средства, делающие маловероятным совершение таких действий по ошибке, но в Twenex у тебя их не было, потому что они предполагали, что там будет действовать строгая безопасность и только у начальства будет власть делать это. Так что они не заложили никакого другого механизма, затрудняющего такие случайные действия. В результате ты не можешь просто взять Twenex и выключить безопасность и получить то, что ты на самом деле хотел, и больше не было хакеров, чтобы сделать изменения и заложить те другие механизмы, так что люди были вынуждены применять безопасность. И примерно через шесть месяцев после того, как появилась машина, они начали некий переворот. То есть, сперва у нас было предположение, что у каждого, кто работал в лаборатории, будет флаг wheel, который даёт полную власть отменять все меры безопасности, но в один прекрасный день ты приходил и видел, что флаг wheel почти у всех снят.

note: type: Content of: <div><p>
en: When I found out about those, I overthrew them.  The first time, I happened to know the password of one of the people who was included among the elite, so I was able to use that to turn everyone back on.  The second time he had changed his password, he had now changed his sympathies, he was now part of the aristocratic party.  So, I had to bring the machine down and use non-timeshared DDT to poke around.  I poked around in the monitor for a while, and eventually figured out how to get it to load itself in and let me patch it, so that I could turn off password checking and then I turned back on a whole bunch of people's wheel bits and posted a system message.  I have to explain that the name of this machine was OZ, so I posted a system message saying: &ldquo;There was another attempt to seize power.  So far the aristocratic forces have been defeated&mdash;Radio Free OZ.&rdquo; Later I discovered that &ldquo;Radio Free OZ&rdquo; is one of the things used by Firesign Theater.  I didn't know that at the time.
ru: Когда я обнаружил это, я перекинул всё назад. В первый раз оказалось, что я знаю пароль одного из тех, кто был включён в элиту, так что я мог воспользоваться этим, чтобы включить всех обратно. Во второй раз он изменил пароль, он теперь поменял симпатии, он теперь был частью аристократической партии. Итак, мне пришлось выключить машину и применить однозадачный ДДТ, чтобы обойти это. Я немного покопался в мониторе и наконец понял, как заставить его загрузиться и позволить мне его подлатать, так что я мог выключить проверку пароля, и тогда я включил людям всю кучу флагов wheel и послал системное сообщение. Я должен пояснить, что имя этой машины было OZ, так что я послал системное сообщение: &ldquo;Была ещё одна попытка захвата власти. До сих пор аристократические силы терпели поражение&nbsp;&mdash; Радио &lsquo;Свободная OZ&rsquo;&rdquo;. Позднее я обнаружил, что &ldquo;Радио &lsquo;Свободная OZ&rsquo;&rdquo; есть в театре Firesign. В то время я этого не знал.

note: type: Content of: <div><p>
en: But gradually things got worse and worse, it's just the nature of the way the system had been constructed forced people to demand more and more security.  Until eventually I was forced to stop using the machine, because I refused to have a password that was secret.  Ever since passwords first appeared at the MIT-AI lab I had come to the conclusion that to stand up for my belief, to follow my belief that there should be no passwords, I should always make sure to have a password that is as obvious as possible and I should tell everyone what it is.  Because I don't believe that it's really desirable to have security on a computer, I shouldn't be willing to help uphold the security regime.  On the systems that permit it I use the &ldquo;empty password,&rdquo; and on systems where that isn't allowed, or where that means you can't log in at all from other places, things like that, I use my login name as my password.  It's about as obvious as you can get.  And when people point out that this way people might be able to log in as me, I say &ldquo;yes that's the idea, somebody might have a need to get some data from this machine.  I want to make sure that they aren't screwed by security.&rdquo;
ru: Но постепенно становилось всё хуже и хуже, просто природа принципов, на которых была построена система, вынуждала людей требовать всё больше и больше безопасности. До тех пор, пока я наконец не был вынужден прекратить пользоваться машиной, потому что я отказывался хранить пароль в секрете. С тех пор, как пароли появились в Лаборатории ИИ MIT, я пришёл к заключению, что для того, чтобы следовать своему убеждению о том, что паролей не должно быть, нужно, чтобы у меня всегда был самый очевидный из возможных паролей, и мне следует всем рассказывать, какой это пароль. Из-за того, что я не верю, что на компьютере безопасность на самом деле желательна, я не должен добровольно помогать поддерживать режим безопасности. В системах, которые допускают это, я задаю &ldquo;пустой пароль&rdquo;, а в системах, где это запрещено или где это значит, что ты не можешь войти туда из других мест, или ещё что-нибудь, я задаю своё имя пользователя в качестве пароля. Это один из самых очевидных среди возможных паролей. А когда мне указывают на то, что таким образом люди могли бы войти в систему под моим именем, я говорю: &ldquo;Да, в том-то и мысль, что кому-то может быть необходимо получить какие-то данные с этой машины. Я хочу гарантировать, что безопасность их не отошьёт&rdquo;.

note: type: Content of: <div><p>
en: And an other thing that I always do is I always turn of all protection on my directory and files, because from time to time I have useful programs stored there and if there's a bug I want people to be able to fix it.
ru: А другое, что я всегда делаю&nbsp;&mdash; я всегда снимаю всю защиту с моих каталогов и файлов, потому что время от времени у меня там появляются полезные программы, и если там есть ошибка, я хочу, чтобы люди могли исправить её.

note: type: Content of: <div><p>
en: But that machine wasn't designed also to support the phenomenon called &ldquo;tourism.&rdquo; Now &ldquo;tourism&rdquo; is a very old tradition at the AI lab, that went along with our other forms of anarchy, and that was that we'd let outsiders come and use the machine.  Now in the days where anybody could walk up to the machine and log in as anything he pleased this was automatic: if you came and visited, you could log in and you could work.  Later on we formalized this a little bit, as an accepted tradition specially when the Arpanet began and people started connecting to our machines from all over the country.  Now what we'd hope for was that these people would actually learn to program and they would start changing the operating system.  If you say this to the system manager anywhere else he'd be horrified.  If you'd suggest that any outsider might use the machine, he'll say &ldquo;But what if he starts changing our system programs?&rdquo; But for us, when an outsider started to change the system programs, that meant he was showing a real interest in becoming a contributing member of the community.  We would always encourage them to do this.  Starting, of course, by writing new system utilities, small ones, and we would look over what they had done and correct it, but then they would move on to adding features to existing, large utilities.  And these are programs that have existed for ten years or perhaps fifteen years, growing piece by piece as one craftsman after an other added new features.
ru: Но та машина также не была задумана для поддержки феномена под названием &ldquo;туризм&rdquo;. Сейчас &ldquo;туризм&rdquo;&nbsp;&mdash; очень старая традиция в Лаборатории ИИ, которая жила вместе с другими нашими формами анархии, она состояла в том, что мы позволяли посторонним приходить и пользоваться машиной. Так вот, во времена, когда каждый мог подойти к машине и войти под каким угодно именем, это было само собой: если ты заглянул в лабораторию, ты можешь войти в систему и работать. Позднее мы это немного формализовали как официальную традицию, особенно когда началась Arpanet и люди со всей страны начали подключаться к нашим машинам. Так вот, на что мы надеялись&nbsp;&mdash; это что эти люди на самом деле будут учиться программировать и начнут изменять систему. Если вы скажете это системному администратору в любом другом месте, он будет в ужасе. Если вы предложите, чтобы любой посторонний мог пользоваться машиной, он скажет: &ldquo;Но что, если он начнёт изменять системные программы?&rdquo; Но для нас, когда посторонний начинал изменять системные программы, это значило, что он выказывает неподдельное желание стать активным членом сообщества. Мы всегда поощряли их к этому. Начиная, конечно, с написания новых системных утилит, небольших, мы приглядывали за тем, что они сделали, и поправляли это, но затем они переходили к добавлению возможностей к существующим большим утилитам. А это&nbsp;&mdash; программы, существовавшие десять или, может быть, пятнадцать лет, вырастая часть за частью по мере того, как один искусник за другим добавлял новые возможности.

note: type: Content of: <div><p>
en: Sort of like cities in France you might say, where you can see the extremely old buildings with additions made a few hundred years later all the way up to the present.  Where in the field of computing, a program that was started in 1965 is essentially that.  So we would always hope for tourists to become system maintainers, and perhaps then they would get hired, after they had already begun working on system programs and shown us that they were capable of doing good work.
ru: Типа того, как города во Франции, можно сказать, где видишь крайне старые здания с пристройками, которые добавляли в течение нескольких веков вплоть до нашего времени. В области вычислений программа, которая была начата в 1965 году,&mdash; по существу то же самое. Итак, мы всегда надеялись, что туристы станут сопровождать систему, и возможно, потом их наймут, после того, как они уже начали работать над системными программами и показали нам, что они способны выполнять хорошую работу.

note: type: Content of: <div><p>
en: But the ITS machines had certain other features that helped prevent this from getting out of hand, one of these was the &ldquo;spy&rdquo; feature, where anybody could watch what anyone else was doing.  And of course tourists loved to spy, they think it's such a neat thing, it's a little bit naughty you see, but the result is that if any tourist starts doing anything that causes trouble there's always somebody else watching him.  So pretty soon his friends would get very mad because they would know that the continued existence of tourism depended on tourists being responsible.  So usually there would be somebody who would know who the guy was, and we'd be able to let him leave us alone. And if we couldn't, then what we would do was we would turn off access from certain places completely, for a while, and when we turned it back on, he would have gone away and forgotten about us.  And so it went on for years and years and years.
ru: Но у машин ITS были определённые особенности, которые помогали предотвратить выход этого из-под контроля, одной из них была возможность &ldquo;шпионить&rdquo;, когда любой мог подсмотреть, что делает кто угодно другой. И, конечно, туристы обожали шпионить, они думают, это такая классная штука, немного некрасиво подглядывать, но в результате если турист начинает делать что-то, что вызывает неприятности, всегда есть кто-то, кто смотрит за ним. Так что очень скоро его друзья начинают сходить с ума, потому что они  знают, что существование туризма зависит сознательности туристов. Так что обычно оказывалось, что кто-нибудь знает, кто был тот парень, и мы были в состоянии указать ему на дверь. А если мы не могли, мы полностью выключали доступ из определённых мест, на некоторое время, а когда мы включали его обратно, к тому времени он уже уходил и забывал нас. И так это продолжалось годы, и годы, и годы.

note: type: Content of: <div><p>
en: But the Twenex system wasn't designed for this sort of thing, and eventually they wouldn't tolerate me with my password that everybody knew, tourists always logging in as me two or three at a time, so they started flushing my account.  And by that time I was mostly working on other machines anyway, so eventually I gave up and stopped ever turning it on again.  And that was that.  I haven't logged in on that machine as myself &hellip; <span>[At this point RMS is interrupted by tremendous applause.]</span> &hellip; for.
ru: Но система Twenex не была разработана для такого рода вещей, и в конце концов они перестали терпеть меня и то, что мой пароль все знали: туристы всегда работали под моим именем по двое и по трое сразу, так что они начали блокировать мою учётную запись. А к тому времени я всё равно уже в основном работал на других машинах, так что в конце концов я прекратил включать её обратно. Вот в чём дело. Я не входил в систему под своим именем&hellip;<span>[В этом месте RMS был прерван бурными аплодисментами]</span>&hellip;

note: type: Content of: <div><p>
en: But when they first got this Twenex system they had several changes in mind that they wanted to make.  Changes in the way security worked.  They also wanted to have the machine on both the ARPA network and the MIT-chaos network, and it turns out that they were unable to do this, that they couldn't get anyone who was sufficiently competent to make such changes.  There was no longer talent available to do it, and it was too hard to change.  That system was much harder to understand, because it was too poorly written, and of course, Digital wouldn't do these things, so their ideas that a commercial system would essentially maintain itself, proved to be mistaken.  They had just as much need for system hackers, but they had no longer the means to entice system hackers.  And nowadays at MIT there are more people interested in hacking on ITS than there are interested in hacking on Twenex.
ru: Но когда они впервые получили эту систему Twenex, у них было на уме несколько изменений, которые они хотели внести. Изменений в том, как работала безопасность. Они также хотели, чтобы машина была как в сети ARPA, так и в сети MIT-chaos, и вышло, что они были не в состоянии сделать это, что они не могли найти кого-нибудь, кто был бы достаточно компетентен, чтобы внести такие изменения. Больше не было талантов, чтобы это сделать, и её было трудно изменять. В этой системе было гораздо труднее разобраться, потому что она была так плохо написана, и, конечно, Digital не собирались этим заниматься, так что их мысль о том, что коммерческая система будет по существу сама себя поддерживать, оказалась ошибочной. Они всё так же нуждались в системных хакерах, но у них больше не было возможностей приманивать системных хакеров. И сейчас в MIT больше людей, заинтересованных изощрении ITS, чем заинтересованных в изощрении Twenex.

note: type: Content of: <div><p>
en: And the final reason why this is so, is that Twenex can't be shared.  Twenex is a proprietary program and you're only allowed to have the sources if you keep them secret in certain nasty ways, and this gives them a bad flavor.  Unless a person is oblivious (which some people in computers are, there's some people who'll do anything if it's fun for them, and won't think for a minute whether they're cooperating with anyone else, but you'd have to be pretty oblivious to not to notice what a sad thing it is to work on a program like that, and that is a further discouragement).  And if that isn't enough there is the fact that every year or so they're going to give you a new release full of 50 000 additional lines of code all written by monkeys.  Because they generally follow the &ldquo;million monkeys typing, and eventually they'll come up with something useful&rdquo; school of system development.
ru: И заключительная причина, по которой это происходит&nbsp;&mdash; это что Twenex нельзя передавать. Twenex&nbsp;&mdash; это несвободная программа, и тебе позволено иметь исходные тексты, только если ты будешь хранить их в секрете на определённых скверных условиях, и это придаёт им дурной запах. Если только человек не забывчив (в мире компьютеров есть такие люди, есть люди, которые будут делать что угодно, если их это забавляет, не задумываясь ни на минуту о том, сотрудничают ли они с кем-нибудь другим, но нужно быть изрядно забывчивым, чтобы не замечать, как грустно работать над подобной программой, а это отвращает ещё больше). А если этого недостаточно, есть факт, что каждый год или около того они выдают тебе новый выпуск, заполненный полусотней тысяч дополнительных строк, набитых обезьянами. Потому что они в общем следуют предписаниям школы системной разработки  &ldquo;миллион барабанящих по кнопкам обезьян в конце концов придут к чему-нибудь полезному&rdquo;.

note: type: Content of: <div><p>
en: It was clear to me from what I saw happening to these proprietary systems that the only way we could have the spirit of the old AI lab was to have a free operating system.  To have a system made up of free software which could be shared with anyone.  So that we could invite everyone to join in improving it.  And that's what led up to the GNU project.  So I guess we've arrived at the second part of the talk.
ru: Для меня было ясно из того, что, как  я видел, происходило с этими несвободными системами, что единственное, что позволило бы нам сохранить дух старой Лаборатории ИИ,&mdash; это свободная операционная система. Операционная система, построенная из свободных программ, которыми можно обмениваться с кем угодно. Так, чтобы мы могли бы пригласить всех присоединиться к улучшению её. А это&nbsp;&mdash; то, что привело к проекту GNU. Итак, я полагаю, мы дошли до второй части беседы.

note: type: Content of: <div><p>
en: About three and a half year ago it was clear to me that I should start developing a <a href="/philosophy/free-sw.html">free software</a> system.  I could see two possible kinds of systems to develop: One: A LISP-machine-like system, essentially a system just like the MIT LISP machine system that had just been developed, except free, and running on general purpose hardware, not on special LISP machines.  And the other possibility was a more conventional operating system, and it was clear to me that if I made a conventional operating system, I should make it compatible with Unix, because that would make it easy for people all around to switch to it.  After a little while, I concluded I should do the latter and the reason was, that I saw that you can't have something really like the LISP machine system on general purpose hardware.  The LISP machine system uses special hardware plus special writable microcode to gain both good execution speed and robust detection of errors at runtime, specially data-type errors.  In order to make a LISP system run fast enough on ordinary hardware, you have to start making assumptions.  Assuming that a certain argument is the right type, and then if it isn't the system just crashes.
ru: Примерно три с половиной года назад для меня было ясно, что мне следует начать разработку системы <a href="/philosophy/free-sw.html">свободных программ</a>. Мне представлялись возможными две разновидности системы: во-первых, система типа машины LISP,&mdash; по существу, система, точь-в-точь такая же, как машина LISP MIT, которую тогда только что разработали, только свободная и работающая на универсальной аппаратуре, а не на специальных машинах LISP. А другая возможность&nbsp;&mdash; более ортодоксальная операционная система, и для меня было ясно, что если я делаю ортодоксальную систему, то мне следует сделать её совместимой с Unix, потому что это сделает переход на неё лёгким для всех окружающих. Очень скоро я пришёл к заключению, что мне следует выбрать второе по той причине, что я понимал, что нельзя сделать что-нибудь действительно подобное системе машины LISP на универсальной аппаратуре. Система машины LISP пользуется специальной аппаратурой плюс специальным модифицируемым микрокодом, чтобы добиться одновременно хорошей скорости вычислений и устойчивого обнаружения ошибок, особенно ошибок в типе данных. Чтобы заставить систему LISP достаточно быстро работать на обычной аппаратуре, мы должны начать делать предположения. Предполагать, что определённый аргумент имеет определённый тип, а когда это не так, система просто даёт сбой.

note: type: Content of: <div><p>
en: Of course you can put in explicit checks, you can write a robust program if you want, but the fact is that you are going to get things like memory addressing errors when you feed a function an argument of the wrong type if you did NOT put in things to check for it.
ru: Конечно, можно вставить явные проверки, можно писать надёжные программы, если захотите, но фактически ты будешь получать вещи вроде ошибок адресации памяти, когда ты скармливаешь функции аргумент не того типа, если ты не вставишь чего-нибудь для проверки этого.

note: type: Content of: <div><p>
en: So the result is then that you need something running underneath the LISP system to you catch these errors, and give the user the ability to keep on running, and debug what happened to him.  Finally I concluded that if I was going to have to have a operating system at a lower level, I might as well make a good operating-system&mdash;that it was a choice between an operating system and the lisp, or just an operating system; therefore I should do the operating system first, and I should make it compatible with Unix.  Finally when I realized that I could use the most amusing word in the English language as a name for this system, it was clear which choice I had to make.  And that word is of course GNU, which stands for &ldquo;Gnu's Not Unix.&rdquo; The recursive acronym is a very old tradition among the hacker community around MIT.  It started, I believe, with an editor called TINT, which means: &ldquo;Tint Is Not Teco,&rdquo; and later on it went through names such as &ldquo;SINE&rdquo; for &ldquo;SINE Is Not Emacs,&rdquo; and FINE for &ldquo;Fine Is Not Emacs,&rdquo; and EINE for &ldquo;Eine Is Not Emacs,&rdquo; and ZWEI for &ldquo;Zwei Was Eine Initially,&rdquo; and ultimately now arrives at GNU.
ru: Так что в результате тебе нужно что-то выполняющееся под оболочкой системы LISP, чтобы отлавливать эти ошибки и позволять пользователю продолжать вычисления и давать ему отчёт о том, что произошло. Наконец, я пришёл к заключению, что если я собираюсь делать операционную систему на более низком уровне, то я мог бы с таким же успехом сделать хорошую операционную систему&nbsp;&mdash; то есть был выбор между операционной системой с LISP и просто операционной системой; стало быть, мне надо сделать сперва операционную систему и мне надо сделать её совместимой с Unix. Наконец, когда я осознал, что я могу воспользоваться самым занятным в английском языке словом в качестве названия для системы, стало ясно, какой выбор я был просто вынужден сделать. А тем словом было, конечно, GNU, что значит &ldquo;Gnu's Not Unix&rdquo; (GNU&nbsp;&mdash; не Unix). Рекурсивное сокращение&nbsp; &mdash; это очень старая традиция в обществе хакеров MIT. Она началась, я думаю, с редактора, названного TINT, что значит: &ldquo;Tint Is Not Teco&rdquo; (&ldquo;Tint&nbsp;&mdash; это не Teco&rdquo;), а затем она прошла через такие названия, как &ldquo;SINE&rdquo; (&ldquo;SINE Is Not Emacs&rdquo;: &ldquo;SINE&nbsp;&mdash; это не Emacs&rdquo;), и  FINE (&ldquo;Fine Is Not Emacs&rdquo;: &ldquo;Fine&nbsp;&mdash; это не Emacs&rdquo;),  и EINE (&ldquo;Еine Is Not Emacs&rdquo;: &ldquo;Еine&nbsp;&mdash; это не Emacs&rdquo;), и ZWEI (&ldquo;Zwei Was Eine Initially&rdquo;: &ldquo;Zwei изначально был Emacs&rdquo;), и в конце концов теперь она дошла до GNU.

note: type: Content of: <div><p>
en: I would say that since the time about two and a half years ago when I actually started working on GNU, I've done more than half of the work.  When I was getting ready to start working on the project, I first started looking around for what I could find already available free.  I found out about an interesting portable compiler system which was called &ldquo;the free university compiler kit,&rdquo; and I thought, with a name like that, perhaps I could have it.  So, I sent a message to the person who had developed it asking if he would give it to the GNU Project, and he said &ldquo;No, the university might be free, but the software they develop isn't,&rdquo; but he then said that he wanted to have a Unix compatible system too, and he wanted to write a sort of kernel for it, so why didn't I then write the utilities, and they could both be distributed with his proprietary compiler, to encourage people to buy that compiler.  And I thought that this was despicable and so I told him that my first project would be a compiler.
ru: Я бы сказал, что с того времени, около двух с половиной лет назад, когда я на самом деле начал работу над GNU, я сделал больше половины всей работы.  Когда я готовился начать работу над проектом, я сперва поискал вокруг, что из свободного я мог найти уже готовым. Я узнал об интересной переносимой системе компиляторов, которая называлась &ldquo;набор свободного университета для компиляторов&rdquo;<a href="#ft1">[1]</a>, и я думал, что с таким названием, я, наверное, могу получить его. Итак, я послал сообщение лицу, разрабатывавшему его, с вопросом, не мог ли бы он передать его проекту GNU, и он сказал: &ldquo;Нет, университет, может быть, и свободный, а программы, которые он разрабатывает&nbsp;&mdash; нет&rdquo;, но потом он сказал, что тоже хочет получить систему, совместимую с Unix, и он хочет написать что-то вроде ядра для неё, так что почему бы мне не написать утилиты, и вместе их можно было бы распространять с его несвободным компилятором, чтобы поощрить людей покупать этот компилятор. А я подумал, что это предложение смехотворно, так что я сказал ему, что первым моим проектом будет компилятор.

note: type: Content of: <div><p>
en: I didn't really know much about optimizing compilers at the time, because I'd never worked on one.  But I got my hands on a compiler, that I was told at the time was free. It was a compiler called PASTEL, which the authors say means &ldquo;off-color PASCAL.&rdquo;
ru: В то время я на самом деле знал об оптимизирующих компиляторах не много, потому что я ни над одним из них никогда не работал. Но я запустил свои руки в компилятор, о котором мне в то время сказали, что он&nbsp;&mdash; свободный. Это был компилятор под названием  PASTEL, что, по словам авторов, означает &ldquo;болезненный PASCAL&rdquo;.

note: type: Content of: <div><p>
en: Pastel was a very complicated language including features such as parametrized types and explicit type parameters and many complicated things.  The compiler was of course written in this language, and had many complicated features to optimize the use of these things.  For example: the type &ldquo;string&rdquo; in that language was a parameterized type; you could say <code>string(n)</code> if you wanted a string of a particular length; you could also just say <code>string</code>, and the parameter would be determined from the context.  Now, strings are very important, and it is necessary for a lot of constructs that use them to run fast, and this means that they had to have a lot of features to detect such things as: when the declared length of a string is an argument that is known to be constant throughout the function, to save to save the value and optimize the code they're going to produce, many complicated things.  But I did get to see in this compiler how to do automatic register allocation, and some ideas about how to handle different sorts of machines.
ru: Pastel был очень сложным языком, включающим такие особенности, как параметризованные типы, и явные параметры типа, и много сложных вещей. Компилятор, конечно, был написан на этом языке, и у него было много сложных особенностей для оптимизации использования всего этого. Например, тип &ldquo;строка&rdquo; в этом языке был параметризованным; можно было сказать <code>строка(n)</code>, если тебе нужна была строка определённой длины; ты также мог просто сказать <code>строка</code>, и параметр определялся из контекста. Ну вот, строки очень важны, и для многих конструкций, пользующихся ими, необходимо быстрое исполнение, а это значит, что у них должно быть много особенностей для обнаружения таких вещей, как: когда объявленная длина строки&nbsp;&mdash; аргумент, о котором известно, что он неизменен на протяжении функции, сохранить значение и оптимизировать код, который они собираются сгенерировать, много сложных вещей. Но мне удалось увидеть в этом компиляторе, как делать автоматическое размещение регистров, и некоторые идеи о том, как обращаться с разными типами машин.

note: type: Content of: <div><p>
en: Well, since this compiler already compiled PASTEL, what I needed to do was add a front-end for C, which I did, and add a back-end for the 68000 which I expected to be my first target machine.  But I ran into a serious problem.  Because the PASTEL language was defined not to require you to declare something before you used it, the declarations and uses could be in any order, in other words: Pascal's <code>forward</code> declaration was obsolete, because of this it was necessary to read in an entire program, and keep it in core, and then process it all at once.  The result was that the intermediate storage used in the compiler, the size of the memory needed, was proportional to the size of your file.  And this also included stack-space, you needed gigantic amounts of stack space, and what I found as a result was: that the 68000 system available to me could not run the compiler.  Because it was a horrible version of Unix that gave you a limit of something like 16K words of stack, this despite the existence of six megabytes in the machine, you could only have 16Kw of stack or something like that.  And of course to generate its conflict matrix to see which temporary values conflicted, or was alive at the same time as which others, it needed a quadratic matrix of bits, and that for large functions that would get it to hundreds of thousands of bytes.  So I managed to debug the first pass of the ten or so passes of the compiler, cross compiled on to that machine, and then found that the second one could never run.
ru: Ну, вот. Поскольку этот компилятор уже компилировал PASTEL, что мне нужно было сделать&nbsp;&mdash; это добавить предобработчик для C, что я и делал, и добавить постобработчик для 68000, который, как я ожидал, станет моей первой целевой машиной. Но я столкнулся с серьёзной проблемой. Из-за того, что язык PASTEL был определён так, чтобы не требовать от тебя, чтобы ты объявлял что-нибудь перед тем, как ты будешь обращаться к этому, объявления и обращения могли быть в любом порядке, другими словами, паскалевское &ldquo;предварительное&rdquo; объявление было в прошлом, поэтому необходимо было прочесть всю программу и держать её в памяти, а потом обрабатывать её всю целиком. В результате промежуточная память, используемая в компиляторе, размер необходимой памяти, был пропорционален размеру вашего файла. И это относилось также к пространству стека, тебе нужны были колоссальные количества стекового пространства, и результатом, к которому я пришёл, было то, что на доступной мне системе 68000 нельзя было запустить компилятор. Потому что это была ужасная версия Unix, которая давала тебе лимит во что-то вроде 16K слов стека, это несмотря на существование шести мегабайт в машине, у тебя могло быть только 16K слов стека или что-то вроде этого. И, конечно, чтобы генерировать свою матрицу конфликтов, чтобы увидеть, какие временные значения конфликтуют или живут в то же время, что и другие, ему нужна была квадратная матрица бит, и для больших функций это занимало сотни тысяч байт. Так что мне удалось отладить первый проход из десяти или около того проходов компилятора, кросс-компилировать на ту машину и затем обнаружить, что второй никогда не сможет выполниться.

note: type: Content of: <div><p>
en: While I was thinking about what to do about these problems and wondering whether I should try to fix them or write entirely new compiler, in a roundabout fashion I began working on GNU Emacs.  GNU Emacs is the main distributed portion of the GNU system.  It's an extensible text editor a lot like the original emacs which I developed ten years ago, except that this one uses actual LISP as its extension language.  The editor itself is implemented in C, as is the LISP interpreter, so the LISP interpreter is completely portable, and you don't need a LISP system external to the editor.  The editor contains its own LISP system, and all of the editing commands are written in LISP so that they can provide you with examples to look at for how to write your own editing commands, and things to start with, so you can change them into the editing commands that you really want.
ru: Пока я размышлял о том, что делать с этими проблемами, и гадал, стоит ли мне попытаться решить их или написать полностью новый компилятор, между делом я начал работать над GNU Emacs. GNU Emacs&nbsp;&mdash; это главная распространяемая часть системы GNU. Это расширяемый текстовый редактор, во многом сходный с изначальным Emacs, который я разработал десять лет назад, кроме того, что он пользуется настоящим LISP в качестве языка расширений. Сам редактор реализован на C, как и интерпретатор LISP, так что интерпретатор LISP полностью переносим, и тебе не нужна система LISP, внешняя по отношению к редактору. Редактор содержит собственную систему LISP, и все команды редактирования написаны на LISP, так что они обеспечивают тебя примерами того, как писать свои собственные команды редактирования, и то, с чего начать, так что ты можешь делать из них команды редактирования, какие тебе на самом деле нужны.

note: type: Content of: <div><p>
en: In the summer of that year, about two years ago now, a friend of mine told me that because of his work in early development of Gosling Emacs, he had permission from Gosling in a message he had been sent to distribute his version of that.  Gosling originally had set up his Emacs and distributed it free and gotten many people to help develop it, under the expectation based on Gosling's own words in his own manual that he was going to follow the same spirit that I started with the original Emacs.  Then he stabbed everyone in the back by putting copyrights on it, making people promise not to redistribute it and then selling it to a software-house.  My later dealings with him personally showed that he was every bit as cowardly and despicable as you would expect from that history.
ru: Летом того года, сейчас это около двух лет назад, один мой друг рассказал мне, что из-за его участия в ранней стадии разработки Emacs Гослинга у него было разрешение от Гослинга  в сообщении, которое ему прислали, распространять свою версию этого. Гослинг первоначально организовал свой Emacs и распространял его свободно и получил в помощь разработке много людей, в ожидании, основанном на собственных словах Гослинга из его собственного руководства, что он собирается продолжать в том же духе, в котором я начал первоначальный Emacs. Потом он дал всем пинка под зад, заявив авторские права на него, заставляя людей обещать не перераспространять его и затем продав его в фирму, занимавшуюся программами. Мои дальнейшие дела лично с ним показали, что он был ровно настолько труслив и ничтожен, как вы могли бы понять из этой истории.

note: type: Content of: <div><p>
en: But in any case, my friend gave me this program, and my intention was to change the editing commands at the top level to make them compatible with the original Emacs that I was used to.  And to make them handle all the combinations of numerical arguments and so on that one might expect that they would handle and have all the features that I wanted.  But after a little bit of this, I discovered that the extension language of that editor, which is called MOCKLISP, was not sufficient for the task.  I found that that I had to replace it immediately in order to do what I was planning to do.  Before I had had the idea of someday perhaps replacing MOCKLISP with real LISP, but what I found out was that it had do be done first.  Now, the reason that MOCKLISP is called MOCK, is that it has no kind of structure datatype: it does not have LISP lists; it does not have any kind of array.  It also does not have LISP symbols, which are objects with names: for any particular name, there is only one object, so that you can type in the name and you always get the same object back.  And this tremendously hampers the writing of many kinds of programs, you have to do things by complicated string-manipulation that don't really go that way.
ru: Но как бы то ни было, мой друг дал мне эту программу, и моим намерением было поменять команды редактирования высокого уровня, чтобы сделать их совместимыми с первоначальным Emacs, к которому я привык. И заставить их обрабатывать все комбинации численных аргументов и так далее, всё, что можно было бы от них ожидать, и получить все возможности, которые я хотел. Но спустя короткое время я обнаружил, что язык расширений этого редактора, который называется MOCKLISP, не был достаточен для этой задачи. Я обнаружил, что мне придётся немедленно поменять его, чтобы делать то, что я планировал. До этого у меня была мысль, может быть, когда-нибудь заменить MOCKLISP на настоящий LISP, но я обнаружил, что это нужно было сделать с самого начала. Ну, вот, MOCKLISP называется MOCK (фальшивым) потому, что в нём нет никакого рода типов структур: в нём нет списков; в нём нет никакого рода массивов. В нём также нет символов LISP, то есть объектов с именами: для каждого конкретного имени есть только один объект, так что ты можешь напечатать имя и ты всегда получишь тот же самый объект. А это невероятно затрудняет написание многих видов программ, тебе приходится делать вычисления сложными манипуляциями строк, которые на самом деле плохо отражают происходящее.

note: type: Content of: <div><p>
en: So I wrote a LISP interpreter and put it in in place of MOCKLISP and in the process I found that I had to rewrite many of the editor's internal data structures because I wanted them to be LISP objects.  I wanted the interface between the LISP and the editor to be clean, which means that objects such as editor buffers, sub-processes, windows and buffer-positions, all have to be LISP objects, so that the editor primitives that work on them are actually callable as LISP functions with LISP data.  This meant that I had to redesign the data formats of all those objects and rewrite all the functions that worked on them, and the result was that after about six months I had rewritten just about everything in the editor.
ru: Так что я написал интерпретатор LISP и поставил его на место MOCKLISP, и в процессе этого я обнаружил, что мне пришлось переписать много внутренних структур данных редактора, потому что я хотел, чтобы они были объектами LISP. Я хотел, чтобы связи между LISP и редактором были чистыми, это означает, что объекты, такие, как буферы редактора, подпроцессы, окна и позиции в буфере,&mdash; всё это должно быть объектами LISP, так что примитивы редактора, которые работают с ними, на самом деле можно вызывать как функции LISP с данными LISP. Это значило, что мне требовалось переделать форматы данных всех этих объектов и переписать все функции, которые работали с ними, и в результате примерно через шесть месяцев я переписал в редакторе почти всё.

note: type: Content of: <div><p>
en: In addition, because it is so hard to write things in MOCKLISP, all the things that had been written in MOCKLISP were very unclean and by rewriting them to take advantage of the power of real LISP, I could make them much more powerful and much simpler and much faster.  So I did that, and the result was that when I started distributing this program only a small fraction remained from what I had received.
ru: Вдобавок, из-за того, что было так трудно писать на MOCKLISP, всё, что было написано на нём, было очень нечисто, и переписывая это с использованием мощи настоящего LISP, я мог сделать это гораздо эффективнее и гораздо проще и гораздо быстрее. Итак, я сделал это, и в результате, когда я начал распространять эту программу, от того, что я получил, осталась только небольшая доля.

note: type: Content of: <div><p>
en: At this point, the company that Gosling thinks he sold the program to challenged my friend's right to distribute it, and the message was on backup tapes, so he couldn't find it.  And Gosling denied having given him permission.  And then a strange thing happened.  He was negotiating with this company, and it seemed that the company mainly was concerned with not having anything distributed that resembled what they were distributing.  See, he was still distributing, and the company where he worked, which is Megatest, was still distributing the same thing he had given me, which really was an old version of Gosling Emacs with his changes, and so he was going to make an agreement with them where he would stop distributing that, and would switch to using GNU Emacs, and they would then acknowledge that he really had the permission after all, and then supposedly everyone would be happy.  And this company was talking to me about wanting to distribute GNU Emacs, free of course, but also sell various sorts of supporting assistance, and they wanted to hire me to help do the work.  So it's sort of strange that they then changed their mind and refused to sign that agreement, and put up a message on the network saying that I wasn't allowed to distribute the program.  They didn't actually say that they would do anything, they just said that it wasn't clear whether they might ever someday do something.  And this was enough to scare people so that no one would use it any more, which is a sad thing.
ru: В этот момент компания, которой Гослинг, как он думает, продал программу, оспорила право моего друга распространять её, а сообщение было в архиве на лентах, так что он не мог найти его. А Гослинг отрицал, что он дал ему разрешение. И тогда произошло нечто странное.  Он вёл переговоры с этой компанией, и казалось, что компанию в основном заботило, чтобы он не поставлял ничего напоминающего то, что они поставляли. Понимаете, он по-прежнему поставлял, и компания, где он работал, то есть Megatest, по-прежнему поставляла то же самое, что он дал мне, что на самом деле было старой версией Emacs Гослинга с его изменениями, так что он собирался заключить с ними соглашение, по которому он прекратил бы поставлять это и перешёл бы на GNU Emacs, и они потом признали бы, что у него, в конце концов, в самом деле было разрешение, и предположительно все были бы довольны. И эта компания вела со мной переговоры о том, что она хочет поставлять GNU Emacs, конечно, свободно, но также продавать разного рода услуги по поддержке, и они хотели нанять меня для помощи в этом. Так что есть что-то странное в том, что они потом передумали и отказались подписать соглашение, и вывесили в сети объявление, что мне не разрешено распространять программу. На самом деле они не сказали, что предпримут что-нибудь, они просто сказали, что неясно, могут ли они когда-нибудь сделать что-то. А этого было достаточно, чтобы запугать людей так, что никто не стал бы больше пользоваться ей, а это печально.

note: type: Content of: <div><p>
en: (Sometimes I think that perhaps one of the best things I could do with my life is: find a gigantic pile of proprietary software that was a trade secret, and start handing out copies on a street corner so it wouldn't be a trade secret any more, and perhaps that would be a much more efficient way for me to give people new free software than actually writing it myself; but everyone is too cowardly to even take it.)
ru: (Иногда я думаю, что, наверное, одно из лучших дел, которое я мог бы сделать в жизни,&mdash; это найти огромную кучу несвободных программ, которые были бы коммерческой тайной, и начать раздавать копии на каждом углу, так чтобы это не было бы больше коммерческой тайной, и наверное, это был бы гораздо более эффективный способ для меня дать людям новые свободные программы, чем на самом деле писать их самому; но все слишком трусливы, чтобы хотя бы взять их.)

note: type: Content of: <div><p>
en: So I was forced to rewrite all the rest that remained, and I did that, it took me about a week and a half.  So they won a tremendous victory.  And I certainly wouldn't ever cooperate with them in any fashion after that.
ru: Итак, я был принуждён переписать всё остальное, что оставалось, и я это сделал, это заняло у меня недели полторы. Так что они одержали грандиозную победу. А я уж никогда не стал бы сотрудничать с ними как бы то ни было после этого.

note: type: Content of: <div><p>
en: Then after GNU Emacs was reasonably stable, which took all in all about a year and a half, I started getting back to other parts of the system.  I developed a debugger which I called GDB which is a symbolic debugger for C code, which recently entered distribution.  Now this debugger is to a large extent in the spirit of DBX, which is a debugger that comes with Berkeley Unix.  Commands consist of a word that says what you want to do, followed by arguments.  In this debugger, commands can all be abbreviated, and the common commands have single character abbreviations, but any unique abbreviation is always allowed.  There are extensible HELP facilities, you can type HELP followed by any command or even subcommands, and get a lengthy description of how to use that command.  Of course you can type any expression in C, and it will print the value.
ru: Потом, когда GNU Emacs стал довольно стабилен, что заняло на всё про всё года полтора, я начал возвращаться к другим частям системы. Я разработал отладчик, который я назвал GDB, это символьный отладчик для программ на C, который недавно вошёл в дистрибутив. Сейчас это отладчик в значительной мере в духе DBX,&mdash; отладчика, который входит в берклиевскую Unix. Команды состоят из слова, которое говорит, что ты хочешь сделать, с последующими аргументами. В этом отладчике команды могут сокращаться, и частые команды сокращаются до одной буквы, но любое уникальное сокращение всегда допускается. В нём есть расширяемые средства справки, ты можешь напечатать HELP с последующей командой или даже подкомандами и получить обширное описание того, как применять эту команду. Конечно, можно напечатать любое выражение на C, и он выведет значение.

note: type: Content of: <div><p>
en: You can also do some things that are not usual in symbolic C debuggers, for example: You can refer to any C datatype at any memory address, either to examine the value, or to assign the value.  So for example if you want to store a floating point value in a word at a certain address, you just say: &ldquo;Give me the object of type FLOAT or DOUBLE at this address&rdquo; and then assign that.  Another thing you can do is to examine all the values that have been examined in the past.  Every value examined gets put on the &ldquo;value history.&rdquo; You can refer to any element in the history by its numerical position, or you can easily refer to the last element with just dollar-sign.  And this makes it much easier to trace list structure.  If you have any kind of C structure that contains a pointer to another one, you can do something like <code>PRINT&nbsp;*$.next</code>, which says: &ldquo;Get the next field out of the last thing you showed me, and then display the structure that points at.&rdquo; And you can repeat that command, and each time you'll see then next structure in the list.  Whereas in every other C debugger that I've seen the only way to do that is to type a longer command each time.  And when this is combined with the feature that just typing carriage-return repeats the last command you issued, it becomes very convenient.  Just type carriage-return for each element in the list you want to see.
ru: Можно также делать кое-что необычное для символьных отладчиков C, например, ты можешь сослаться на любой тип C по любому адресу и проверить величину либо присвоить значение. Так что, например, если хочешь разместить число с плавающей точкой по определённому адресу, ты просто говоришь: &ldquo;Дай мне объект типа FLOAT или DOUBLE по этому адресу&rdquo;, и затем присваиваешь его. Ещё ты можешь проверить все величины, которые проверялись в прошлом. Каждое проверяемое значение заносится в &ldquo;историю величины&rdquo;. Можно сослаться на любой элемент в истории по его порядковому номеру, или можно легко сослаться на последний элемент просто знаком доллара. А это значительно облегчает отслеживание структуры списка. Если есть любого рода структура C, которая содержит указатель на другую структуру, можно просто сделать что-нибудь вроде <code>PRINT *$.next</code>, это значит: &ldquo;Взять следующее поле из последнего, что ты мне показал, и показать структуру, которая указывает на это&rdquo;. И можно повторять эту команду, и каждый раз ты увидишь следующую структуру в списке. В то время как в любом другом отладчике C, который я видел, единственный способ сделать это&nbsp;&mdash; печатать каждый раз всё более длинную команду. А когда это сочетается с особенностью, что просто нажатие на возврат каретки повторяет последнюю команду, которую ты ввёл, это становится очень удобно. Просто нажимаешь возврат каретки для каждого элемента в списке, который хочешь просмотреть.

note: type: Content of: <div><p>
en: There are also explicitly settable variables in the debugger, any number of them.  You say dollar-sign followed by a name, and that is a variable.  You can assign these variables values of any C datatype and then you can examine them later.  Among the things that these are useful for are: If there's a particular value that you're going to examine, and you know you are going to refer to it a lot, then rather than remember its number in the history you might give it a name.  You might also find use for them when you set conditional breakpoints.  Conditional breakpoints are a feature in many symbolic debuggers, you say &ldquo;stop when you get to this point in the program, but only if a certain expression is true.&rdquo; The variables in the debugger allow you to compare a variable in the program with a previous value of that variable that you saved in a debugger variable.  Another thing that they can be used for is for counting, because after all, assignments are expressions in C, therefore you can do <code>$foo+=5</code> to increment the value of <code>$foo</code> by five, or just <code>$foo++</code> you can do.  You can even do this in a conditional breakpoint, so that's a cheap way of having it break the tenth time the breakpoint is hit, you can do <code>$foo--==0</code>.  Does everyone follow that? Decrement foo and if it's zero now, break.  And then you set <code>$foo</code> to the number of times you want it to skip, and you let it go.  You can also use that to examine elements of an array.  Suppose you have an array of pointers, you can then do:
ru: Ещё в отладчике есть переменные, которые можно явно присваивать, любое число переменных. Ты говоришь знак доллара с последующим именем, и это&nbsp;&mdash; переменная. Можно присваивать этим переменным значения любого типа C, и потом можно проверять их впоследствии. Кроме прочего, это полезно для такого: если есть конкретная величина, и ты знаешь, что ты собираешься часто обращаться к ней, тогда вместо того, чтобы запоминать её номер в истории, можно дать ей имя. Также можно найти им применение, когда устанавливаешь условные точки останова. Условные точки останова есть во многих символьных отладчиках, ты говоришь: &ldquo; остановиться, когда ты дойдёшь до этого места в программе, но только если данное выражение истинно&rdquo;. Переменные в отладчике позволяют сравнивать переменную в программе с предыдущим значением, которое ты сохранил в переменной отладчика. Другое, для чего их можно применять&nbsp;&mdash; это подсчёт, потому что, кроме прочего, присваивания&nbsp;&mdash; это выражения C, следовательно, ты можешь сделать <code>$foo+=5</code> для увеличения величины <code>$foo</code> на пять, или просто сделать <code>$foo++</code>. Это можно делать даже в условной точке останова, так что это дешёвый способ останавливать его каждый десятый раз, когда проходится точка, можно сделать <code>$foo--==0</code>. Всем понятно? Уменьшить foo, и если это&nbsp;&mdash; ноль, остановиться. И тогда ты устанавливаешь <code>$foo</code> равным числу раз, которое хочешь пропустить, и отпускаешь его. Ещё это можно применять для проверки элементов массива. Предположим, у тебя есть массив указателей, тогда ты можешь сделать:

note: type: Content of: <div><p>
en: But first you do
ru: Но сначала ты делаешь

note: type: Content of: <div><p>
en: Okay, when you do that [points at the <code>PRINT</code> expression], you get the zeroth element of X, and then you do it again and it gets the first element, and suppose these are pointers to structures, then you probably put an asterisk there [before the X in the PRINT expression] and each time it prints the next structure pointed to by the element of the array.  And of course you can repeat this command by typing carriage-return.  If a single thing to repeat is not enough, you can create a user-defined-command.  You can say <code>Define Mumble</code>, and then you give some lines of commands and then you say <code>end</code>.  And now there is defined a <code>Mumble</code> command which will execute those lines.  And it's very useful to put these definitions in a command file.  You can have a command file in each directory, that will be loaded automatically when you start the debugger with that as your working directory.  So for each program you can define a set of user defined commands to access the data structures of that program in a useful way.  You can even provide documentation for your user-defined commands, so that they get handled by the <code>help</code> features just like the built-in commands.
ru: Ладно, когда делаешь это [показывает на выражение <code>PRINT</code>], ты получаешь нулевой элемент X, а тогда делаешь это снова и получаешь первый элемент, и предположим, это указатели на структуры, тогда ты, наверное, поставишь здесь звёздочку [перед X в выражении <code>PRINT</code>], и каждый раз он выводит следующую структуру, на которую указывает элемент массива. И, конечно, ты можешь повторять эту команду, нажимая возврат каретки. Если повторять единственную команду недостаточно, можно создать пользовательскую команду. Можно сказать: <code>Define Mumble</code>, а потом ты даёшь несколько строк команд, а потом говоришь <code>end</code>. И уже определена команда <code>Mumble</code>, которая выполняет эти строки. И очень полезно помещать эти определения в командный файл. В каждом каталоге у тебя может быть командный файл, который будет автоматически загружаться, когда запускаешь отладчик, находясь в этом каталоге. Так что для каждой программы можно определить набор пользовательских команд для доступа к структурам данных,  полезный для этой программы. Можно даже снабжать свои пользовательские команды документацией, так что они станут обрабатываться средствами справки точно так же, как встроенные команды.

note: type: Content of: <div><p>
en: One other unusual thing in this debugger, is the ability to discard frames from the stack.  Because I believe it's important not just to be able to examine what's happening in the program you're debugging, but also to change it in any way conceivable.  So that after you've found one problem and you know what's wrong, you can fix things up as if that code were correct and find the next bug without having to recompile your program first.  This means not only being able to change the data areas in you program flexibly, but also being able to change the flow of control.  In this debugger you can change the flow of control very directly by saying:
ru: Другая необычная особенность этого отладчика&nbsp;&mdash; способность отбрасывать кадры из стека. Потому что я считаю, что важно не только иметь возможность проверять, что происходит в программе, которую ты отлаживаешь, но также изменять это любым мыслимым способом. Так что после того, как ты нашёл одну проблему и ты знаешь, что неправильно, можно поправить всё так, как если бы эта часть была бы правильной, и найти следующую ошибку без необходимости сначала перекомпилировать программу. Это означает не только возможность гибко менять данные в программе, но также возможность менять поток команд. В этом отладчике можно поменять поток команд очень просто, говоря:

note: type: Content of: <div><pre>
en: <code>SET $PC=&lt;some number&gt;</code>
ru: <code>SET $PC=&lt;некоторое число&gt;</code>

note: type: Content of: <div><p>
en: So you can set the program counter.  You can also set the stack pointer, or you can say
ru: Так можно устанавливать счётчик команд. Можно также устанавливать указатель стека, или можно сказать:

note: type: Content of: <div><pre>
en: <code>SET $SP+=&lt;something&gt;</code>
ru: <code>SET $SP+=&lt;что-нибудь&gt;,</code>

note: type: Content of: <div><p>
en: If you want to increment the stack pointer a certain amount.  But in addition you can also tell it to start at a particular line in the program, you can set the program counter to a particular source line.  But what if you find that you called a function by mistake and you didn't really want to call that function at all? Say, that function is so screwed up that what you really want to do is get back out of it and do by hand what that function should have done.  For that you can use the <code>RETURN</code> command. You select a stack frame and you say <code>RETURN</code>, and it causes that stack-frame, and all the ones within it, to be discarded as if that function were returning right now, and you can also specify the value it should return.  This does not continue execution; it pretends that return happened and then stops the program again, so you can continue changing other things.
ru: если хочешь увеличить указатель стека на определённую величину. Но вдобавок можно велеть ему начать с определённой строки в программе, можно установить счётчик команд на определённую строку исходного текста. Но что, если ты обнаружишь, что вызвал функцию по ошибке, что ты на самом деле вообще не хотел вызывать эту функцию? Скажем, эта функция так наворочена, что на самом деле ты хочешь вернуться из неё назад и сделать вручную то, что эта функция должна была сделать. Для этого можно воспользоваться командой <code>RETURN</code>. Ты выбираешь кадр стека и говоришь: <code>RETURN</code>, и это приводит к тому, что этот кадр стека и всё, что он включает, отбрасывается, как если бы эта функция завершилась прямо сейчас, и ты также можешь задать значение, которое она должна вернуть. Выполнение не продолжается; он делает вид, что произошло завершение, и снова останавливает программу, так что ты можешь продолжить изменять что-нибудь другое.

note: type: Content of: <div><p>
en: And with all these things put together you thus have pretty good control over what's going on in a program.
ru: И со всем этим, взятым вместе, ты, стало быть, отлично контролируешь то, что происходит в программе.

note: type: Content of: <div><p>
en: In addition one slightly amusing thing: C has string constants, what happens if you use a string constant in an expression that you're computing in the debugger? It has to create a string in the program you were debugging.  Well it does.  It sets up a call to MALLOC in that debugged program, lets MALLOC run, and then gets control back.  Thus it invisibly finds a place to put the string constant.
ru: В дополнение, одна немножко забавная вещица: в C есть строковые константы, что происходит, если использовать строковую константу в выражении, которое вычисляется в отладчике? Он вынужден создать строку в программе, которую ты отлаживаешь. Ну, он и создаёт. Он формирует вызов MALLOC в этой отлаживаемой программе, даёт MALLOC выполниться и затем получает назад управление. Итак, он невидимо находит место для размещения строковой константы.

note: type: Content of: <div><p>
en: Eventually when this debugger is running on the real GNU system, I intend to put in facilities in the debugger to examine all of the internal status of the process that is running underneath it.  For example to examine the status of the memory map, which pages exist, which are readable, which are writable, and to examine the inferior program's terminal status.  There already is a bit of a command; this debugger, unlike the debuggers on Unix, keeps the terminal status completely separate for the debugger and the program you're debugging, so that it works with programs that run in raw mode, it works with programs that do interrupt driven input, and there's also a command that enables you to find out something about the terminal settings at the program you're debugging is actually using.  I believe that in general a debugger should allow you to find out everything that's going on in the inferior process.
ru: В конце концов, когда этот отладчик будет выполняться в настоящей системе GNU, я намерен встроить в него средства для проверки всего внутреннего состояния процесса, который выполняется в отладчике. Например, для проверки состояния карты памяти,  какие страницы есть, какие можно читать, в какие&nbsp;&mdash; писать, для проверки состояния терминала программы на низком уровне. Кое-что из этого уже есть: этот отладчик, в отличие от отладчиков под Unix, полностью разделяет состояния терминала отладчика и программы, которую отлаживаешь, так что он работает с программами в режиме потоковой обработки, он работает с программами, которые производят ввод по прерыванию, также есть команда, позволяющая узнавать кое-что о настройках терминала, которые на самом деле установила программа, которую отлаживаешь. Я считаю, что отладчик вообще должен позволять узнавать всё, что происходит в низкоуровневом процессе.

note: type: Content of: <div><p>
en: There are two other main parts of the GNU system that already exist.  One is the new C compiler, and one is the TRIX kernel.
ru: Есть ещё две главных части системы GNU, которые уже существуют. Одна&nbsp;&mdash; это новый компилятор C, а вторая&nbsp;&mdash; это ядро TRIX.

note: type: Content of: <div><p>
en: The new C compiler is something that I've written this year since last spring.  I finally decided that I'd have to throw out PASTEL.  This C compiler uses some ideas taken from PASTEL, and some ideas taken from the University of Arizona Portable Optimizer.  Their interesting idea was to handle many different kinds of machines by generating simple instructions, and then combining several simple instructions into a complicated instruction when the target machine permits it.  In order to do this uniformly, they represent the instructions in algebraic notation.  For example, an ADD instruction might be represented like this:
ru: Новый компилятор C&nbsp;&mdash; это то, что я написал в этом году, начиная с этой весны. Я решил наконец выбросить PASTEL. Этот компилятор C пользуется некоторыми идеями из PASTEL и некоторыми идеями из Переносимого оптимизатора Аризонского университета. Их интересная идея была в том, чтобы адресовать много различных видов машин, генерируя простые команды, а затем комбинируя несколько простых команд в сложную команду, когда целевая машина это допускает. Чтобы делать это унифицированно, они представляют команды в алгебраической записи. Например, команду ADD можно было бы представить так:

note: type: Content of: <div><p>
en: This would be a representation inside their compiler for instruction to take the contents of register two, add four and store it in register three.  In this fashion you can represent any possible instruction for any machine.  So they actually did represent all the instructions this way and then when it came time to try to combine them, they would do this by substituting one expression into another, making a more complicated algebraic expression for the combined instruction.
ru: Это в их компиляторе представляло бы команду, которая берёт содержимое регистра два, прибавляет четыре и помещает результат в регистре три. Таким манером можно представить все возможные команды для любой машины. Итак, они и представили все команды таким образом, а затем, когда приходило время попытаться объединить их, они делали это, подставляя одно выражение в другое, составляя более сложное алгебраическое выражение для объединённой команды.

note: type: Content of: <div><p>
en: Sometimes depending on whether the result of the first instruction had any further use, it might be necessary to make a combined instruction with two assignment operators.  One for this value [pointing at ???] and another one with this value [pointing at ???] substituted in it with what came from the second instruction.  But if this value was only used that once, you could eliminate it after substituting for it; there'd be no need to compute it any more.  So it's actually somewhat complicated doing the substitution correctly checking that the intervening instructions don't change any of these values and other such things.  When you support such things as auto-increment and auto-decrement addressing, which I do now, you also have to do various checks for those to check for situations where what you're doing is not value preserving.
ru: Иногда, в зависимости от того, используется ли как-нибудь в дальнейшем результат первой команды, может быть необходимо сделать объединённую команду с двумя операторами присваивания. Одно&nbsp;&mdash; для этой величины [указывает на ???], а второе&nbsp;&mdash; с этой величиной [указывает на ???], заменённой на то, что приходит из второй команды. Но если этим значением пользовались только один раз, его можно исключить после подстановки; не нужно вычислять его ещё раз. Так что на самом деле несколько сложно сделать подстановку правильно, проверяя, что промежуточные команды не меняют никакую из этих величин, и тому подобное. Когда поддерживаешь такие вещи, как адресация с автоинкрементом или автодекрементом, а я это сейчас делаю, тебе приходится также делать разные проверки этого, чтобы проверять ситуации, где то, что ты делаешь, не сохраняет величины.

note: type: Content of: <div><p>
en: But after checking all those things, then you take the substituted combined expression and put it through a pattern matcher, which recognizes all the valid instructions of your chosen target machine.  And if it's recognized, then you replace those two instructions with the combined one, otherwise you leave them alone.  And their technique is to combine two or three instructions related by data flow in this way.
ru: Но после проверки всего этого ты берёшь подставленное объединённое выражение и пропускаешь его через распознаватель комбинаций, который распознаёт все допустимые команды твоей выбранной целевой машины. А если оно распознано, тогда ты заменяешь те две команды одной комбинированной, в противном случае оставляешь их по одной. Их техника заключается в том, чтобы комбинировать две или три команды, связанные потоком данных, таким образом.

note: type: Content of: <div><p>
en: In the Arizona compiler, they actually represent things as text strings like this, and their compiler is horribly slow.  First I had some idea of just using their compiler and making changes in it, but it was clear to me I had to rewrite it entirely to get the speed I wanted, so I have rewritten it to use list structure representations for all these expressions.  Things like this:
ru: В аризонском компиляторе они на самом деле представляют всё как текстовые строки вроде этой, и их компилятор ужасно медленный. Сперва у меня была мысль просто взять их компилятор и доработать его, но мне было ясно, что мне придётся полностью переписать его, чтобы получить ту скорость, какую я хотел, так что я переписал его, чтобы он использовал представления списочной структуры для всех этих выражений. Что-то вроде этого:

note: type: Content of: <div><p>
en: This looks like Lisp, but the semantics of these are not quite LISP, because each symbol here is one recognized specially.  There's a particular fixed set of these symbols that is defined, all the ones you need.  And each one has a particular pattern of types of arguments, for example: <code>reg</code> always has an integer, because registers are numbered, but <code>+</code> takes two subexpressions, and so on.  And with each of these expressions is also a data type which says essentially whether it's fixed or floating and how many bytes long it is.  It could be extended to handle other things too if you needed to.
ru: Это выглядит, как LISP, но семантика этого не совсем, как в LISP, потому что каждый символ здесь распознаётся обособленно. Есть конкретный фиксированный набор этих символов, который определён, всё, что нужно. И у каждого есть конкретная комбинация типов параметров, например, у <code>reg</code> это всегда целое, потому что регистры перенумерованы, а <code>+</code> принимает два подвыражения, и так далее. И у каждого из этих выражений есть также тип данных, который по существу говорит, фиксированная запятая или плавающая, и сколько байтов&nbsp;&mdash; длина. Это можно расширить, чтобы принимать во внимание другие аспекты, если понадобится.

note: type: Content of: <div><p>
en: And the way I do automatic register allocation is that when I initially generate this code, and when I do the combination and all those things, for every variable that conceivably go into a register, I allocate what I call a pseudo register number, which is a number starting at sixteen or whatever is too high to be a real register for your target machine.  So the real registers are numbered zero to fifteen or whatever and above that comes pseudo registers.  And then one of the last parts of the compiler consists of going through and changing all the pseudo registers to real registers.  Again it makes a conflict graph, it sees which pseudo registers are alive at the same point and they of course can't go in the same real register, and then it tries packing pseudo registers into real registers as much as it can, ordering them by priority of how important they are.
ru: А автоматическое распределение регистров я делаю так, что когда я изначально генерирую этот код и когда я делаю объединение и всё такое, для каждой переменной, которую только можно разместить в регистре, я выделяю то, что я называю номером псевдорегистра, то есть номер, начинающийся с шестнадцати или чего угодно, слишком большого, чтобы быть регистром в вашей целевой машине. Итак, настоящие регистры нумеруются от нуля до пятнадцати или чего-то ещё, а сверх того идут псевдорегистры. И потом одна из последних частей компилятора состоит из прохождения и замены всех псевдорегистров настоящими регистрами. Он опять строит граф конфликтов, он видит псевдорегистры, живущие в одной и той же точке, и они, конечно, не могут пойти в один и тот же настоящий регистр, а потом он пытается упаковать псевдорегистры в настоящие регистры, сколько сможет, назначая их по приоритету того, насколько они важны.

note: type: Content of: <div><p>
en: And finally it then has to correct the code for various problems, such as happen when there were pseudo registers that don't fit in the real registers, that had to be put into stack slots instead.  When that happens on certain machines, some of the instructions may become invalid.  For example on the 68000 you can add a register into memory and you can add memory into register, but you can't add one memory location into another.  So if you have an ADD instruction, and you're headed for a 68000 and both of the things end up in memory, it's not valid.  So this final pass goes through and copies things into registers and out of registers as needed to correct those problems.
ru: И наконец, потом он должен исправить код из-за различных проблем, таких, как те, что возникают, когда остались псевдорегистры, которые не уместились в настоящие регистры, которые приходится вместо этого помещать в ячейки стека. Когда это случается на определённых машинах, некоторые команды могут стать недопустимыми. Например, на 68000 можно прибавить регистр к памяти и память к регистру, но нельзя прибавлять одно место памяти к другому. Так что если у тебя команда сложения и ты компилируешь для 68000 и оба операнда оказываются в памяти, она недопустима. Так что этот завершающий проход просматривает и копирует всё в регистры и из регистров, как это нужно для решения этих проблем.

note: type: Content of: <div><p>
en: Problems can also arise with index registers.  If you're trying to index by something, then most of the time that code will become invalid if the index quantity is in memory, except in a few cases on some machines where you can it with indirect addressing.  In the cases when you're doing auto-increment on an index register you may have to copy the value into a register, do the instruction, and then copy the incremented value back to the memory slot where it really lives.
ru: Проблемы также могут возникать с индексными регистрами. Если пытаешься индексировать чем-нибудь, то код всё время становится недопустимым, если индексирующая величина находится в памяти, за исключением немногих случаев на некоторых машинах, где косвенной адресацией это делать можно. В случаях, когда делаешь автоинкремент над индексным регистром, может понадобиться скопировать величину в регистр, выполнить команду, а затем скопировать увеличенное значение назад в ячейку памяти, где оно на самом деле живёт.

note: type: Content of: <div><p>
en: There's got room for a lot of hair, and I've not finished implementing all the hair needed to make really fully efficient.
ru: Там есть место для большой путаницы, и я ещё не кончил реализовывать все тонкости, которые нужны, чтобы сделать по-настоящему полностью эффективным.

note: type: Content of: <div><p>
en: This compiler currently works by having a parser which turns C code into effectively a syntax tree annotated with C datatype information.  Then another pass which looks at that tree and generates code like this [LISP like code].  Then several optimization passes.  One to handle things like jumps across jumps, jumps to jumps, jumps to <code>.+1</code>, all of which can be immediately simplified.  Then a common subexpression recognizer, then finding basic blocks, and performing dataflow-analysis, so that it can tell for each instruction which values are used in that instruction and never used afterward.  And also linking each instruction to the places where the values it uses were generated, so if I have one instruction which generates pseudo register R[28], and then another instruction later which uses R[28] and it's the first place to use R[28], I make the second one point back to the first one, and this pointer is used to control the attempts to combine the instructions.  You don't combine adjacent instructions, you combine an instruction that uses a value with the instruction that produced that value.  Even if there are other instructions in between, they don't matter for this, you just have to check them to make sure they don't do anything to interfere.  Then after the combiner comes the dynamic register allocator, and finally something to convert it into assembly code.
ru: Этот компилятор в настоящее время работает с синтаксическим анализатором, который обращает программу C по существу в синтаксическое дерево, аннотированное сведениями о типах данных C. Затем другой проход, который смотрит на это дерево и генерирует код вроде этого [код, похожий на LISP]. Потом несколько проходов оптимизации. Один&nbsp;&mdash; чтобы обрабатывать вещи вроде переходов через переходы, переходы на переходы, переходы на <code>.+1</code>, всё, что может быть упрощено немедленно. Потом распознаватель общих подвыражений, потом нахождение базовых блоков и выполнение анализа потоков данных, чтобы знать, какие величины используются в каждой команде, и никогда&nbsp;&mdash; после неё. А также связывание каждой команды с местами, где величины, которые ей нужны, генерируются, так что если у меня есть одна команда, которая генерирует псевдорегистр R[28], а потом другая команда позднее, которая пользуется этим псевдорегистром, и это&nbsp;&mdash; первое место, где используется R[28], я заставляю второе место указывать на первое, и этот указатель применяется в управлении попытками объединения команд. Объединяются не смежные команды, объединяется команда, использующая величину, с командой, которая произвела эту величину. Даже если есть другие команды между ними, в данном случае это не важно,  нужно просто проверить их и убедиться, что они никак не вмешиваются. Потом, после объединителя, к делу приступает динамический распределитель регистров, и наконец нечто, преобразующее это в ассемблерный код.

note: type: Content of: <div><p>
en: In the Arizona compiler the instruction recognizer was generated with LEX.  Your machine description was simply a LEX program that LEX would turn into a C function to recognize valid instructions as strings.  What I have is instead a special purpose decision tree that's generated from a machine description written in this syntax as if it were LISP.  And this recognizer is used as a subroutine for many different parts of the compiler.
ru: В аризонском компиляторе распознаватель команд генерировался компилятором LEX. Описание машины&nbsp;&mdash; это просто программа на LEX, которую LEX превращает в функцию C для распознавания допустимых команд в виде строк. А у меня вместо этого&nbsp;&mdash; дерево решений особого назначения, которое генерируется из описания машины, написанном в рамках этого синтаксиса, как если бы это был LISP. И этот распознаватель служит подпрограммой во многих разных частях компилятора.

note: type: Content of: <div><p>
en: Currently this compiler runs about as fast as PCC.  It runs noticeably faster if you tell it not to do the hairy register allocation, in which case it allocates registers the same way as PCC does.  In its super hairy mode it does a much better job of allocating registers than PCC, and I observe that for the VAX it generates the best code I've seen from any C compiler on the VAX.
ru: В настоящий момент этот компилятор примерно так же быстр, как PCC. Он выполняется заметно быстрее, если ему не велеть делать запутанные размещения регистров, в этом случае он размещает регистры так же, как PCC. В своём сверхзапутанном режиме он размещает регистры гораздо лучше, чем PCC, и по моим наблюдениям, на VAX он генерирует лучший код, который я когда-либо видел у компилятора C на VAX.

note: type: Content of: <div><p>
en: For the 68000 the code is still not ideal.  I can see places where early stages do things that are not the best, because it can't fully look ahead.  It has a choice in an early stage, and it does the thing that it thinks is going to be best, but really if it did the other one, a later stage is actually smart enough to do something even better.  But the early stage doesn't know what the later stage is going to do, so I have more work to do on some of these things.
ru: Для 68000 код ещё не идеален. Я знаю места, где ранние стадии выполняются не наилучшим образом, потому что он не может полностью заглянуть вперёд. У него есть выбор на ранней стадии, и он делает то, что по его мнению обещает быть лучше всего, но на самом деле, если бы он сделал по-другому, более поздняя стадия достаточно прозорлива, чтобы сделать что-нибудь ещё лучше. Но ранняя стадия не знает, что собирается делать поздняя стадия, так что мне нужно ещё поработать кое над чем из этого.

note: type: Content of: <div><p>
en: Sometimes this causes it to free up registers unnecessarily.  Because when things wind up in memory and it needs to copy them into registers, it needs to get registers to copy them into.  This means taking registers that it has already allocated to, and kicking those temporary quantities out to stack slots.  Of course this may invalidate more instructions now that those things are in memory, not registers, so it has to check again and again.  Sometimes it thinks it has to copy things to registers and really it isn't going to have to, so it may free up too many things and thus not use all the registers that it could.
ru: Иногда это приводит к ненужному освобождению регистров. Потому что когда всё закручивается в памяти и ему нужно копировать это в регистры, нужно получить регистры для копий. Это означает, что надо занять регистры, которые уже были распределены, и выпихнуть временные величины в ячейки стека. Конечно, это может сделать недопустимыми новые команды, потому что теперь это всё в памяти, а не в регистрах, так что ему приходится проверять это снова и снова. Иногда он думает, что ему надо копировать что-то в регистры, а на самом деле ему это не потребуется, так что он может освободить слишком много всего, и стало быть не пользоваться регистрами, которыми мог бы.

note: type: Content of: <div><p>
en: <span>[Question: Do you have a code generator for 32000?]</span> Not yet, but again, it's not a code generator it's just a machine description that you need.  A list of all the machine instructions described in this [LISP like] form.  So in fact aside from the work of implementing the idea of constraints on which arguments can be in registers and which kind of registers, which is something which was needed for the 68000 and was not needed for the VAX, the work of porting this compiler from the VAX to the 68000 just took a few days.  So it's very easy to port.
ru: <span>[Вопрос: У вас есть генератор кода для 32000?]</span> Пока нет, но, опять-таки, вам нужен будет не генератор кода, а просто описание машины. Список всех машинных команд в этом [лиспоподобном] виде. Так что фактически кроме работы по воплощению идеи об ограничениях на то, какие аргументы могут быть в регистрах и в каких видах регистров, что было нужно для 68000 и не нужно для VAX, работа по переносу этого компилятора с VAX на 68000 заняла всего несколько дней. Так что переносить очень легко.

note: type: Content of: <div><p>
en: The compiler currently generates assembler code and it can generate debugging information either in the format that DBX wants, or in the special internal format of GDB.  I'd say the only work needed on this compiler is in three areas.  One: I have to add a &ldquo;profiling&rdquo; feature, like the one that the Unix compilers have.  Two: I have to make these register allocation things smarter, so that I can stop seeing stupid things appearing in the output.  And three: There are various bugs, things that doesn't handle correctly yet, although it has compiled itself correctly.  I expect this will just take a few months, and then I will release the compiler.
ru: В настоящее время компилятор генерирует ассемблерный код и может генерировать отладочные данные как в формате, который понимает DBX, так и в особом внутреннем формате GDB. Я бы сказал, компилятор требует работы только в трёх областях. Первая: мне надо добавить возможность &ldquo;профилирования&rdquo; вроде той, которая есть в компиляторах Unix. Вторая: мне надо сделать эти распределения регистров поумнее, чтобы больше не видеть глупостей в выходных файлах. И третья: есть различные ошибки, вещи, которые пока не отрабатываются правильно, хотя он скомпилировал себя верно. Я ожидаю, что это займёт всего несколько месяцев, и тогда я выпущу компилятор.

note: type: Content of: <div><p>
en: The other sizable part of the system that exist, is the kernel.  <span>[Question: A pause?]</span> Ah, yeah I guess we've forgotten about breaks.  Why don't I finish talking about the kernel, which should only take about five minutes, and then we can take a break.
ru: Другая немалая часть системы, которая существует&nbsp;&mdash; это ядро. <span>[Вопрос: перерыв?]</span> А, да, по-моему, мы забыли про перерывы. Почему бы мне не закончить про ядро, это должно занять только около пяти минут, а потом мы можем сделать перерыв.

note: type: Content of: <div><p>
en: Now, for the kernel I am planning to use a system called TRIX (it doesn't stand for anything that I know of) which was developed as a research project at MIT.  This system is based on Remote Procedure Call.  Thus programs are called domains.  Each domain is a address space and various capabilities, and a capability is none other than the ability to call a domain.  Any domain can create &ldquo;capability ports&rdquo; to call it, and then it can pass these ports to other domains, and there is no difference between calling the system and calling another user domain.  In fact you can't tell which you have.  Thus it is very easy to have devices implemented by other user programs.  A file system could be implemented by a user program, transparently.  It's also transparent to communicate across networks.  You think that you're directly calling another domain, but really you're calling the network server domain. It takes the information that you gave in the call, and passes this over the network to another server program which then calls the domain that you're trying to talk to.  But you and that other domain see this as happening invisibly.
ru: Ну вот, в качестве ядра я планирую взять систему под названием TRIX (насколько я знаю, это ничего не означает), которая возникла как исследовательский проект в MIT. Эта система основана на удалённом вызове процедур. Так что программы называются доменами. Каждый домен&nbsp;&mdash; это адресное пространство и различные допуски, а допуск&nbsp;&mdash; это не что иное, как способность вызывать домен. Любой домен может создать &ldquo;порты допуска&rdquo; для вызова, и потом он может передать эти порты другим доменам, и нет никакой разницы между вызовом системы и вызовом другого пользовательского домена. Фактически ты не знаешь, что у тебя. Таким образом, очень легко получить реализацию устройств другими пользовательскими программами. Файловую систему можно реализовать пользовательской программой, прозрачно. Сообщения между сетями тоже прозрачны. Ты думаешь, что прямо вызываешь другой домен, а на самом деле ты вызываешь домен сетевого сервера. Он получает данные, которые ты даёшь в вызове, и передаёт их через сеть программе другого сервера, который затем вызывает домен, с которым ты пытаешься общаться. Но вы с тем другим доменом видите это как происходящее невидимо.

note: type: Content of: <div><p>
en: The TRIX kernel runs, and it has a certain limited amount of Unix compatibility, but it needs a lot more.  Currently it has a file system that uses the same structure on disk as the ancient Unix file system does.  This made it easier to debug the thing, because they could set up the files with Unix, and then they could run TRIX, but that file system doesn't have any of the features that I believe are necessary.
ru: Ядро TRIX запускается, и у него есть определённое ограниченное количество совместимости с Unix, но нужно гораздо больше. В настоящее время у него есть файловая система с той же структурой диска, как в древней файловой системе Unix. Это облегчило отладку, потому что можно организовать файлы в Unix, а потом запустить TRIX, но у той файловой системы нет ни одной из особенностей, которые, как я полагаю, необходимы.

note: type: Content of: <div><p>
en: Features that I believe must be added include: Version numbers, undeletion, information on when and how and where the file was backed up on tape, atomic superseding of files.  I believe that it is good that in Unix when a file is being written, you can already look at what's going there, so for example, you can use <code>tail</code> to see how far the thing got, that's very nice.  And if the program dies, having partly written the file, you can see what it produced.  These things are all good, but, that partly written output should not ever be taken for the complete output that you expected to have eventually.  The previous version of that should continue to be visible and used by everyone who tries to use it, until the new version is completely and correctly made.  This means that the new version should be visible in the file system but not under the name it is supposed to have.  It should get renamed when it's finished.  Which is by the way what happens in ITS, although there each user program has to do this explicitly.  For Unix compatibility with the user programs, it has to happen invisibly.
ru: Особенности, которые, как я считаю, должны быть добавлены, включают номера версий, восстановление удалённых файлов, сведения о том, когда и как и где файл заархивирован на ленте, атомарное замещение файлов. Я считаю, что в Unix хорошо, что когда файл записывается, можно уже посмотреть на то, что там происходит, например, можно вызвать <code>tail</code> и узнать, как далеко зашло дело, это очень славно. А если программа умирает, частично записав файл, видно, что она сделала. Всё это хорошо, но тот частично записанный вывод никогда не должен приниматься за полный вывод, который ты ожидал в конце концов получить. Предыдущая версия этого должна продолжать быть видимой, чтобы каждый, кто пытается пользоваться этим, пользовался ею, пока новая версия не будет сделана полностью и верно. Это значит, что новая версия должна быть видима в файловой системе, но не под тем именем, которое предполагалось. Её следует переименовывать, когда она завершена. Это, между прочим, то, что происходит в ITS, хотя там каждая пользовательская программа делает это явно. Для совместимости с Unix и пользовательскими программами это нужно делать невидимо.

note: type: Content of: <div><p>
en: I have a weird hairy scheme to try to make version numbers fit with the existing Unix user programs.  And this is the idea that you specify a file name leaving the version number implicit, if you just specify the name in the ordinary way.  But if you wish to specify a name exactly, either because you want to state explicitly what version to use, or because you don't want versions at all, you put a point at the end of it.  Thus if you give the filename <code>FOO</code> it means &ldquo;Search the versions that exists for FOO and take the latest one.&rdquo; But if you say <code>FOO.</code> it means &ldquo;use exactly the name FOO and none other.&rdquo; If you say <code>FOO.3.</code> it says &ldquo;use exactly the name FOO.3&rdquo; which of course is version three of FOO and none other.  On output, if you just say <code>FOO</code>, it will eventually create a new version of FOO, but if you say <code>FOO.</code> it will write a file named exactly FOO.
ru: У меня есть хитро запутанная схема, как попытаться заставить номера версий уложиться в существующие пользовательские программы Unix. Это&nbsp;&mdash; идея, что ты указываешь имя файла, оставляя номер версии неявным, если ты просто указываешь имя файла обычным образом. Но если ты хочешь указать точное имя, либо потому, что ты хочешь явно задать, какую версию брать, либо потому, что ты вообще не хочешь никаких версий, ты помещаешь в конец точку. Так что если задаёшь имя файла <code>FOO</code>, это значит: &ldquo;Искать версии, которые есть у FOO, и взять самую свежую&rdquo;. Но если ты говоришь <code>FOO.</code>, это значит: &ldquo;взять в точности имя FOO, и ничто другое&rdquo;. Если ты говоришь <code>FOO.3.</code>,  это говорит: &ldquo;взять в точности имя <code>FOO.3</code>&rdquo;, то есть, конечно, версию три FOO, и никакую другую. При выводе, если ты просто говоришь <code>FOO</code>, она в конце концов создаст новую версию FOO, но если ты говоришь <code>FOO.</code>, она запишет файл, названный в точности &ldquo;FOO&rdquo;.

note: type: Content of: <div><p>
en: Now there's some challenges involved in working out all the details in this, and seeing whether there are any lingering problems, whether some Unix software actually breaks despite feeding them names with points in them and so on, to try to make it get the same behavior.
ru: Ну, есть кое-какие сложности, связанные с проработкой всех деталей этого и обследованием, не кроются ли там какие-нибудь проблемы, не выйдут ли из строя некоторые программы Unix, несмотря на то, что им скормят имена с точками и так далее, чтобы попытаться добиться от них того же поведения.

note: type: Content of: <div><p>
en: I would expect that when you open a file for output whose name ends in a point, you should actually open that name right away, so you get the so you get the same Unix behavior, the partially written output is immediately visible, whereas when you output a name that doesn't end in a point, the new version should appear when you close it, and only if you close it explicitly. If it gets closed because the job dies, or because the system crashes or anything like that, it should be under a different name.
ru: Я бы ожидал, что когда открываешь файл для вывода с именем, заканчивающемся на точку, на самом деле надо открыть это имя, так что получается... так что получается то же самое поведение Unix, частично записанные данные видимы немедленно, в то время, как когда открываешь имя, которое не заканчивается на точку, должна появиться новая версия, когда закрываешь его, и только если ты закроешь его явно. Если он оказывается закрыт оттого, что задача умирает, или из-за отказа системы, или что угодно вроде этого, он должен быть под другим именем.

note: type: Content of: <div><p>
en: And this idea can be connected up to &ldquo;star matching,&rdquo; by saying that a name that doesn't end in a point is matched against all the names without their version numbers, so if a certain directory has files like this:
ru: И эту идею можно соединить с &ldquo;выбором звёздочкой&rdquo;, говоря, что имя, которое не заканчивается на точку, подходит ко всем именам без номеров их версий, так что если в определённом каталоге есть, например, файлы:

note: type: Content of: <div><p>
en: If I say <code>*</code>, that's equivalent to
ru: Если я говорю  <code>*</code>, это эквивалентно

note: type: Content of: <div><p>
en: because it takes all the names and gets rid of their versions, and takes all the distinct ones.  But if I say <code>*.</code> then it takes all the exact names, puts a point after each one, and matches against them.  So this gives me all the names for all the individual versions that exist.  And similar, you can see the difference between <code>*.c</code> and <code>*.c.</code> this [the first] would give you essentially versionless references to all the <code>.c</code> files, whereas this [the second] will give you all the versions &hellip; well this actually wouldn't, you'd have to say <code>*.c.*.</code>; I haven't worked out the details here.
ru: потому что она берёт все имена и отбрасывает их версии, и берёт все различные имена. Но если я говорю: <code>*.</code>, тогда она берёт все имена в точности, ставит точку после каждого, и сопоставляет с ними. Так что это даёт мне все имена для всех индивидуальных версий, которые существуют. И аналогично, понятна разница между <code>*.c</code> и <code>*.c.</code>: это [первое] даст по существу ссылки на все файлы <code>*.c</code> без версий, в то время как это [второе] даст все версии ... ну, на самом деле не даст, надо сказать <code>*.c.*.</code>; здесь я ещё не продумал деталей.

note: type: Content of: <div><p>
en: Another thing, that isn't a user visible feature and is certainly compatible to put in, is failsafeness in the file system.  Namely, by writing all the information on disk in the proper order, arranging that you can press &ldquo;<kbd>halt</kbd>&rdquo; at any time without ever corrupting thereby the file system on disk.  It is so well known how to do this, I can't imagine why anyone would neglect it.  Another idea is further redundant information.  I'm not sure whether I'll do this or not, but I have ideas for how to store in each file all of its names, and thus make it possible if any directory on disk is lost, to reconstruct it from the rest of the contents of the disk.
ru: Другая вещь, которая невидима пользователю и которую определённо можно внести без потери совместимости,&mdash; это стойкость файловой системы к сбоям. А именно, записывая все данные на диск в нужном порядке, устроить так, чтобы можно было нажать <kbd>останов</kbd> в любое время без какого-либо нарушения файловой системы на диске. Как это делать, настолько хорошо известно, я просто не могу представить, почему кто-то мог бы пренебрегать этим. Другая идея&nbsp;&mdash; ещё более избыточная информация.  Я не уверен, буду я это делать или нет, но у меня есть идеи, как хранить в каждом файле все его имена, и таким образом сделать возможным, если любой каталог на диске пропадёт, реконструировать его по остальному содержимому диска.

note: type: Content of: <div><p>
en: Also I think I know how to make it possible to atomically update any portion of a file.  Thus if you want to replace a certain subrange of a file with new data in such a fashion that any attempt to read the file will either see only the old data, or only the new data.  I believe I can do that, without any locking even.
ru: Также я думаю, что я знаю, как сделать возможным атомарное обновление любой части файла. Так, что если хочешь поменять определённый подобъём файла на новые данные таким манером, чтобы любая попытка чтения файла видела либо только старые данные, либо только новые данные. Я считаю, я могу это сделать, даже безо всякого блокирования.

note: type: Content of: <div><p>
en: For network support, I intend eventually to implement TCP/IP for this system.  I also think it's possible to use KERMIT to get something effectively equivalent to UUCP.
ru: Что касается поддержки сети, я намерен когда-нибудь реализовать TCP/IP для этой системы. Я также думаю, что можно воспользоваться KERMIT, чтобы получить что-нибудь эквивалентное UUCP.

note: type: Content of: <div><p>
en: A shell I believe has already been written.  It has two modes, one imitating the BOURNE shell, and one imitating the C-shell in the same program.  I have not received a copy of it yet, and I don't know how much work I'll have to do on it.  Also many other utilities exists.  A MAKE exists, LS, there's a YACC replacement called BISON which is being distributed.  Something pretty close to a LEX exists, but it's not totally compatible, it needs some work.  And, in general what remains to be done is much less that what's been done, but we still need lots of people to help out.
ru: Командный интерпретатор, я считаю, уже написан. У него есть два режима: один имитирует командный интерпретатор BOURNE, а другой имитирует C-shell в той же программе. Я ещё не получил его копию, и я не знаю, сколько работы он от меня потребует. Также существует много других утилит. Существует MAKE, LS, есть замена YACC под названием BISON, который сейчас поставляется. Существует кое-что весьма близкое к LEX, но оно не полностью совместимо, оно требует некоторой работы. И в общем, то, что остаётся сделать, гораздо меньше того, что сделано, но мы всё ещё нуждаемся в помощи большого числа людей.

note: type: Content of: <div><p>
en: People always ask me &ldquo;When is it going to be finished?&rdquo; Of course I can't know when it's going to be finished, but that's the wrong question to ask me.  If you were planning to pay for it, it would make sense for you to want to know exactly what are you going to get and when.  But since you're not going to pay for it, the right question for you to ask is &ldquo;how can you help make it get finished sooner?&rdquo; I have a list of projects, it is on a file at MIT, and people who are interested in helping could send me mail at this Internet address, and I will send back a list of projects.  (I wonder if this is will work (looking at the chalk)).  Is this readable? This is &ldquo;RMS@GNU.ORG&rdquo; (just follow the bouncing ball.)  And now let's take a break, and after the break, I will say some really controversial things.  So don't leave now.  If you leave now, you're going to miss the real experience.
ru: Люди меня всегда спрашивают: &ldquo;Когда это может быть завершено?&rdquo; Конечно, я не могу знать, когда это будет завершено, но задавать мне этот вопрос&nbsp;&mdash; неправильно. Если бы вы планировали платить за это, для вас имело бы смысл пожелать узнать в точности, что вы собираетесь получить и когда. Но поскольку вы платить за это не собираетесь, правильным для вас было бы спрашивать: &ldquo;чем вы можете помочь ускорить завершение?&rdquo; У меня есть список проектов, он в файле в MIT, и люди, заинтересованные в оказании помощи, могли бы посылать мне почту по этому адресу Internet, а я вышлю в ответ список проектов. (Интересно, работает ли это (глядя на мел)). Это видно? Это &ldquo;RMS@GNU.ORG&rdquo; (просто следите за скачущим мячиком). А теперь давайте сделаем перерыв, а после перерыва я скажу нечто действительно противоречивое. Так что не уходите пока. Если вы уйдёте сейчас, вы пропустите самое интересное.

note: type: Content of: <div><p>
en: <strong> [Here we had a 15 min. break] </strong>
ru: <strong>[Тут у нас был пятнадцатиминутный перерыв.]</strong>

note: type: Content of: <div><p>
en: I've been asked to announce how you can get copies of GNU software.  Well, one way of course is if you know a friend who has a copy, you can copy it, but if you don't know a friend who has a copy, and you're not on the Internet, you can't FTP it, then you can always order a distribution tape, and send some money to the Free Software Foundation.  Of course free programs is not the same thing as free distribution.  I'll explain this in detail later.
ru: Меня просили объявить, как можно получить копии программ GNU. Ну, один способ, конечно, если у вас есть знакомый приятель, у которого есть копия, вы можете скопировать, но если у вас нет знакомого приятеля с копией и вы не подключены к Internet, не можете взять её по FTP, то вы всегда можете заказать ленту с дистрибутивом и послать денег в Фонд свободного программного обеспечения. Разумеется, свободные программы&nbsp;&mdash; это не то же самое, что бесплатное распространение. Я дальше подробно это объясню.

note: type: Content of: <div><p>
en: Here I have an EMACS manual, of the nicely printed variety.  It has been phototypeset and then offset printed.  Although you can also print it yourself from the sources that come in the EMACS distribution, you can get these copies from the Free Software Foundation.  You can come afterwards and look at this and also this contains an order for you might copy some information from, and this [front] picture has also sometimes been enjoyed.  This [pointing at a figure being chased by RMS riding a gnu] is a scared software hoarder, I'll be talking about him in a moment.
ru: Вот у меня руководство по EMACS, прекрасно изданное. С него сделали диапозитивы и напечатали офсетным способом. Хотя вы тоже можете сами распечатать его из исходных текстов, которые включены в дистрибутив EMACS, вы можете получить эти копии из Фонда свободного программного обеспечения. Потом можно будет подойти и посмотреть, и в нём также есть бланк заказа, оттуда можно списать кое-какие данные, и эта картинка [на обложке] тоже некоторым понравилась. Это [указывая на фигуру, за которой гонится RMS верхом на гну]&nbsp;&mdash; испуганный программозапиратель, я в своё время о нём расскажу.

note: type: Content of: <div><p>
en: Software is a relatively new phenomenon.  People started distributing software perhaps thirty years ago.  It was only about twenty years ago that someone had the idea of making a business about it.  It was an area with no tradition about how people did things, or what rights anybody had.  And there were several ideas for what other areas of life you might bring traditions from by analogy.
ru: Программное обеспечение&nbsp;&mdash; относительно новое явление. Люди начали распространять программы, наверное, тридцать лет назад. Только около двадцати лет назад у кого-то возникла мысль сделать из этого предприятие. Это была отрасль без традиций того, как люди делают дела или какие права есть у кого-либо. И было несколько идей о том, из каких других областей жизни можно заимствовать традиции по аналогии.

note: type: Content of: <div><p>
en: One analogy that is liked by a lot of professors in Europe, is that between programs and mathematics.  A program is sort of a large formula.  Now, traditionally nobody can own a mathematical formula.  Anybody can copy them and use them.
ru: Одна из аналогий, за которую были многие профессора в Европе,&mdash; аналогия между программами и математикой. Программа&nbsp;&mdash; это что-то вроде большой формулы. Ну, традиционно никто не может владеть математической формулой. Любой может копировать их и пользоваться ими.

note: type: Content of: <div><p>
en: The analogy that's most meaningful to ordinary people is with recipes.  If you think about it, the thing that you have in ordinary life that's most like program is a recipe, it's instructions for doing something.  The differences come because a recipe is followed by a person, not by a machine automatically.  It's true there's no difference between source code and object code for a recipe, but it's still the closest thing.  And no-one is allowed to own a recipe.
ru: Аналогия, которая понятнее всего для простых людей&nbsp;&mdash; это рецепты. Если подумать, то вещь, с которой встречаешься в обычной жизни и которая больше всего похожа на программу&nbsp;&mdash; это рецепт, это указания по выполнению чего-нибудь. Различия возникают, потому что рецепту следует человек, а не машина автоматически. Верно, что исходный текст и объектный код в данном случае не различаются, но это всё же самое близкое. И никому не позволено владеть рецептом.

note: type: Content of: <div><p>
en: But the analogy that was chosen was the analogy with books, which have copyright.  And why was this choice made? Because the people that had the most to gain from making that particular choice were allowed to make the decision.  The people who wrote the programs, not the people who used the programs, were allowed to decide, and they decided in a completely selfish fashion, and as a result they've turned the field of programming into an ugly one.
ru: Но выбрана была аналогия с книгами, у которых есть авторские права. А почему был сделан такой выбор? Потому что людям, которым этот конкретный вариант был выгоднее всего, было позволено сделать этот выбор. Людям, которые писали программы, а не людям, которые ими пользовались, было позволено решать, и они приняли совершенно эгоистичное решение, и в результате они превратили отрасль программирования в безобразие.

note: type: Content of: <div><p>
en: When I entered the field, when I started working at MIT in 1971, the idea that programs we developed might not be shared was not even discussed.  And the same was Stanford and CMU, and everyone, and even Digital.  The operating system from Digital at that time was free.  And every so often I got pieces of program from Digital system such as a PDP-11 cross assembler, and I ported it to run on ITS, and added lots of features.  It was no copyright on that program.
ru: Когда я вошёл в эту отрасль, когда я начал работать в MIT в 1971 году, мысль о том, что программами, которые мы разрабатывали, нельзя обмениваться, даже не обсуждалась. И то же самое было в Стенфорде и CMU, и у всех, и даже в Digital. Операционная система Digital в то время была свободной. Очень и очень часто я брал программу из системы Digital, например кросс-ассемблер PDP-11, и переносил его на ITS и добавлял кучу особенностей. На эту программу не было авторских прав.

note: type: Content of: <div><p>
en: It was only in the late seventies that this began to change.  I was extremely impressed by the sharing spirit that we had.  We were doing something that we hoped was useful and were happy if people could use it.  So when I developed the first EMACS, and people wanted to start use it outside of MIT, I said that it belongs to the EMACS &ldquo;Commune,&rdquo; that in order to use EMACS you had to be a member of the commune, and that meant that you had the responsibility to contribute all the improvements that you made.  All the improvements to the original EMACS had to be sent back to me so that I could incorporate them into newer versions of EMACS, so that everyone in the community could benefit from them.
ru: И только в конце семидесятых это начало меняться. Меня крайне впечатлял дух взаимоотдачи, который у нас был. Мы делали то, что, как мы надеялись, полезно, и были счастливы, если люди могли пользоваться этим. Так, когда я разработал первый EMACS и люди захотели начать пользоваться им вне MIT, я сказал, что он принадлежит &ldquo;Коммуне&rdquo; EMACS, что для того, чтобы пользоваться EMACS, нужно быть членом коммуны, и это значило, что на вас лежит ответственность за то, чтобы приносить все улучшения, которые вы делаете. Все улучшения изначального EMACS надо было присылать мне, чтобы я мог включать их в новые версии EMACS, чтобы каждый в обществе мог получать от них пользу.

note: type: Content of: <div><p>
en: But this started to be destroyed when SCRIBE was developed at CMU, and then was sold to a company.  This was very disturbing to a lot of us at many universities, because we saw that this was a temptation placed in front of everyone, that it was so profitable to be uncooperative and those of us who still believed in cooperation had no weapon to try to compel people to cooperate with us.  Clearly, one after another, people would defect and stop cooperating with the rest of society, until only those of us with very strong consciences would still cooperate.  And that's what happened.
ru: Но это начало разрушаться, когда SCRIBE был разработан в CMU, а затем продан компании. Это очень беспокоило многих из нас во многих университетах, потому что мы видели, что это было искушением для каждого, что было так выгодно отказываться от сотрудничества, и у тех из нас, кто всё-таки верил в сотрудничество, не было оружия, чтобы попытаться вынудить людей сотрудничать с нами. Понятно, что один за другим люди сдавали и прекращали сотрудничество с остальным обществом, и в конце концов только те из нас, в ком была очень сильна сознательность, продолжали сотрудничать по-прежнему. Вот что произошло.

note: type: Content of: <div><p>
en: The field of programming has now become an ugly one, where everyone cynically thinks about how much money he is going to get by not being nice to the other people in the field, and to the users.
ru: Теперь отрасль программирования стала отвратительной, там каждый цинично думает о том, сколько денег он собирается получить тем, что не будет добр к другим людям в этой отрасли и к пользователям.

note: type: Content of: <div><p>
en: I want to establish that the practice of owning software is both materially wasteful, spiritually harmful to society and evil.  All these three things being interrelated.  It's spiritually harmful because it involves every member of society who comes in contact with computers in a practice that is obviously materially wasteful to other people.  And every time you do something for your own good, which you know is hurting other people more that it helps you, you have to become cynical in order to support such a thing in your mind.  And it's evil because it is deliberately wasting the work done in society and causing social decay.
ru: Я хочу показать, что практика владения программами как материально расточительна, так и духовно вредна для общества и дурна. Все эти три вещи взаимосвязаны. Это духовно вредно, потому что вовлекает каждого члена общества, кто вступает в контакт с компьютерами, в практику, которая очевидно материально расточительна для других людей. А каждый раз, когда делаешь что-то для своего собственного блага, что, как ты знаешь, вредит другим людям больше, чем помогает тебе, ты вынужден стать циничным, чтобы сознательно принять это. И это дурно, потому что это преднамеренно расточает работу, сделанную в обществе, и приводит общество в упадок.

note: type: Content of: <div><p>
en: First I want to explain the kinds of harm that are done by attempts to own software and other information that's generally useful, then I'll go on to rebut the arguments made to support that practice, and then I want to talk about how to fight that phenomenon, and how I'm fighting it.
ru: Сперва я хочу объяснить, какого рода вред наносят попытки владеть программами и другими сведениями, которые универсально полезны, потом я перейду к опровержению аргументов в поддержку этой практики, а затем я хочу поговорить о том, как бороться с этим явлением и как я борюсь с ним.

note: type: Content of: <div><p>
en: The idea of owning information is harmful in three different levels.  Materially harmful on three different levels, and each kind of material harm has a corresponding spiritual harm.
ru: Идея информационной собственности вредна на трёх разных уровнях. Материально вредна на трёх разных уровнях, и каждому виду материального вреда соответствует свой духовный вред.

note: type: Content of: <div><p>
en: The first level is just that it discourages the use of the program, it causes fewer people to use the program, but in fact it takes no less work to make a program for fewer people to use.  When you have a price on the use of a program this is an incentive, that's the word these software hoarders love to use, the price is an incentive for people not to use the program, and this is a waste.  If for example only half as many people use the program because it has a price on it, the program has been half wasted.  The same amount of work has produced only half as much wealth.
ru: Первый уровень&nbsp;&mdash; это просто то, что она отвращает от применения программы, это ведёт к тому, что меньшее число людей пользуется программой, но фактически эта программа для меньшего числа людей требует не меньшей работы. Когда установлена плата за использование программы, это стимул,&mdash; вот в какое слово влюблены эти программозапиратели,&mdash; плата&nbsp;&mdash; для людей это стимул не пользоваться программой, а это расточительство. Если, например, только половинное число людей применяет программу из-за того, что за неё берут плату, программа наполовину разбазаривается. То же количество работы произвело только вдвое меньшее количество благ.

note: type: Content of: <div><p>
en: Now in fact, you don't have to do anything special to cause a program to get around to all the people who want to use it, because they can copy it themselves perfectly well, and it will get to everyone.  All you have to do after you've written the program is to sit back and let people do what they want to do.  But that's not what happens; instead somebody deliberately tries to obstruct the sharing of the program, and in fact, he doesn't just try to obstruct it, he tries to pressure other people into helping.  Whenever a user signs a nondisclosure agreement he has essentially sold out his fellow users.  Instead of following the golden rule and saying, &ldquo;I like this program, my neighbor would like the program, I want us both to have it,&rdquo; instead he said, &ldquo;Yeah, give it to me.  To hell with my neighbor! I'll help you keep it away from my neighbor, just give it to me!&rdquo; and that spirit is what does the spiritual harm.  That attitude of saying, &ldquo;To hell with my neighbors, give ME a copy.&rdquo;
ru: Вот. Фактически не надо делать ничего особенного, чтобы заставить программу разойтись по всем тем, кто хочет ею пользоваться, потому что они сами могут прекрасно копировать её, и она дойдёт до каждого. Всё, что вам нужно после того, как вы написали программу,&mdash; это присесть в сторонке и дать людям делать, что они хотят. Но этого не происходит: вместо этого кто-то преднамеренно пытается воспрепятствовать обмену программой, а фактически он не просто пытается воспрепятствовать этому, он пытается давить на других людей, чтобы они помогали в этом. Всегда, когда пользователь подписывает договор о неразглашении, он по существу продаёт своих товарищей-пользователей. Вместо того, чтобы следовать золотому правилу и сказать: &ldquo;Мне нравится эта программа, моему соседу она тоже понравилась бы, я хочу, чтобы она была у нас обоих&rdquo;, вместо этого он сказал: &ldquo;Угу, дайте её мне. Чёрт с ним, с моим соседом! Я помогу вам уберечь её от моего соседа, только дайте её мне!&rdquo;, а такое мировоззрение наносит духовный ущерб. Такое отношение: &ldquo;Чёрт с ними, с моими соседями, дайте МНЕ копию&rdquo;.

note: type: Content of: <div><p>
en: After I ran into people saying they wouldn't let me have copies of something, because they had signed some secrecy agreement, then when somebody asked me to sign a thing like that I knew it was wrong.  I couldn't do to somebody else the thing that had made me so angry when it was done to me.
ru: После того как я наткнулся на людей, которые говорили, что они не позволят мне скопировать что-нибудь, потому что они подписали некое соглашение о секретности, то когда кто-нибудь просил меня подписать что-то вроде этого, я знал, что это неправильно. Я не мог делать с другими то, что так меня разозлило, когда это сделали со мной.

note: type: Content of: <div><p>
en: But this is just one of the levels of harm.  The second level of harm comes when people want to change the program, because no program is really right for all the people who would like to use it.  Just as people like to vary recipes, putting in less salt say, or maybe they like to add some green peppers, so people also need to change programs in order to get the effects that they need.
ru: Но это&nbsp;&mdash; только один из уровней вреда. Второй уровень вреда начинается, когда люди хотят изменить программу, потому что никакая программа на самом деле не подходит для всех людей, которые хотят применять её. Точно так же, как людям нравится изменять рецепты, например уменьшая количество соли, или, может быть, они захотят добавить болгарского перцу, так же людям нужно изменять и программы, чтобы получить необходимые эффекты.

note: type: Content of: <div><p>
en: Now, the software owners don't really care whether people can change the program or not, but it's useful for their ends to prevent people.  Generally when software is proprietary you can't get the sources, you can't change it, and this causes a lot of wasted work by programmers, as well as a lot of frustration by users.  For example: I had a friend who told me how she worked for many months at a bank where she was a programmer, writing a new program.  Now, there was a commercially available program that was almost right, but it was just not quite the thing they needed, and in fact as it was it was useless for them.  The amount of change it would have taken to make it do what they needed was probably small, but because the sources of that program were not available, that was impossible.  She had to start over from scratch and waste a lot of work.  And we can only speculate about what fraction of all the programmers in the world are wasting their time in this fashion.
ru: Вот. Для владельцев программ на самом деле не важно, смогут люди изменить программу или нет, но для их целей полезно предотвратить это. Вообще говоря, когда программа несвободна, нельзя взять исходные тексты и править их, а это ведёт к растратам большого количества труда программистов, как и ко многим огорчениям пользователей. Например: у меня есть знакомая, которая рассказала мне, как она много месяцев работала в банке, где она была программистом, пишущим новую программу. Вот. Была коммерчески доступная программа, которая почти подходила, но это было не совсем то, что нужно, и фактически в том виде она была бесполезна для них. Количество изменений, которые пришлось бы внести, чтобы заставить её делать то, что им было нужно, наверное, было бы невелико, но из-за того, что исходные тексты той программы не были доступны, это было невозможно. Ей пришлось начать всё заново и растратить много труда. И мы можем только гадать о том, какая часть всех программистов в мире растрачивает своё время таким манером.

note: type: Content of: <div><p>
en: And then there is also the situation where a program is adequate make do, but it's uncomfortable.  For example: The first time we had a graphics printer at MIT, we wrote the software ourselves, and we put in lots of nice features, for example it would send you a message when your job had finished printing, and it would send you a message if the printer ran out of paper and you had a job in the queue, and lots of other things that were what we wanted.  We then got a much nicer graphic printer, one of the first laser printers, but then the software was supplied by Xerox, and we couldn't change it.  They wouldn't put in these features, and we couldn't, so we had to make do with things that &ldquo;half worked.&rdquo; And it was very frustrating to know that we were ready, willing and able to fix it, but weren't permitted. We were sabotaged.
ru: А потом, есть ещё ситуация, когда программа работает адекватно, но она неудобна. Например: в первый раз, когда мы получили графический принтер в MIT, мы сами написали программы, и мы внесли много замечательных особенностей, например, она посылала тебе сообщение, когда твоё задание заканчивало печать, и она посылала тебе сообщение, если в принтере кончалась бумага, а у тебя было задание на очереди, и много другого, это было то, что мы хотели. Потом мы получили гораздо более великолепный графический принтер, один из первых лазерных принтеров, но тогда программу поставляла Xerox, и мы не могли править её. Они не собирались закладывать эти особенности, а мы не могли, так что нам приходилось иметь дело с вещами, которые &ldquo;наполовину работали&rdquo;. И было очень огорчительно знать, что мы были готовы, мы желали, мы были в состоянии исправить это, но нам не разрешали. Нас саботировали.

note: type: Content of: <div><p>
en: And then there are all the people who use computers and say that the computers are a mystery to them, they don't know [how] they work.  Well how can they possibly know? They can't read the programs they're using.  The only way people learn how programs should be written, or how programs do what they do, is by reading the source code.
ru: А потом все те люди, которые пользуются компьютерами и говорят, что компьютеры для них&nbsp;&mdash; тайна за семью печатями,&mdash; они не знают, как они работают. Ну как же они узнают? Они не могут прочесть программы, которыми пользуются. Единственный способ, которым люди узнают, как следует писать программы или как программы делают то, что они делают,&mdash; это чтение исходных текстов.

note: type: Content of: <div><p>
en: So I could only wonder whether the idea of the user who just thinks of the computer as a tool is not actually a self-fulfilling prophecy, a result of the practice of keeping source code secret.
ru: Так что я мог бы только догадываться, не является ли мысль о пользователе, который думает о компьютере просто как об инструменте, на самом деле самовоплощающимся предсказанием, результатом практики хранения исходных текстов в секрете.

note: type: Content of: <div><p>
en: Now the spiritual harm that goes with this kind of material harm, is in the spirit of self-sufficiency.  When a person spends a lot of time using a computer system, the configuration of that computer system becomes the city that he lives in.  Just as the way our houses and furniture are laid out, determines what it's like for us to live among them, so that the computer system that we use, and if we can't change the computer system that we use to suit us, then our lives are really under the control of others.  And a person who sees this becomes in a certain way demoralized: &ldquo;It's no use trying to change those things, they're always going to be bad.  No point even hassling it.  I'll just put in my time and &hellip; when it's over I'll go away and try not to think about it any more.&rdquo; That kind of spirit, that unenthusiasm is what results from not being permitted to make things better when you have feelings of public spirit.
ru: Вот. Духовный вред, который соответствует материальному вреду этого рода,&mdash; это дух самодостаточности. Когда личность проводит много времени за вычислительной системой, конфигурация этой системы становится городом, в котором она живёт. Точно так же, как планировка наших домов и расстановка мебели определяет, на что похожа наша жизнь среди них, так же и с вычислительной системой, которой мы пользуемся, и если мы не можем изменять под себя вычислительную систему, которой пользуемся, то в действительности наша жизнь находится под контролем других. А личность, которая видит это, в определённом смысле деморализуется: &ldquo;Нет никакого толку в том, чтобы пытаться это изменить, это всегда будет плохо. Нет смысла даже ворошить это. Я просто потрачу на это своё время, и... когда это закончится, я уйду и попытаюсь больше не думать об этом&rdquo;. К такого рода настроениям, к этому неэнтузиазму приводит запрет улучшать вещи, когда у вас есть чувство духа общественности.

note: type: Content of: <div><p>
en: The third level of harm is in the interaction between software developers themselves.  Because any field of knowledge advance most when people can build on the work of others, but ownership of information is explicitly designed to prevent anyone else to doing that.  If people could build on other people's work, then the ownership would become unclear, so they make sure each new entry to the field has to start from the beginning, and thus they greatly slow down the advance of the field.
ru: Третий уровень вреда&nbsp;&mdash; взаимодействие между самими разработчиками программ. Потому что любая область знания прогрессирует больше всего, когда люди могут основываться на труде других, но информационная собственность нарочно организована для того, чтобы не дать никому другому делать это. Если бы люди могли основываться на труде других людей, то собственность стала бы неясной, так что они следят за тем, чтобы каждую новую позицию в этой области приходилось начинать с начала, и таким образом они сильно замедляют прогресс в этой области.

note: type: Content of: <div><p>
en: So we can see: How many spreadsheet systems were made all by different companies, all without any benefit of understanding how it was done before? Yes it's true, the first spreadsheet written wasn't perfect.  It probably only ran on certain kinds of computers, and it didn't do some things in the best possible way.  So there were various reasons why certain people would want to rewrite parts of it.  But if they had only to rewrite the parts that they really wanted to improve, that would have made for a lot less work.  You may see how to make one aspect of a system better, you may not see how to make another aspect of the same system any better, in fact you might have a great deal of trouble doing it as well.  Now if you could take the part that you like and redo only the part that you have an inspiration for, you could have a system that's better in all ways, with much less work than it now takes to write a completely new system.  And we all know that a system can often benefit from being completely rewritten, but that's only if you can read the old one first.
ru: Вот мы и видим: сколько систем табличных вычислений было сделано, каждая&nbsp;&mdash; новой компанией, каждая&nbsp;&mdash; безо всякой пользы от понимания того, как это делалось раньше? Да, верно, первая такая система не была совершенством. Она, наверное, работала только на определённых видах компьютеров, и что-то она делала не наилучшим из возможных способов. Так что были разные причины, по которым определённые люди хотели бы переписать её части. Но если бы им приходилось переписывать только части, которые они на самом деле желали улучшить, работы было бы гораздо меньше. Ты можешь понимать, как улучшить  систему в одном аспекте, и не понимать, как улучшить ту же самую систему в другом аспекте; фактически, у тебя может быть много головной боли с тем, чтобы сделать это так же хорошо. И вот, если бы ты мог взять часть, которая тебе нравится, и переделать только часть, к которой у тебя лежит душа, ты мог бы получить систему, которая лучше во всех отношениях, положив на это гораздо меньше труда, чем это теперь нужно для написания новой системы целиком. Да, мы все знаем, что система часто может выиграть от того, что её полностью перепишут, но это только если ты можешь сначала прочесть старую.

note: type: Content of: <div><p>
en: Thus, the people in the programming field have evolved a way of wasting a lot of their time and thus making apparently a need for more programmers than we really need.  Why is there a programmer shortage? Because with intellectual property programmers have arranged to waste half the work they do, so we seem to need twice as many programmers.  And so, when people point to the system of intellectual property and say &ldquo;look at the large employment statistics, look at how big this industry is&rdquo; what that really proves is that people are wasting a lot of money and time.  If they talk about looking for ways to improve programmer productivity, they're happy to do this if it involves superior tools, but to improve programmer productivity by getting rid of the explicit things that is done to reduce programmer productivity, that they're against.  Because that would reduce the number of programmers employed.  There's something a little bit schizophrenic there.
ru: Итак, люди в отрасли программирования выработали метод разбазаривания большого количества своего времени и, таким образом, естественно, увеличения потребности в программистах сверх необходимости. Почему имеется нехватка программистов? Потому что из-за интеллектуальной собственности программисты организованы так, чтобы разбазаривать половину работы, которую они делают, так что нам кажется, что нужно вдвое больше программистов. И таким образом, когда люди указывают на систему интеллектуальной собственности, говоря: &ldquo;взгляните на высокие показатели статистики занятости, посмотрите, какая это большая отрасль промышленности&rdquo;, это на самом деле доказывает только то, что люди расточают много денег и времени. Если они говорят о методах повышения производительности программиста, они охотно делают это, если речь идёт о превосходных пакетах разработки, но чтобы улучшить производительность программиста избавлением от того, что сделано явно для снижения его производительности,&mdash; нет, они против этого. Потому что это снизило бы число занятых программистов. Есть в этом что-то слегка шизофреническое.

note: type: Content of: <div><p>
en: And the spiritual harm that corresponds to this level of material harm is to the spirit of scientific cooperation, which used to be so strong that scientists even in countries that were at war would continue cooperating, because they knew that what they were doing had nothing to do with the war, it was just for the long term benefit of humanity.  Nowadays, people don't care about the long term benefit of humanity any more.
ru: А духовный вред, который соответствует этому уровню материального вреда,&mdash; в том, что дух научного сотрудничества, который некогда был так силён, что учёные даже в воюющих странах продолжали сотрудничать, потому что они знали, что то, что они делают, никак не связано с войной, это было просто для долгосрочной выгоды человечества. В наше время людей больше не заботит долгосрочная выгода человечества.

note: type: Content of: <div><p>
en: To get an idea of what it's like to obstruct the use of a program, let's imagine that we had a sandwich, that you could eat, and it wouldn't be consumed.  You could eat it, and another person could eat it, the same sandwich, any number of times, and it would always remain just as nourishing as originally.
ru: Чтобы получить представление о том, что значит препятствовать применению программы, давайте представим, что у нас есть бутерброд, который можно съесть, а он не будет израсходован. Его можете съесть вы, его может съесть другой человек,&mdash; тот же самый бутерброд, сколько угодно раз,&mdash; а он всегда будет оставаться таким же аппетитным, как изначально.

note: type: Content of: <div><p>
en: The best thing to do, the thing that we ought to do with this sandwich is carry it around to the places where there are hungry people; bringing it to as many mouths as possible, so that it feeds as many people as possible.  By all means, we should not have a price to eat from this sandwich, because then people would not afford to eat it, and it would be wasted.
ru: Лучшее, что можно сделать, что мы обязаны сделать с этим бутербродом,&mdash; это пронести его по тем местам, где есть голодные; разнести его по стольким ртам, по скольким возможно, чтобы он насытил столько людей, сколько можно. Ни в коем случае у нас не должно быть платы на то, чтобы съесть от этого бутерброда, потому что тогда люди не смогут позволить себе есть его, и он будет растрачен впустую.

note: type: Content of: <div><p>
en: The program is like this sandwich, but even more so because it can be in many different places at once being eaten, used by different people one after the other.  It is as if this sandwich was enough to feed everyone, everywhere, forever, and that were not allowed to happen, because someone believed he should own it.
ru: Программа подобна этому бутерброду, но даже более того, потому что её можно есть одновременно во многих разных местах, применять разным людям, одному за другим. Это как если бы тот бутерброд был достаточен для того, чтобы насытить каждого, везде, навсегда, а этому не позволили произойти, потому что кто-то считает, что он должен владеть им.

note: type: Content of: <div><p>
en: Now, the people who believe that they can own programs, generally put forward two lines of argument for this.  The first one is &ldquo;I wrote it, it is a child of my spirit, my heart, my soul is in this.  How can anyone take it away from me? Wherever it goes it's mine, mine, MINE!!&rdquo; Well, it's sort of strange that most of them signs agreements saying it belongs to the company they work for.
ru: Ну вот; люди, которые считают, что они могут владеть программами, в общем приводят два аргумента в пользу этого. Первый&nbsp;&mdash; это &ldquo;я написал её, это дитя моего духа, в ней&nbsp;&mdash; моё сердце, моя душа. Как может кто-то забрать её у меня? Где бы она ни оказалась, она моя, моя, МОЯ!!&rdquo;. Ну, как-то странно, что большинство из них подписывает соглашения, по которым она принадлежит компании, на которую они работают.

note: type: Content of: <div><p>
en: So I believe this is one of the things you can easily talk yourself into believing is important, but you can just as easily convince yourself it doesn't matter at all.
ru: Итак, я убеждён, что это одна из вещей, о которой легко можно дорассуждаться до убеждения, что она важна, но точно так же легко можно убедить себя, что это не имеет никакого значения.

note: type: Content of: <div><p>
en: Usually, these people use this argument to demand the right to control even how people can change a program.  They say: &ldquo;Nobody should be able to mess up my work of art.&rdquo; Well, imagine that the person who invented a dish that you plan to cook had the right to control how you can cook it, because it's his work of art.  You want to leave out the salt, but he says &ldquo;Oh, no.  I designed this dish, and it has to have this much salt!&rdquo; &ldquo;But my doctor says it's not safe for me to eat salt.  What can I do?&rdquo;
ru: Обычно эти люди применяют этот аргумент, чтобы требовать права контролировать даже то, как люди могут изменять программу. Они говорят: &ldquo;Никто не должен быть в состоянии превратить моё произведение искусства в мешанину&rdquo;. Ну, представьте, что у лица, которое изобрело блюдо, которое вы планируете приготовить, было бы право контролировать то, как вы можете его готовить, потому что это его произведение искусства. Вы хотите изъять соль, но он говорит: &ldquo;Ну, нет. Я составил это блюдо, и в нём должно быть ровно столько соли!&rdquo; &ldquo;Но врач говорит, что соль для меня небезопасна. Что мне делать?&rdquo;.

note: type: Content of: <div><p>
en: Clearly, the person who is using the program is much closer to the event.  The use of the program affects him very directly, whereas it only has a sort of abstract relation to the person who wrote the program.  And therefore, for the sake of giving people as much control as possible over their own lives, it has to be the user who decides those things.
ru: Очевидно, тот, кто пользуется программой, гораздо ближе к этому случаю. Применение программы касается его очень непосредственно, в то время как оно имеет только что-то вроде отвлечённого отношения к тому, кто написал программу. И следовательно, если мы хотим дать людям наибольший возможный контроль над их собственной жизнью, то принимать решения об этих вещах должен именно пользователь.

note: type: Content of: <div><p>
en: The second line of argument they make is the economic one.  &ldquo;How will people get paid to program?&rdquo; they say, and there's a little bit of real issue in this.  But a lot of what they say is confusion.  And the confusion is, it's not at all the same to say &ldquo;if we want to have a lot of people programming we must arrange for them not to need to make a living in any other fashion&rdquo; on the one hand, and to say &ldquo;We need to have the current system, you need to get rich by programming&rdquo; on the other hand.  There's a big difference between just making a living wage and making the kind of money programmers, at least in the US make nowadays.  They always say: &ldquo;How will I eat?&rdquo; but the problem is not really how &ldquo;Will he eat?&rdquo; but &ldquo;How will he eat sushi?&rdquo; &ldquo;How will I have a roof over my head?&rdquo; but the real problem is &ldquo;How can he afford a condo?&rdquo;
ru: Второй ряд их аргументов&nbsp;&mdash; экономический. Они говорят: &ldquo;Как люди будут получать плату за программирование?&rdquo;, и в этом есть зерно реальной проблемы. Но многое из того, что они говорят,&mdash; заблуждение. Оно состоит в том, что не одно и то же&nbsp;&mdash; говорить: &ldquo;если мы хотим, чтобы было много людей, пишущих программы, мы должны обеспечить, чтобы им не приходилось зарабатывать на жизнь другим путём&rdquo;, с одной стороны, и &ldquo;нам нужна существующая система, ремесло программиста должно приносить богатство&rdquo;, с другой стороны. Есть большая разница между обеспечением просто прожиточного минимума и созданием класса денежных программистов, по крайней мере, как это делается сейчас в Штатах. Они всегда говорят: &ldquo;Что я буду есть?&rdquo;, но вопрос на самом деле не &ldquo;что он будет есть?&rdquo;, а &ldquo;как он заработает на суши?&rdquo;. &ldquo;Будет ли у меня крыша над головой?&rdquo;, но в действительности подразумевается &ldquo;как ему купить отдельную квартиру?&rdquo;

note: type: Content of: <div><p>
en: The current system were chosen by the people who invest in software development, because it gives them the possibility of making the most possible money, not because it's the only way anyone can ever come up with money to support a system development effort.  In fact, even as recently as ten and fifteen years ago it was common to support software development in other ways.  For example, those Digital operating systems that were free, even in the early seventies, were developed by people who were paid for their work.  Many useful programs has been developed at universities.  Nowadays those programs are often sold, but fifteen years ago they were usually free, yet the people were paid for their work.
ru: Существующая система была выбрана людьми, которые вкладывают капитал в разработку программ, потому что это даёт им возможность получать наибольшие деньги, а не потому, что это единственный способ найти деньги для поддержки усилий по разработке системы. Фактически даже не далее, как десять или пятнадцать лет назад, было обычным поддерживать разработку программ другими способами. Например, те операционные системы Digital, которые были свободны, даже в начале семидесятых, разрабатывались людьми, которым платили за работу. Много полезных программ было разработано в университетах. Сейчас те программы зачастую продаются, но пятнадцать лет назад они были обычно свободны, и всё же людям платили за их работу.

note: type: Content of: <div><p>
en: When you have something like a program, like an infinite sandwich, like a road, which has to be built once, but once it is built it pretty much doesn't matter how much you use it, there's no cost in using it, generally it's better if we don't put any price on using it.  And there are plenty of those things that we develop now, and pay people to build.  For example, all the streets out there.  It's very easy to find people who will program without being paid; it really is impossible to find people who will build streets without being paid.  Building streets is not creative and fun like programming.  But we have plenty of streets out there, we do come up with the money to pay them, and it's much better the way we do it than if if we said: &ldquo;Let's have companies go and build streets and put toll booths up, and then every time you turn another street corner, you pay another toll.  And then the companies that picked the good places to put their streets, they will be profitable, and the others will go bankrupt.&rdquo;
ru: Когда у вас есть что-нибудь подобное программе, как бесконечный бутерброд, как дорога, которую нужно проложить один раз, но как только она проложена, совсем не важно, сколько вы будете ездить по ней, нет никаких затрат на её использование, вообще говоря, лучше, если мы не берём плату за пользование ей. И есть множество того, что мы сейчас развиваем и платим людям за строительство. Например, все эти улицы в городе. Очень легко найти людей, которые будут программировать бесплатно; на самом деле невозможно найти людей, которые будут строить улицы бесплатно. Строить улицы&nbsp;&mdash; это не такое творческое и интересное занятие, как программирование. Но у нас много улиц, мы находим деньги, чтобы оплатить это, и способ, которым мы это делаем, гораздо лучше, чем если бы мы сказали: &ldquo;Пусть компании строят улицы и расставят киоски, и тогда каждый раз, когда сворачиваешь за угол, ты будешь платить таксу. И тогда компании, которые выберут хорошие места для улиц,&mdash; те будут рентабельны, а другие обанкротятся&rdquo;.

note: type: Content of: <div><p>
en: There's a funny thing that happens whenever someone comes up with a way of making lots of money by hoarding something.  Until that time you've probably had lots and lots of people who were really enthusiastic and eager to work in that field, the only sort of question is how can they get any sort of livelihood at all.  If we think of mathematicians for example, there are a lot more people who want to be pure mathematicians than there is funding for anybody to be pure mathematicians.  And even when you do get funding, you don't get very much, they don't live well.  And for musicians it's even worse.  I saw a statistics for how much the average musician, the average person devoting most of his time trying to be a musician, in Massachusetts made; it was something like half the median income or less.  It is barely enough to live on, it's difficult.  But there are lots of them trying to do that.  And then, somehow when it gets generally possible to get very well paid to do something, all those people disappear, and people start saying &ldquo;nobody will do it unless they get paid that well.&rdquo;
ru: Есть одна забавная вещь, которая происходит, когда кто-то начинает делать много денег огораживанием чего-нибудь. До этого, бывает, находятся многие и многие люди, которые с неподдельным энтузиазмом и рвением желают работать в этой отрасли, единственный вопрос&nbsp;&mdash; как им получить хоть какие-то средства для жизни. Если взять, например, математиков, есть куда как больше людей, которые хотят заниматься чистой математикой, чем фондов на то, чтобы кто-то был чистым математиком. И даже когда вы получаете фонды, вы не получаете очень много, они не живут богато. А для музыкантов это ещё хуже. Я видел статистику того, сколько получает средний музыкант, средний человек, посвящающий большую часть своего времени тому, чтобы пытаться быть музыкантом, в Массачусетсе; это было что-то вроде половины медианного дохода или меньше. Этого едва хватает на то, чтобы жить, это трудно. Но есть много таких, кто пытается делать это. А потом, когда становится вообще возможно получать очень высокую плату за то, чтобы делать что-нибудь, все те люди исчезают, и начинают говорить: &ldquo;никто не будет этим заниматься, если им не будут хорошо платить за это&rdquo;.

note: type: Content of: <div><p>
en: And I saw this happen in the field of programming.  The very same people who used to work at the AI lab and get paid very little and love it, now wouldn't dream of working for less than fifty thousand dollars a year.  What happened? When you dangle before people the possibility of making lots of money, when they see that other people doing similar work are getting paid that much money, they feel that they should get the same, and thus no-one is willing to continue the old way.  And it's easy after this has happened to think that paying people a lot of money is the only way it could be, but that's not so.  If the possibility of making a lots of money did not exist, you would have people who would accept doing it for a little money, specially when it's something that is creative and fun.
ru: И я видел, как это произошло в отрасли программирования. Те самые люди, которые работали себе в Лаборатории ИИ, получали очень мало и любили свою работу, теперь не помышляли о том, чтобы работать меньше, чем за пятьдесят тысяч долларов в год. Что произошло? Когда вы ставите людей перед возможностью получать много денег, когда они видят, что другие за подобную работу получают столько денег, они чувствуют, что должны получать то же самое, и таким образом никто не хочет продолжать по-старому. И очень просто после того, как это произошло, думать, что платить людям много денег&nbsp;&mdash; единственный из возможных способов, но это не так. Если бы не было возможности делать много денег, у нас были бы люди, которые были бы согласны делать это за небольшие деньги, особенно когда это что-нибудь творческое и интересное.

note: type: Content of: <div><p>
en: Now I saw the unique world of the AI lab destroyed, and I saw that selling software was an intrinsic part of what had destroyed it, and I saw also, as I explained before, how you need to have free software in order to have a community like that.  But then thinking about it more, I realized all these ways in which hoarding software hurts all of society, most specially by pressuring people to sell out their neighbors and causing social decay.  The same spirit that leads people to watch while somebody in the street is getting stabbed and not tell anyone. The spirit that we can see so many companies all around us displaying all the time.  And it was clear to me I had a choice, I could become part of that world and feel unhappy about what I was doing with my life, or I could decide to fight it.  So I decided to fight it.  I've dedicated my career to try to rebuild the software sharing community, to trying to put an end to the phenomenon of hoarding generally useful information.  And the GNU system is a means to this end.  It is a technical means to a social end.  With the GNU system, I hope to vaccinate the users against the threat of the software hoarders.
ru: Вот. Я понимал, что уникальный мир Лаборатории ИИ разрушен, я понимал, что торговля программами была органической частью того, что разрушило его, и я также понимал, как я объяснил раньше, насколько необходимы свободные программы для того, чтобы существовало подобное общество. Но потом, подумав об этом ещё, я осознал все эти аспекты, в которых запирание программ вредит всему обществу, в особенности вынуждая людей продавать своих соседей и вызывая упадок общества. Тот самый дух, который ведёт к тому, что люди смотрят, как кого-нибудь убивают на улице, и никому не говорят. Дух, постоянные проявления которого мы встречаем в таком большом числе компаний вокруг нас. И для меня было ясно, что у меня был выбор, я мог стать частью того мира и чувствовать себя несчастным оттого, что я делаю со своей жизнью, или решить бороться с этим. Итак, я решил бороться с этим. Я посвятил свою карьеру попытке воссоздать общество обмена программами, попытке положить конец явлению запирания общеполезной информации. И система GNU&nbsp;&mdash; средство для достижения этой цели. Это техническое средство для достижения общественной цели. С помощью системы GNU я надеюсь сделать прививку пользователям против угрозы программозапирателей.

note: type: Content of: <div><p>
en: Right now the hoarders essentially claims the power to render a person's computer useless.  There used to be people in the US, most commonly about fifty years ago, they were in the Mafia, they would go up to stores and bars, especially bars when bars were illegal of course.  They would go up and say: &ldquo;A lot of places around here have been burning down lately.  You wouldn't want your place to burn down, would you? Well we can protect you from fires, you just have to pay us a thousand dollars a month, and we'll make sure you don't have a fire here.&rdquo; And this was called &ldquo;the protection racket.&rdquo; Now we have something where a person says &ldquo;You got a nice computer there, and you've got some programs there that you're using.  Well, if you don't want those programs to disappear, if you don't want the police to come after you, you better pay me a thousand dollars, and I'll give you a copy of this program with a license,&rdquo; and this is called &ldquo;the software protection racket.&rdquo;
ru: В настоящее время запиратели по существу заявляют о своей власти делать компьютер человека бесполезным. Когда-то в США были люди, наиболее распространено это было около пятидесяти лет назад, они были в мафии, они приходили в магазины и бары, особенно в бары, когда бары были запрещены, конечно. Они приходили и говорили: &ldquo;Много мест в округе недавно сгорело. Вы ведь не хотите сгореть, не так ли? Ладно, мы защитим вас от пожаров, вам только придётся платить тысячу долларов в месяц, и мы гарантируем, что здесь пожара не будет&rdquo;. И это называлось &ldquo;протекционный шантаж&rdquo;. А сейчас у нас ситуация, когда человек говорит: &ldquo;У вас есть замечательный компьютер, и у вас есть программы, которыми вы пользуетесь. Ну так вот, если вы не хотите, чтобы эти программы исчезли, если вы не хотите, чтобы за вами пришла полиция, лучше заплатите мне тысячу долларов, и я дам вам копию этой программы с лицензией&rdquo;, и это называется &ldquo;программный протекционный шантаж&rdquo;.

note: type: Content of: <div><p>
en: Really all they're doing is interfering with everybody else doing what needs to be done, but they're pretending as much to them selves as to the rest of us, that they are providing a useful function.  Well, what I hope is that when that software Mafia guy comes up and says, &ldquo;You want those programs to disappear on your computer?&rdquo; the user can say &ldquo;I'm not afraid of you any more.  I have this free GNU software, and there's nothing you can do to me now.&rdquo;
ru: На самом деле всё, что они делают&nbsp;&mdash; это вмешиваются в дела всех других людей, которые делают то, что нужно, но они убеждают, как самих себя, так и нас, остальных, что они выполняют полезную функцию. Ну, на что я надеюсь&nbsp;&mdash; это что когда тот парень из программной мафии придёт и скажет: &ldquo;Ты хочешь, чтобы эти программы исчезли из твоего компьютера?&rdquo;, пользователь сможет сказать: &ldquo;Я больше тебя не боюсь. У меня есть вот эта свободная система GNU, и теперь ты ничего не можешь мне сделать&rdquo;.

note: type: Content of: <div><p>
en: Now, one of the justifications people sometimes offer for owning software, is the idea of giving people an incentive to produce things.  I support the idea of private enterprise in general, and the idea of hope to make money by producing things that other people like to use, but it's going haywire in the field of software now.  Producing a proprietary program is not the same contribution to society as producing the same program and letting it be free.  Because writing the program is just a potential contribution to society.  The real contribution to the wealth of society happens only when the program is used.  And if you prevent the program from being used, the contribution doesn't actually happen.  So, the contribution that society needs is not these proprietary programs that everyone has such an incentive to make, the contribution we really want is free software, so our society is going haywire because it gives people an incentive to do what is not very useful, and no incentive to do what is useful.  Thus the basic idea of private enterprise is not being followed, and you could even say that the society is neurotic.  After all when an individual encourages in others behavior that is not good for that individual we call this a neurosis.  Here society is behaving in that fashion, encouraging programmers to do things that is not good for society.
ru: Вот. Одно из оправданий, которые люди иногда предлагают для владения программами,&mdash; это идея дать людям стимул к производству.  Вообще я поддерживаю идею частного предпринимательства, так же как идею надежды заработать деньги производством того, чем другие люди хотели бы воспользоваться, но с этим в отрасли программирования сейчас полный бардак. Производство несвободной программы&nbsp;&mdash; не такой же вклад в общество, как производство той же самой программы с тем, чтобы она была свободной. Потому что написание программы&nbsp;&mdash; только потенциальный вклад в общество. Настоящий вклад в богатство общества происходит, только когда программой пользуются. А если вы предотвращаете применение программы, вклада в действительности не происходит. Итак, вклад, в котором нуждается общество,&mdash; не эти несвободные программы, для производства которых у каждого есть такой стимул; вклад, который нам на самом деле нужен,&mdash; это свободные программы, так что в обществе бардак из-за того, что оно создаёт для людей стимул делать то, что не очень полезно, и не создаёт стимула делать то, что полезно. Таким образом, основная идея частного предпринимательства не реализуется, и можно даже сказать, что общество невротично. В конце концов, когда индивидуум поощряет в других поведение, которое плохо для этого индивидуума, мы называем это неврозом. А тут&nbsp;&mdash; общество ведёт себя таким манером, поощряя программистов делать то, что плохо для общества.

note: type: Content of: <div><p>
en: I'm unusual.  I'd rather believe that I'm a good member of society and that I'm contributing something, than feel that I'm ripping society off successfully, and that's why I've decided to do what I have done.  But every one is at least a little bit bothered by the feeling that they are getting paid to do what's not really useful.  So let's stop defending this idea of incentives to do the wrong thing and let's at least try to come up with arrangements to encourage people to do the right thing, which is to make free software.
ru: Я&nbsp;&mdash; не такой, как все. Мне лучше думать, что я хороший член общества и что я вношу какой-то вклад, чем чувствовать, что я успешно паразитирую на обществе, и вот поэтому я решил сделать то, что я сделал. Но каждого хотя бы немного беспокоит чувство, что им платят за то, что на самом деле не полезно. Так что давайте прекратим защищать эту идею стимулирования дурного и давайте хотя бы попытаемся найти средства поощрять людей делать правильное, то есть делать свободные программы.

note: type: Content of: <div><p>
en: Thank you.
ru: Благодарю за внимание.

note: type: Content of: <div><p>
en: <strong>[After this RMS answered questions for about an hour.  I have only included a very few of the questions and answers in this version.  The tape was bad, and I didn't have the time to do a proper job on all of it.] </strong>
ru: <strong> [После этого RMS отвечал на вопросы около часа. Я включил только очень немногие из вопросов и ответов в эту версию. Запись была плохой, у меня не было времени проработать, как следует, всю ленту] </strong>

note: type: Content of: <div><dl><dt>
en: <b>Q:</b> Has anyone tried to make problems for you?
ru: <b>В:</b> Кто-нибудь пытался создавать вам проблемы?

note: type: Content of: <div><dl><dd><p>
en: <b>A:</b> The only time anyone has tried to make a problem for me was those owners, so called, self-styled owners of Gosling Emacs.  Aside from that they have no grounds to do so, so there is not much they can do.  By the way, I'd like to call everyone's attention to the way in which people use language to try to encourage people to think certain thoughts and not think of others.  Much of the terminology current in the field was chosen by the self-styled software owners to try to encourage you to try to make you see software as similar to material objects that are property, and overlook the differences.  The most flagrant example of this is the term &ldquo;pirate.&rdquo; Please refuse to use the term &ldquo;pirate&rdquo; to describe somebody who wishes to share software with his neighbor like a good citizen.
ru: <b>О:</b> Единственный раз, когда кто-то пытался мне создать проблему, это были те собственники, так называемые, самозваные собственники Emacs Гослинга. Кроме этого, у них нет оснований для того, чтобы делать это, так что они могут не так уж много. Между прочим, мне бы хотелось привлечь внимание всех к тому, как люди применяют язык для того, чтобы попытаться поощрять людей думать определённым образом и не думать по-другому. Многое из современной терминологии в этой отрасли было выбрано самозваными собственниками программ, чтобы попытаться поощрить вас, попытаться заставить вас смотреть на программы по образу и подобию материальных объектов, которые являются собственностью, и не замечать различий. Самый вопиющий пример этого&nbsp;&mdash; термин &ldquo;пират&rdquo;. Пожалуйста, отказывайтесь применять термин &ldquo;пират&rdquo; для описания тех, кто желает обмениваться программами со своим соседом, как добрый гражданин.

note: type: Content of: <div><dl><dd><p>
en: I forgot to tell you this: The idea of copyright was invented after the printing press.  In ancient times authors copied from each other freely, and this was not considered wrong, and it was even very useful: The only way certain authors works have survived, even in fragments, is because some of them were quoted at length in other works which have survived.
ru: Я забыл вам сказать вот что: концепция авторских прав была разработана для печатной продукции. В древние времена авторы свободно копировали друг друга, и это не считалось дурным, и это даже было очень полезно: единственное, почему работы определённых авторов дошли до нас,&mdash; это потому, что некоторых из них щедро цитировали в других работах, которые сохранились.

note: type: Content of: <div><dl><dd><p>
en: This was because books were copied one copy at the time.  It was ten times as hard to make ten copies as it was to make one copy.  Then the printing press was invented, and this didn't prevent people from copying books by hand, but by comparison with printing them, copying by hand was so unpleasant that it might as well have been impossible.
ru: Так было потому, что книги копировались по одной штуке за раз. Было вдесятеро труднее сделать десять копий, чем одну. Потом был изобретён печатный станок, и это не помешало людям переписывать книги от руки, но по сравнению с печатью копирование вручную было так неприятно, что это с таким же успехом могло бы быть невозможным.

note: type: Content of: <div><dl><dd><p>
en: When books could only be made by mass production, copyright then started to make sense and it also did not take away the freedom of the reading public.  As a member of the public who didn't own a printing press, you couldn't copy a book anyway.  So you weren't losing any freedom just because there were copyrights.  Thus copyright was invented, and made sense morally because of a technological change.  Now the reverse change is happening.  Individual copying of information is becoming better and better, and we can see that the ultimate progress of technology is to make it possible to copy any kind of information. <span>[break due to turning of tape]</span>
ru: Когда книги можно было делать только массовым производством, тогда авторские права начали приобретать смысл, а кроме того, это не отнимало у читающей общественности свободу. Как член общества, у которого не было печатного пресса, вы всё равно не могли скопировать книгу. Так что вы не теряли никакой свободы просто из-за того, что были авторские права. Таким образом, авторское право было изобретено и приобрело нравственный смысл из-за технического сдвига. Сейчас происходит обратный сдвиг. Индивидуальное копирование информации всё улучшается и улучшается, и мы видим, что предел прогресса техники&nbsp;&mdash; возможность копирования любого рода информации. <span>[перерыв из-за переворота ленты]</span>

note: type: Content of: <div><dl><dd><p>
en: Thus we are back in the same situation as in the ancient world where copyright did not make sense.
ru: Итак, мы снова в том же положении, как в древнем мире, где в авторских правах не было смысла.

note: type: Content of: <div><dl><dd><p>
en: If we consider our idea of property, they come from material objects.  Material objects satisfy a conservation law, pretty much.  Yes it's true I can break a chalk in half, that's not it, and it gets worn down, it gets consumed.  But basically this is one chair [pointing at a chair].  I can't just sort of snap my finger and have two chairs.  The only way to get another one is to build it just the way the first one was build.  It takes more raw materials, it takes more work of production, and our ideas of property were evolved to make moral sense to fit these facts.
ru: Если мы рассмотрим нашу концепцию собственности, они исходят от материальных объектов. Материальные объекты удовлетворяют закону сохранения, очень хорошо. Да, верно, я могу сломать мел напополам, но это&nbsp;&mdash; не то, и он изнашивается, он расходуется. Но в основном это&nbsp;&mdash; один стул [указывая на стул]. Я не могу просто типа щёлкнуть пальцами и получить два стула. Единственный способ получить другой&nbsp;&mdash; сделать его так же, как был сделан первый. Это требует дополнительного сырья, это требует дополнительной работы по производству, и наша концепция собственности развивалась, чтобы привести нравственные понятия в соответствие с этими фактами.

note: type: Content of: <div><dl><dd><p>
en: For a piece of information that anyone can copy, the facts are different.  And therefore the moral attitudes that fit are different.  Our moral attitudes comes from thinking how much it will help people and how much it will hurt people to do certain things. With a material object, you can come and take away this chair, but you couldn't come and copy it.  And if you took away the chair, it wouldn't be producing anything, so there's no excuse. I somebody says: &ldquo;I did the work to make this one chair, and only one person can have this chair, it might as well be me,&rdquo; we might as well say: &ldquo;Yeah, that makes sense.&rdquo; When a person says: &ldquo;I carved the bits on this disk, only one person can have this disk, so don't you dare take it away from me,&rdquo; well that also make sense.  If only one person is going to have the disk, it might as well be the guy who owns that disk.
ru: Для информации, которую каждый может копировать, верно другое. И, следовательно, нравственные понятия, которые подходят к этому,&mdash; другие. Наши нравственные понятия рождаются из размышлений о том, насколько определённое дело поможет людям и насколько оно навредит людям. Если объект материален, вы можете придти и забрать этот стул, но вы не можете придти и скопировать его. А если вы заберёте стул, это ничего не будет производить, поэтому оправданий нет. Если кто-то говорит: &ldquo;Я выполнил работу, чтобы сделать этот стул, и этот стул может быть только у одного человека, почему бы ему не быть у меня&rdquo;, почему бы и нам не сказать: &ldquo;Ну да, это разумно&rdquo;. Когда человек говорит: &ldquo;Я вырезал биты на этом диске, только у одного человека может быть этот диск, так что не смейте забирать его у меня&rdquo;, ладно, в этом тоже есть смысл. Если только у одного человека будет этот диск, почему бы ему не быть у парня, который владеет этим диском.

note: type: Content of: <div><dl><dd><p>
en: But when somebody else comes up and says: &ldquo;I'm not going to hurt your disk, I'm just gonna magically make another one just like it and then I'll take it away and then you can go on using this disk just the same as before,&rdquo; well, it's the same as if somebody said: &ldquo;I've got a magic chair copier.  You can keep on enjoying your chair, sitting in it, having it always there when you want it, but I'll have a chair too.&rdquo; That's good.
ru: Но когда кто-то другой приходит и говорит: &ldquo;Я не собираюсь ломать твой диск, я просто хочу по волшебству сделать другой точно такой же, как этот, а потом я заберу его, а ты можешь продолжать пользоваться этим диском точно так же, как раньше&rdquo;, ну, это то же самое, как если бы кто-нибудь сказал: &ldquo;У меня есть волшебный копировщик стульев. Ты можешь по-прежнему наслаждаться своим стулом, сидеть на нём, ставить его туда, куда угодно, но у меня тоже будет стул&rdquo;. Это&nbsp;&mdash; хорошо.

note: type: Content of: <div><dl><dd><p>
en: If people don't have to build, they can just snap their fingers and duplicate them, that's wonderful.  But this change in technology doesn't suit the people who want to be able to own individual copies and can get money for individual copies.  That's an idea that only fits conserved objects.  So they do their best to render programs like material objects.  Have you wondered why, when you go to the software store and buy a copy of a program it comes in something that looks like a book? They want people to think as if they were getting a material object, not to realize what they have really got in the form of digital copyable data.
ru: Если людям не нужно столярничать, они могут просто щёлкнуть пальцами и раздвоить их,&mdash; это чудесно. Но этот сдвиг в технике не устраивает людей, которые хотят быть в состоянии владеть отдельными копиями и получать деньги за отдельные копии. Эта идея применима только к косной материи. Так что они делают всё возможное, чтобы представить программы как материальные объекты. Вы когда-нибудь задумывались, почему, когда вы приходите в магазин программ и покупаете копию программы, она бывает упакована во что-то, что выглядит, как книга? Они хотят, чтобы люди думали, будто они получают материальный объект, и не осознавали, что они на самом деле получили в форме цифровых данных, которые можно копировать.

note: type: Content of: <div><dl><dd><p>
en: What is a computer after all but a universal machine? You've probably studied universal Turing machines, the machines that can imitate any other machine.  The reason a universal machine is so good is because you can make it imitate any other machine and the directions can be copied and changed, exactly the things you can't do with a material object.  And those are exactly what the software hoarders want to stop the public from doing.  They want to have the benefit of the change in technology, to universal machines, but they don't want the public to get that benefit.
ru: К конце концов, что такое компьютер, если не универсальная машина? Вы, наверное, изучали универсальные машины Тьюринга, машины, которые могут имитировать любую другую машину. Причина, по которой универсальная машина так хороша&nbsp;&mdash; то, что вы можете заставить её имитировать любую другую машину, а инструкции можно копировать и менять,&mdash; именно то, что нельзя делать с материальным объектом. И это&nbsp;&mdash; именно то, что программозапиратели хотят отнять у общественности. Они хотят получить выгоду от технического сдвига к универсальным машинам, но они не хотят, чтобы эту выгоду получила общественность.

note: type: Content of: <div><dl><dd><p>
en: Essentially they are trying to preserve the &ldquo;material object age,&rdquo; but it's gone, and we should get our ideas of right and wrong in sync with the actual facts of the world we live in.
ru: По существу они пытаются сохранить &ldquo;век материальных объектов&rdquo;, но он прошёл, и мы должны привести свои идеи о добре и зле в соответствие с действительными фактами мира, в котором мы живём.

note: type: Content of: <div><dl><dt>
en: <b>Q:</b> So it boils down to ownership of information.  Do you think there are any instances where, [in] your opinion, it's right to own information?
ru: <b>В:</b> Так что это сводится к владению информацией. Как вы думаете, есть ли примеры, когда, по вашему мнению, нет ничего дурного в том, чтобы владеть информацией?

note: type: Content of: <div><dl><dd><p>
en: <b>A:</b> With information that's not generally useful, or is of a personal nature, I would say it's OK. In other words not information about how to do things, but information about what you intend to do.  Information whose only value to others is speculative, that is they can take some money away from you, but they can't actually create anything with it.  It's perfectly reasonable I'd say to keep that sort of thing secret and controlled.
ru: <b>О:</b> Для сведений, которые не общеполезны или несут персональный характер, я бы сказал, что это допустимо. Другими словами, не сведения о том, как делать что-нибудь, а о том, что вы намереваетесь делать. Сведения, единственная ценность которых спекулятивна, то есть они могут получить от вас какие-то деньги, но не могут создать что-нибудь с их помощью. Есть все основания, я бы сказал, хранить эти сведения в секрете и под контролем.

note: type: Content of: <div><dl><dd><p>
en: But in terms of creative information, information that people can use or enjoy, and that will be used and enjoyed more the more people who have it, always we should encourage the copying.
ru: Но когда речь идёт о творческой информации, информации, от которой люди могут получить пользу или удовольствие и которой будет пользоваться и наслаждаться всё больше и больше людей, у которых она будет, мы всегда должны поощрять копирование.

note: TRANSLATORS: Use space (SPC) as msgstr if you don't have notes. type: Content of: <div>
en: *GNUN-SLOT: TRANSLATOR'S NOTES*
ru: <h3>Примечания переводчиков</h3> <ol><li id="ft1">название &ldquo;free university compiler kit&rdquo; может означать также &ldquo;свободный университетский набор для компиляторов&rdquo;</li></ol>

note: type: Content of: <div><div><p>
en: Please send general FSF &amp; GNU inquiries to <a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.  There are also <a href="/contact/">other ways to contact</a> the FSF.  Broken links and other corrections or suggestions can be sent to <a href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.
ru: Пожалуйста, присылайте общие запросы фонду и GNU по адресу <a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>. Есть также <a href="/contact/">другие способы связаться</a> с фондом. Отчеты о неработающих ссылках и другие поправки или предложения можно присылать по адресу <a href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.

note: TRANSLATORS: Ignore the original text in this paragraph, replace it with the translation of these two: We work hard and do our best to provide accurate, good quality translations.  However, we are not exempt from imperfection. Please send your comments and general suggestions in this regard to <a hr
en: Please see the <a href="/server/standards/README.translations.html">Translations README</a> for information on coordinating and contributing translations of this article.
ru: Мы старались сделать этот перевод точным и качественным, но исключить возможность ошибки мы не можем. Присылайте, пожалуйста, свои замечания и предложения по переводу по адресу <a href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>. </p><p>Сведения по координации и предложениям переводов наших статей см. в <a href="/server/standards/README.translations.html">&ldquo;Руководстве по переводам&rdquo;</a>.

note: type: Content of: <div><p>
en: Copyright &copy; 1987, 2022, 2024 Richard Stallman and Bjrn Remseth
ru: Copyright &copy; 1987, 2022, 2024 Richard Stallman and Bjrn Remseth <br />Copyright &copy; 2009, 2022, 2024 Free Software Foundation, Inc. (translation)

note: type: Content of: <div><p>
en: Permission is granted to make and distribute verbatim copies of this transcript as long as the copyright and this permission notice appear.
ru: Permission is granted to make and distribute verbatim copies of this transcript as long as the copyright and this permission notice appear. </p><p> (Разрешается делать и распространять буквальные копии этой записи при условии, что присутствуют примечание об авторских правах и это разрешение)

note: timestamp start type: Content of: <div><p>
en: Updated:
ru: Обновлено:
