rms-lisp.html - en to uk translation catalogue (66 entries)

note: type: Content of: <title>
en: My Lisp Experiences and the Development of GNU Emacs - GNU Project - Free Software Foundation
uk: Мій досвід роботи з Ліспом і розвиток GNU Emacs — Проект GNU — Фонд вільного програмного забезпечення

note: type: Content of: <div><h2>
en: My Lisp Experiences and the Development of GNU Emacs
uk: Мій досвід роботи з Ліспом і розвиток GNU Emacs

note: type: Content of: <div><div><p>
en: Transcript of Richard Stallman's speech at the International Lisp Conference, 28 Oct 2002.
uk: Запис промови Річарда Столмена, виголошеної 28&nbsp;жовтня 2002&nbsp;року на Міжнародній конференції по Ліспу.

note: type: Content of: <div><p>
en: Since none of my usual speeches have anything to do with Lisp, none of them were appropriate for today. So I'm going to have to wing it.  Since I've done enough things in my career connected with Lisp I should be able to say something interesting.
uk: Оскільки жодна з моїх звичайних промов не має ніякого відношення до Ліспа, то ні одна з них не підходить для сьогоднішнього виступу. Тому мені доведеться імпровізувати. Позаяк у своїй професійній діяльності мені доводилося виконувати досить багато роботи, пов'язаної з Ліспом, у мене, мабуть, є що розказати.

note: type: Content of: <div><p>
en: My first experience with Lisp was when I read the Lisp 1.5 manual in high school. That's when I had my mind blown by the idea that there could be a computer language like that. The first time I had a chance to do anything with Lisp was when I was a freshman at Harvard and I wrote a Lisp interpreter for the <abbr title="Programmed Data Processor">PDP</abbr>-11. It was a very small machine&mdash;it had something like 8k of memory&mdash;and I managed to write the interpreter in a thousand instructions. This gave me some room for a little bit of data. That was before I got to see what real software was like, that did real system jobs.
uk: Моя перша зустріч з Ліспом сталася, коли я прочитав посібник Ліспа&nbsp;1.5 у старших класах. Саме тоді мене вразила ідея, що може бути така мова програмування. Можливість зробити що-небудь на Ліспі вперше з'явилася у мене, коли я був на молодших курсах в Гарварді і писав інтерпретатор Ліспа для <abbr title="Programmed Data Processor — програмованого обробника даних">PDP</abbr>-11. Це була дуже маленька машина: у ній було десь біля 8 кБ пам'яті &mdash; й мені вдалося написати інтерпретатор довжиною в тисячу команд. Це залишало мені трохи місця для даних. Це було до того, як я дізнався, як виглядають справжні програми, які виконують справжні системні завдання.

note: type: Content of: <div><p>
en: I began doing work on a real Lisp implementation with JonL White once I started working at <abbr title="Massachusetts Institute of Technology">MIT</abbr>. I got hired at the Artificial Intelligence Lab not by JonL, but by Russ Noftsker, which was most ironic considering what was to come&mdash;he must have really regretted that day.
uk: Я почав виконувати роботи над справжньою реалізацією Ліспа з Джоном-Л Уайтом відразу, коли мене прийняли у <abbr title="Massachusetts Institute of Technology — Массачусетський інститут технологій">MIT</abbr>. Туди мене прийняв не Джон-Л, а Расселл Нофтскер, що було вельми іронічно з огляду на те, що трапилося згодом&nbsp;&mdash; він, імовірно, сильно про це шкодував.

note: type: Content of: <div><p>
en: During the 1970s, before my life became politicized by horrible events, I was just going along making one extension after another for various programs, and most of them did not have anything to do with Lisp. But, along the way, I wrote a text editor, Emacs. The interesting idea about Emacs was that it had a programming language, and the user's editing commands would be written in that interpreted programming language, so that you could load new commands into your editor while you were editing. You could edit the programs you were using and then go on editing with them. So, we had a system that was useful for things other than programming, and yet you could program it while you were using it. I don't know if it was the first one of those, but it certainly was the first editor like that.
uk: У сімдесятих роках XX&nbsp;століття, до того, як огидні події політизували моє життя, я просто писав розширення до різноманітних програм, більшість із яких не мали жодного стосунку до Ліспа. Але водночас я писав текстовий редактор Emacs. Цікава думка, закладена в Emacs, полягала в тому, що в ньому була мова програмування, і користувацькі команди редагування писалися на цій інтерпретованій мові програмування, тому під час редагування у редактор можна було завантажувати нові команди. Можна було підредагувати програми, якими користуєшся, а потім продовжувати редагувати ними. Отже, у нас була система, корисна не для програмування, і все-таки під час користування нею можна було програмувати. Я не знаю, чи це була перша така система, але це точно був перший такий редактор.

note: type: Content of: <div><p>
en: This spirit of building up gigantic, complicated programs to use in your own editing, and then exchanging them with other people, fueled the spirit of free-wheeling cooperation that we had at the AI Lab then. The idea was that you could give a copy of any program you had to someone who wanted a copy of it. We shared programs to whomever wanted to use them, they were human knowledge. So even though there was no organized political thought relating the way we shared software to the design of Emacs, I'm convinced that there was a connection between them, an unconscious connection perhaps. I think that it's the nature of the way we lived at the AI Lab that led to Emacs and made it what it was.
uk: Ця атмосфера побудови гігантських, складних програм для застосування в своєму власному редагуванні, а потім обміну ними з іншими людьми, живила дух вільної співпраці, який панував тоді в Лабораторії штучного інтелекту. Ідея була в тому, що можна передати копію програми, що в тебе є, тому, кому вона потрібна. Ми обмінювалися програмами з усіма, хто тільки хотів ними користуватися, програми були людським знанням. Отож, хоча і не було організованої політичної думки, яка б поєднувала те, як ми обмінювалися програмами, з облаштуванням Emacs, я переконаний, що між ними був зв'язок&nbsp;&mdash; можливо, неусвідомлений. Я думаю, що саме природа нашого способу життя в Лабораторії штучного інтелекту привела до створення Emacs і зробила його таким, яким він був.

note: type: Content of: <div><p>
en: The original Emacs did not have Lisp in it. The lower level language, the non-interpreted language&mdash;was PDP-10 Assembler. The interpreter we wrote in that actually wasn't written for Emacs, it was written for <abbr title="Text Editor and COrrector">TECO</abbr>. It was our text editor, and was an extremely ugly programming language, as ugly as could possibly be. The reason was that it wasn't designed to be a programming language, it was designed to be an editor and command language. There were commands like <code>5l</code>, meaning <code>move five lines</code>, or <code>i</code> and then a string and then an ESC to insert that string. You would type a string that was a series of commands, which was called a command string. You would end it with ESC ESC, and it would get executed.
uk: У первісному Emacs Ліспа не було. Мовою низького рівня&nbsp;&mdash; неінтерпретованою мовою&nbsp;&mdash; був асемблер PDP-10. Інтерпретатор, який ми писали, насправді писався не для Emacs, він писався для <abbr title="Text Editor and COrrector — редактора й коректора тексту">TECO</abbr>. Це були наші текстовий редактор і вкрай потворна мова програмування — настільки потворна, наскільки це взагалі можливо. Причина була в тому, що вона не була спроектована як мова програмування, а натомість як мова редактора і команд. Були такі команди, як <code>5l</code>, що означало <code>пересунутися на п'ять рядків</code>, або <code>i</code> з наступним рядком та ESC для того, щоб вставити цей рядок. Можна було набрати рядок, який був послідовністю команд, який називався командним рядком. Тоді ви двічі натискали ESC — і послідовність виконувалася.

note: type: Content of: <div><p>
en: Well, people wanted to extend this language with programming facilities, so they added some. For instance, one of the first was a looping construct, which was <code>&lt;&nbsp;&gt;</code>. You would put those around things and it would loop. There were other cryptic commands that could be used to conditionally exit the loop.  To make Emacs, we&#8239;<a href="#foot-1">[1]</a> added facilities to have subroutines with names. Before that, it was sort of like Basic, and the subroutines could only have single letters as their names. That was hard to program big programs with, so we added code so they could have longer names. Actually, there were some rather sophisticated facilities; I think that Lisp got its unwind-protect facility from TECO.
uk: Втім люди хотіли доповнити цю мову засобами програмування, тому вони додали деякі засоби. Наприклад, однією з перших була додана конструкція циклу: <code>&lt;&nbsp;&gt;</code>. Нею оточували команди, і це був цикл. Були інші незрозумілі команди, якими можна було користуватися для умовного виходу з циклу. При створенні Emacs ми&nbsp;<a href="#foot-1">[1]</a> додали можливість створення підпрограм з іменами. До того це був ніби Бейсик, а в назвах підпрограм могло бути тільки по одній букві. Писати на цьому великі програми було важко, тому ми дописали програму, щоб у них могли бути довгі назви. Насправді там були доволі хитромудрі засоби; здається, засіб &ldquo;unwind-protect&rdquo; Лісп запозичив з TECO.

note: type: Content of: <div><p>
en: We started putting in rather sophisticated facilities, all with the ugliest syntax you could ever think of, and it worked&mdash;people were able to write large programs in it anyway. The obvious lesson was that a language like TECO, which wasn't designed to be a programming language, was the wrong way to go. The language that you build your extensions on shouldn't be thought of as a programming language in afterthought; it should be designed as a programming language. In fact, we discovered that the best programming language for that purpose was Lisp.
uk: Ми почали закладати досить хитромудрі засоби, і у всіх у них був потворний синтаксис, який тільки-но можна придумати, і це працювало&nbsp;&mdash; люди все одно були у змозі писати на цьому великі програми. Очевидним уроком було те, що така мова, як TECO, неспроектована як мова програмування,&mdash; є хибним шляхом. Мова, на якій ви будуєте свої розширення, повинна замислюватися як мова програмування не заднім числом; її відразу слід проектувати як мову програмування. Фактично, ми виявили, що найкращою мовою програмування для цих цілей був Лісп.

note: type: Content of: <div><p>
en: It was Bernie Greenberg, who discovered that it was&#8239;<a href="#foot-2">[2]</a>.  He wrote a version of Emacs in Multics MacLisp, and he wrote his commands in MacLisp in a straightforward fashion. The editor itself was written entirely in Lisp. Multics Emacs proved to be a great success&mdash;programming new editing commands was so convenient that even the secretaries in his office started learning how to use it. They used a manual someone had written which showed how to extend Emacs, but didn't say it was a programming. So the secretaries, who believed they couldn't do programming, weren't scared off. They read the manual, discovered they could do useful things and they learned to program.
uk: Це відкрив Берні Грінберг&nbsp;<a href="#foot-2">[2]</a>. Він написав версію Emacs на MacLisp в Multics, і написані ним MacLisp-команди були прості й зрозумілі. Сам редактор був повністю написаний на Ліспі. Emacs для Multics мав великий успіх&nbsp;&mdash; програмування нових команд редагування було таким зручним, що навіть секретарки в його конторі почали навчання користуванню ним. Вони користувалися написаним кимось посібником, у якому було показано, як доповнювати Emacs, але там не говорилося, що це програмування. Тому секретарок, які думали, що не можуть програмувати, це не відлякувало. Вони читали посібник, виявляли, що можуть робити щось корисне, і вчилися програмувати.

note: type: Content of: <div><p>
en: So Bernie saw that an application&mdash;a program that does something useful for you&mdash;which has Lisp inside it and which you could extend by rewriting the Lisp programs, is actually a very good way for people to learn programming. It gives them a chance to write small programs that are useful for them, which in most arenas you can't possibly do. They can get encouragement for their own practical use&mdash;at the stage where it's the hardest&mdash;where they don't believe they can program, until they get to the point where they are programmers.
uk: Отож, Берні зрозумів, що застосунок &mdash; програма, яка робить щось корисне для вас&nbsp;&mdash; всередині якої був Лісп і яку ви можете доповнювати, переписуючи програми на Ліспі, &mdash; насправді дуже хороший спосіб навчитися програмувати. Це дає людям можливість писати невеликі програми, які для них корисні; інші середовища не дають вам такої змоги. Вони можуть отримувати заохочення від практичної користі для них самих на стадії, де це найважче&nbsp;&mdash; коли вони не думають, що можуть програмувати, &mdash; поки вони не дійдуть до точки, в якої вони вже стали програмістами.

note: type: Content of: <div><p>
en: At that point, people began to wonder how they could get something like this on a platform where they didn't have full service Lisp implementation. Multics MacLisp had a compiler as well as an interpreter&mdash;it was a full-fledged Lisp system&mdash;but people wanted to implement something like that on other systems where they had not already written a Lisp compiler. Well, if you didn't have the Lisp compiler you couldn't write the whole editor in Lisp&mdash;it would be too slow, especially redisplay, if it had to run interpreted Lisp.  So we developed a hybrid technique. The idea was to write a Lisp interpreter and the lower level parts of the editor together, so that parts of the editor were built-in Lisp facilities. Those would be whatever parts we felt we had to optimize. This was a technique that we had already consciously practiced in the original Emacs, because there were certain fairly high level features which we re-implemented in machine language, making them into TECO primitives. For instance, there was a TECO primitive to fill a paragraph (actually, to do most of the work of filling a paragraph, because some of the less time-consuming parts of the job would be done at the higher level by a TECO program). You could do the whole job by writing a TECO program, but that was too slow, so we optimized it by putting part of it in machine language. We used the same idea here (in the hybrid technique), that most of the editor would be written in Lisp, but certain parts of it that had to run particularly fast would be written at a lower level.
uk: У цей момент люди почали міркувати, як отримати щось подібне на платформі, де у них не було повної реалізації Ліспа. У MacLisp для Multics був компілятор та інтерпретатор&nbsp;&mdash; це була повністю оснащена система Лісп&nbsp;&mdash; але людям кортілося впровадити подібне на інших системах, де у них не було вже написаного компілятора Ліспа. Ну, якщо у вас немає компілятора Ліспа, ви не можете написати весь редактор на Ліспі&nbsp;&mdash; він був би занадто повільним, особливо перемальовування, якби довелося виконувати Лісп на інтерпретаторі. Через це ми розробили гібридну техніку. Ідея полягала в тому, щоб писати інтерпретатор Ліспа й низькорівневі частини редактора разом: тоді частини редактора ставали вбудованими засобами Ліспа. Це були б будь-які частини, в оптимізації яких ми відчували необхідність. Цю  методику ми вже свідомо практикували у первісному Emacs, тому що були певні вельми високорівневі функції, які ми втілили ще раз на машинній мові, переробивши їх на примітиви TECO. Наприклад, був примітив TECO для заповнення абзацу (насправді лише для основної роботи з заповнення абзацу, тому що деякі з менш ресурсомістких робіт виконувалися на вищому рівні програмою TECO). Можна було б виконувати всю роботу програмою, написаною на TECO, але це було занадто повільно, тож ми оптимізували це, перенісши частину програми на машинну мову. Тут (у гібридній техніці) ми скористалися тією ж ідеєю: велика частина редактора буде написана на Ліспі, але певні його частини, які потрібно було виконувати особливо швидко, будуть написані на низькому рівні.

note: type: Content of: <div><p>
en: Therefore, when I wrote my second implementation of Emacs, I followed the same kind of design. The low level language was not machine language anymore, it was C. C was a good, efficient language for portable programs to run in a Unix-like operating system. There was a Lisp interpreter, but I implemented facilities for special purpose editing jobs directly in C&mdash;manipulating editor buffers, inserting leading text, reading and writing files, redisplaying the buffer on the screen, managing editor windows.
uk: Таким чином, коли я писав свою другу реалізацію Emacs, я дотримувався цієї  схеми. Мова низького рівня більше не була машинною мовою, це був Сі. Сі виявилася доброю, ефективною мовою для переносних програм, призначених для виконання у операційних системах на кшталт Unix. Там був інтерпретатор Ліспа, але я реалізував засоби для вирішення спеціальних завдань редагування безпосередньо на Сі&nbsp;&mdash; сюди входили маніпуляція буферами редактора, вставка тексту на початок, читання і запис файлів, оновлення буфера на екрані, управління вікнами редактора.

note: type: Content of: <div><p>
en: Now, this was not the first Emacs that was written in C and ran on Unix. The first was written by James Gosling, and was referred to as GosMacs. A strange thing happened with him. In the beginning, he seemed to be influenced by the same spirit of sharing and cooperation of the original Emacs. I first released the original Emacs to people at MIT. Someone wanted to port it to run on Twenex&mdash;it originally only ran on the Incompatible Timesharing System we used at MIT. They ported it to Twenex, which meant that there were a few hundred installations around the world that could potentially use it. We started distributing it to them, with the rule that &ldquo;you had to send back all of your improvements&rdquo; so we could all benefit. No one ever tried to enforce that, but as far as I know people did cooperate.
uk: До речі, це був не перший Emacs, написаний на Сі й виконуваний на Unix. Перший — GosMacs — був написаний Джеймсом Гослінгом. З ним трапилася дивна історія. Спочатку він, здавалося, перебував під впливом тієї ж самої атмосфери обміну і співробітництва початкового Emacs. Я спочатку випускав початковий Emacs для людей в Массачусетському технологічному інституті. Дехто захотів перенести його на Twenex&nbsp;&mdash; спочатку редактор працював тільки у Несумісній системі поділу часу, якою ми користувалися в інституті. Вони перенесли його на Twenex, і це означало, що в світі було кілька сотень обчислювальних систем, в яких потенційно можна було його застосовувати. Ми почали поширення серед них із правилом &ldquo;ви повинні надсилати назад свої поліпшення&rdquo;, щоб ми всі могли отримувати з цього користь. Ніхто ніколи не намагався стежити за дотриманням цього, але наскільки я знаю, люди дійсно співпрацювали.

note: type: Content of: <div><p>
en: Gosling did, at first, seem to participate in this spirit. He wrote in a manual that he called the program Emacs hoping that others in the community would improve it until it was worthy of that name. That's the right approach to take towards a community&mdash;to ask them to join in and make the program better. But after that he seemed to change the spirit, and sold it to a company.
uk: І Гослінг, на перших порах, здавалося, брав у цьому участь. Він написав підручник, в якому він називав цю програму Emacs, сподіваючися, що інші члени співтовариства будуть покращувати її, поки вона не заслужить цієї назви. Це був правильний підхід до спільноти&nbsp;&mdash; просити їх приєднатися і поліпшувати програму. Але після цього його ставлення, здається, змінилося, і він продав програму одній компанії.

note: type: Content of: <div><p>
en: At that time I was working on the GNU system (a free software Unix-like operating system that many people erroneously call &ldquo;Linux&rdquo;).  There was no free software Emacs editor that ran on Unix. I did, however, have a friend who had participated in developing Gosling's Emacs. Gosling had given him, by email, permission to distribute his own version. He proposed to me that I use that version. Then I discovered that Gosling's Emacs did not have a real Lisp. It had a programming language that was known as &ldquo;mocklisp,&rdquo; which looks syntactically like Lisp, but didn't have the data structures of Lisp.  So programs were not data, and vital elements of Lisp were missing.  Its data structures were strings, numbers and a few other specialized things.
uk: В цей час я працював над системою GNU (вільною операційною системою типу Unix, яку багато хто помилково називає &ldquo;Linux&rdquo;). Вільного редактора Emacs, який працював би в Unix, не існувало. Проте був у мене знайомий, який брав участь у розробці Emacs Гослінга, котрий надав йому е-поштою дозвіл поширювати власну версію. Знайомий запропонував мені скористатися цією версією. Тоді я виявив, що в Emacs Гослінга не було справжнього Ліспа. В ньому була мова програмування, відома як &ldquo;mocklisp&rdquo;, вона синтаксично виглядає як Лісп, але в ній немає структур даних Ліспа. Тому програми не були даними і не вистачало життєво важливих елементів Ліспа. Його структурами даних були рядки, числа і деякі інші спеціалізовані об'єкти.

note: type: Content of: <div><p>
en: I concluded I couldn't use it and had to replace it all, the first step of which was to write an actual Lisp interpreter. I gradually adapted every part of the editor based on real Lisp data structures, rather than ad hoc data structures, making the data structures of the internals of the editor exposable and manipulable by the user's Lisp programs.
uk: Я дійшов висновку, що користуватись цим неможливо, тож був змушений замінити це все. Першим кроком було написання справжнього інтерпретатора Ліспа. Я поступово перебазував кожну частину редактора на справжні структури даних Ліспа замість вузькоспеціалізованих структур даних, створивши можливість виведення внутрішніх структур даних редактора і маніпуляцій ними у користувацьких програмах на Ліспі.

note: type: Content of: <div><p>
en: The one exception was redisplay. For a long time, redisplay was sort of an alternate world. The editor would enter the world of redisplay and things would go on with very special data structures that were not safe for garbage collection, not safe for interruption, and you couldn't run any Lisp programs during that. We've changed that since&mdash;it's now possible to run Lisp code during redisplay. It's quite a convenient thing.
uk: Єдиним винятком був показ на дисплеї. Довгий час оновлення дисплея було ніби іншим світом. Редактор вступав у світ перемальовування, і все починало проводитися над абсолютно особливими структурами даних, для яких не було безпечного збору сміття, не було безпечних переривань, і в цей час не можна було виконувати ніяких програм на Ліспі. З тих пір ми це змінили: зараз можна виконувати програми на Ліспі під час перемальовування. Це дуже зручно.

note: type: Content of: <div><p>
en: This second Emacs program was &ldquo;free software&rdquo; in the modern sense of the term&mdash;it was part of an explicit political campaign to make software free. The essence of this campaign was that everybody should be free to do the things we did in the old days at MIT, working together on software and working with whomever wanted to work with us.  That is the basis for the free software movement&mdash;the experience I had, the life that I've lived at the MIT AI lab&mdash;to be working on human knowledge, and not be standing in the way of anybody's further using and further disseminating human knowledge.
uk: Ця друга програма Emacs була &ldquo;вільною програмою&rdquo; в сучасному розумінні цього слова&nbsp;&mdash; вона була частиною відкритої політичної кампанії за звільнення програм. Сутність цієї кампанії полягала в тому, що кожен має право вільно робити те, що ми у старі часи робили в Массачусетському технологічному інституті, працюючи разом над програмами і працюючи з усіма, хто тільки бажав працювати з нами. Це стало  основою руху за вільне програмне забезпечення&nbsp;&mdash; на основі досвіду мого життя в Лабораторії штучного інтелекту&nbsp;&mdash; працюйте над людським знанням і не стовбичте ні в кого на шляху до подальшого застосування та подальшого поширення людського знання.

note: type: Content of: <div><p>
en: At the time, you could make a computer that was about the same price range as other computers that weren't meant for Lisp, except that it would run Lisp much faster than they would, and with full type checking in every operation as well. Ordinary computers typically forced you to choose between execution speed and good typechecking.  So yes, you could have a Lisp compiler and run your programs fast, but when they tried to take <code>car</code> of a number, it got nonsensical results and eventually crashed at some point.
uk: В цей час можна було зробити комп'ютер, який коштував приблизно стільки ж, скільки інші комп'ютери, не призначені для Ліспа, але він виконував би Лісп набагато швидше, ніж вони, і при цьому з повною перевіркою типів на кожній операції. Звичайні комп'ютери, як правило, змушували вибирати між швидкістю виконання і хорошою перевіркою типів. Отож, звичайно, можна було отримати компілятор Ліспа і швидко виконувати програми, але коли вони намагалися взяти <code>car</code> від числа, це призводило до безглуздих результатів і врешті-решт коли-небудь призводило до збою.

note: type: Content of: <div><p>
en: The Lisp machine was able to execute instructions about as fast as those other machines, but each instruction&mdash;a <code>car</code> instruction would do data typechecking&mdash;so when you tried to get the <code>car</code> of a number in a compiled program, it would give you an immediate error. We built the machine and had a Lisp operating system for it. It was written almost entirely in Lisp, the only exceptions being parts written in the microcode. People became interested in manufacturing them, which meant they should start a company.
uk: Машина Ліспа була в змозі виконувати команди майже так само швидко, як ті інші машини, але кожна команда, як-от <code>car</code>, перевіряла типи даних&nbsp;&mdash; тому коли ви намагалися взяти <code>car</code> від числа у скомпільованій програмі, це негайно давало помилку. Ми побудували машину і у нас була для неї операційна система на Ліспі. Вона майже повністю була написана на Ліспі, за винятком частин, записаних мікрокодом. Виник інтерес до виробництва машин, а це означало, що потрібно створити компанію.

note: type: Content of: <div><p>
en: There were two different ideas about what this company should be like.  Greenblatt wanted to start what he called a &ldquo;hacker&rdquo; company. This meant it would be a company run by hackers and would operate in a way conducive to hackers. Another goal was to maintain the AI Lab culture&#8239;<a class="ftn" href="#foot-3">[3]</a>.  Unfortunately, Greenblatt didn't have any business experience, so other people in the Lisp machine group said they doubted whether he could succeed. They thought that his plan to avoid outside investment wouldn't work.
uk: Було два різних уявлення про те, якою повинна бути ця компанія. Грінблет хотів створити те, що він називав &ldquo;хакерською&rdquo; компанією. Це означало, що компанією керували б хакери сприятливим саме для хакерів чином. Іншою метою була підтримка культури Лабораторії штучного інтелекту&nbsp;<a class="ftn" href="#foot-3">[3]</a>. На жаль, у Грінблета не було ніякого ділового досвіду, тому інші люди з групи машини Ліспа говорили, що вони сумніваються в його спроможності  це зробити. Вони думали, що уникнути зовнішніх капіталовкладень, як він планував, не вдасться.

note: type: Content of: <div><p>
en: Why did he want to avoid outside investment? Because when a company has outside investors, they take control and they don't let you have any scruples. And eventually, if you have any scruples, they also replace you as the manager.
uk: Але чому він хотів уникнути зовнішніх капіталовкладень? Тому що коли у компанії є зовнішні вкладники, вони беруть контроль в свої руки і не дозволяють вам бути педантичним; а якщо ви скільки-небудь педантичні, то вони врешті-решт поставлять на керівну посаду кого-небудь іншого.

note: type: Content of: <div><p>
en: So Greenblatt had the idea that he would find a customer who would pay in advance to buy the parts. They would build machines and deliver them; with profits from those parts, they would then be able to buy parts for a few more machines, sell those and then buy parts for a larger number of machines, and so on. The other people in the group thought that this couldn't possibly work.
uk: Отож, у Грінблета була думка, що він знайде клієнта, який платитиме за складники наперед. Вони збирали б машини й поставляли їх йому; отримуючи таким чином дохід із цих складників, вони змогли б купувати складники ще для декількох машин, продавати їх і купувати складники для більшого числа машин тощо. Інші люди з групи думали, що так працювати не вийде.

note: type: Content of: <div><p>
en: Greenblatt then recruited Russell Noftsker, the man who had hired me, who had subsequently left the AI Lab and created a successful company.  Russell was believed to have an aptitude for business. He demonstrated this aptitude for business by saying to the other people in the group, &ldquo;Let's ditch Greenblatt, forget his ideas, and we'll make another company.&rdquo; Stabbing in the back, clearly a real businessman. Those people decided they would form a company called Symbolics. They would get outside investment, not have scruples, and do everything possible to win.
uk: Грінблет залучив Расселла Нофтскера, людину, яка найняла мене, а згодом пішла з Лабораторії штучного інтелекту і створила прибуткову компанію. Вважалося, що у Расселла є ділова хватка. Він продемонстрував цю ділову хватку, сказавши людям в групі: &ldquo;Давайте кинемо Грінблета, забудемо про його ідеї й створимо іншу компанію&rdquo;. Вдарив у спину, зовсім як справжній підприємець. Ці люди вирішили сформувати компанію під назвою &ldquo;Symbolics&rdquo;, залучати зовнішній капітал, не бути педантичними і робити все можливе, щоб перемогти.

note: type: Content of: <div><p>
en: But Greenblatt didn't give up. He and the few people loyal to him decided to start Lisp Machines Inc. anyway and go ahead with their plans. And what do you know, they succeeded! They got the first customer and were paid in advance. They built machines and sold them, and built more machines and more machines. They actually succeeded even though they didn't have the help of most of the people in the group. Symbolics also got off to a successful start, so you had two competing Lisp machine companies. When Symbolics saw that LMI was not going to fall flat on its face, they started looking for ways to destroy it.
uk: Але Грінблет не відступив. Він і деякі лояльні по відношенню до нього люди вирішили все одно утворити Lisp Machines Inc. і працювати за своїм планом. І що б ви думали? Їм це вдалося! У них з'явився перший клієнт, і їм заплатили наперед. Вони збирали машини, продавали їх і збирали ще і ще. Врешті-решт вони стали на ноги, незважаючи на те, що більшість людей в групі їм не допомагали. Компанія Symbolics також почала успішну діяльність, тобто дві компанії конкурували у виробництві Лісп-машин. Коли в Symbolics зрозуміли, що LMI не думає вилітати в трубу, вони стали шукати способи зруйнувати її.

note: type: Content of: <div><p>
en: Thus, the abandonment of our lab was followed by &ldquo;war&rdquo; in our lab.  The abandonment happened when Symbolics hired away all the hackers, except me and the few who worked at LMI part-time. Then they invoked a rule and eliminated people who worked part-time for MIT, so they had to leave entirely, which left only me. The AI lab was now helpless.  And MIT had made a very foolish arrangement with these two companies.  It was a three-way contract where both companies licensed the use of Lisp machine system sources. These companies were required to let MIT use their changes. But it didn't say in the contract that MIT was entitled to put them into the MIT Lisp machine systems that both companies had licensed. Nobody had envisioned that the AI lab's hacker group would be wiped out, but it was.
uk: Таким чином, за відходом з нашої лабораторії настала &ldquo;війна&rdquo; в нашій лабораторії. Відхід стався, коли компанія Symbolics переманила всіх хакерів, крім мене і тих, хто за сумісництвом працював у LMI. Потім вони встановили правило і виключили тих, хто за сумісництвом працював в інституті, тому їм довелося піти повністю, і я залишився один. Тепер Лабораторія штучного інтелекту була безпорадна. А інститут уклав з цими двома компаніями одну дуже дурну угоду. Це був тристоронній договір, у якому обидві компанії ліцензували вихідні тексти системи машини Ліспа. Ці компанії повинні були надавати свої зміни в користування інституту. Але в договорі не говорилося, що інститут має право розміщувати їх в системах своїх Лісп-машин, які ліцензували обидві компанії. Ніхто не передбачав, що групу хакерів Лабораторії штучного інтелекту розженуть, але так і сталося.

note: type: Content of: <div><p>
en: So Symbolics came up with a plan&#8239;<a href="#foot-4">[4]</a>.  They said to the lab, &ldquo;We will continue making our changes to the system available for you to use, but you can't put it into the MIT Lisp machine system. Instead, we'll give you access to Symbolics' Lisp machine system, and you can run it, but that's all you can do.&rdquo;
uk: Отже, в Symbolics дозрів план&nbsp;<a href="#foot-4">[4]</a>. Вони сказали лабораторії: «Ми продовжимо надавати у ваше користування свої зміни в системі, але вам не можна розміщувати їх в системі Лісп-машини інституту. Замість цього ми надамо вам доступ до системи Лісп-машини Symbolics, і ви зможете працювати на ній, але це все, що ви можете робити.»

note: type: Content of: <div><p>
en: This, in effect, meant that they demanded that we had to choose a side, and use either the MIT version of the system or the Symbolics version.  Whichever choice we made determined which system our improvements went to. If we worked on and improved the Symbolics version, we would be supporting Symbolics alone. If we used and improved the MIT version of the system, we would be doing work available to both companies, but Symbolics saw that we would be supporting LMI because we would be helping them continue to exist. So we were not allowed to be neutral anymore.
uk: Це фактично означало, що вони зажадали від нас стати на той чи інший бік і користуватися або версією інституту, або версією Symbolics. Що б ми не вибрали, це визначало б, в яку систему підуть наші удосконалення. Якби ми працювали над версією Symbolics і вдосконалювали її, ми підтримували б тільки Symbolics. Якби ми користувалися версією інституту і вдосконалювали її, ми надавали б роботу в розпорядження обох компаній, але в Symbolics вважали це підтримкою саме LMI з нашого боку, тому що ми допомагали б їм продовжувати існування. Отож, нам не дозволили залишатися нейтральними.

note: type: Content of: <div><p>
en: Up until that point, I hadn't taken the side of either company, although it made me miserable to see what had happened to our community and the software.  But now, Symbolics had forced the issue.  So, in an effort to help keep Lisp Machines Inc. going&#8239;<a href="#foot-5">[5]</a>&mdash;I began duplicating all of the improvements Symbolics had made to the Lisp machine system.  I wrote the equivalent improvements again myself (i.e., the code was my own).
uk: Аж до цього моменту я не приймав сторону жодної з компаній, хоча мені було боляче бачити, що сталося з нашим співтовариством і програмами. Але тепер компанія Symbolics примушувала мене до цього. Отже, намагаючись допомогти компанії Lisp Machines Inc. втриматися на плаву&nbsp;<a href="#foot-5">[5]</a>, я почав дублювати всі поліпшення в системі машини Ліспа, які робили в Symbolics. Я писав еквівалентні поліпшення сам (тобто тексти програм були моїми власними).

note: type: Content of: <div><p>
en: After a while&#8239;<a href="#foot-6">[6]</a>, I came to the conclusion that it would be best if I didn't even look at their code. When they made a beta announcement that gave the release notes, I would see what the features were and then implement them. By the time they had a real release, I did too.
uk: Через деякий час&nbsp;<a href="#foot-6">[6]</a> я дійшов висновку, що краще за все навіть не заглядати в їхні тексти. Коли вони оголошували про випуск випробувальної версії й описували її нововведення, я дивився, які там були функції, а потім впроваджував їх. До того часу, як вони випускали остаточну версію, я теж випускав таку версію.

note: type: Content of: <div><p>
en: In this way, for two years, I prevented them from wiping out Lisp Machines Incorporated, and the two companies went on. But, I didn't want to spend years and years punishing someone, just thwarting an evil deed. I figured they had been punished pretty thoroughly because they were stuck with competition that was not leaving or going to disappear&#8239;<a href="#foot-7">[7]</a>.  Meanwhile, it was time to start building a new community to replace the one that their actions and others had wiped out.
uk: Таким чином, протягом двох років я не давав їм покінчити з LMI, і обидві компанії продовжували роботу. Але я не хотів витрачати довгі роки на те, щоб покарати когось, просто заважаючи злій справі. Я побачив, що вони покарані досить ґрунтовно, тому що вони натрапили на конкуренцію, яка не йшла і не збиралася зникати&nbsp;<a href="#foot-7">[7]</a>. Тим часом настала пора почати облаштування нового співтовариства замість того, яке було знищено їхніми діями та діями інших.

note: type: Content of: <div><p>
en: The Lisp community in the 70s was not limited to the MIT AI Lab, and the hackers were not all at MIT. The war that Symbolics started was what wiped out MIT, but there were other events going on then. There were people giving up on cooperation, and together this wiped out the community and there wasn't much left.
uk: У сімдесятих роках співтовариство Ліспа не обмежувалося Лабораторією штучного інтелекту Массачусетського технологічного інституту, і не всі хакери були в цьому інституті. Війна, яку розпочала компанія Symbolics, спустошила Массачусетський технологічний інститут, але в той час відбувалися й інші події. Люди припиняли діяти спільно, і все це разом спустошило наше співтовариство, і від нього майже нічого не залишилося.

note: type: Content of: <div><p>
en: Once I stopped punishing Symbolics, I had to figure out what to do next. I had to make a free operating system, that was clear&mdash;the only way that people could work together and share was with a free operating system.
uk: Припинивши карати Symbolics, мені довелося планувати наступні дії. Мені потрібно було зробити вільну операційну систему, це було ясно&nbsp;&mdash; єдиним способом дати людям спільно працювати і обмінюватися була вільна операційна система.

note: type: Content of: <div><p>
en: At first, I thought of making a Lisp-based system, but I realized that wouldn't be a good idea technically. To have something like the Lisp machine system, you needed special purpose microcode. That's what made it possible to run programs as fast as other computers would run their programs and still get the benefit of typechecking. Without that, you would be reduced to something like the Lisp compilers for other machines. The programs would be faster, but unstable. Now that's okay if you're running one program on a timesharing system&mdash;if one program crashes, that's not a disaster, that's something your program occasionally does. But that didn't make it good for writing the operating system in, so I rejected the idea of making a system like the Lisp machine.
uk: Спершу я думав про створення системи на базі Ліспа, але усвідомив, що з технічної точки зору це не добре. Щоб отримати щось подібне до системи машини Ліспа, потрібен мікрокод спеціального призначення. Саме це дозволяло виконувати програми так само швидко, як інші комп'ютери виконували свої програми, і при цьому ще й користуватися перевіркою типів. Без цього усе звелося б до чогось на кшталт компіляторів Ліспа для інших машин. Програми були б швидшими, але водночас нестабільними. Так от, це припустимо, якщо виконувати одну програму на системі з поділом часу&nbsp;&mdash; якщо одна програма дає збій, це не катастрофа, це щось цілком очікуване від програми. Але це робило її не досить гарною, щоб писати на ній операційну систему, тому я відмовився від думки про те, щоб зробити систему на взірець Лісп-машини.

note: type: Content of: <div><p>
en: I decided instead to make a Unix-like operating system that would have Lisp implementations to run as user programs. The kernel wouldn't be written in Lisp, but we'd have Lisp. So the development of that operating system, the GNU operating system, is what led me to write the GNU Emacs. In doing this, I aimed to make the absolute minimal possible Lisp implementation. The size of the programs was a tremendous concern.
uk: Замість цього я вирішив зробити операційну систему типу Unix, в якій були б реалізації Ліспа для виконання користувацьких програм. Ядро було б написаним не на Ліспі, але Лісп у нас був би. Тому сама розробка цієї операційної системи, операційної системи GNU, привела мене до написання GNU Emacs. В процесі цього я прагнув зробити абсолютно мінімально можливу реалізацію Ліспа. Розмір програм мав надзвичайне значення.

note: type: Content of: <div><p>
en: There were people in those days, in 1985, who had one-megabyte machines without virtual memory. They wanted to be able to use GNU Emacs. This meant I had to keep the program as small as possible.
uk: У той час, у&nbsp;1985&nbsp;році, в деяких людей ще були одномегабайтові машини без віртуальної пам'яті. Вони хотіли бути в змозі використовувати GNU Emacs. Це означало, що мені потрібно було робити програму якнайменшою.

note: type: Content of: <div><p>
en: For instance, at the time the only looping construct was <code>while</code>, which was extremely simple. There was no way to break out of the <code>while</code> statement, you just had to do a catch and a throw, or test a variable that ran the loop. That shows how far I was pushing to keep things small. We didn't have <code>caar</code> and <code>cadr</code> and so on; &ldquo;squeeze out everything possible&rdquo; was the spirit of GNU Emacs, the spirit of Emacs Lisp, from the beginning.
uk: Наприклад, у той час єдиною циклічною конструкцією була <code>while</code> у примітивній формі. Не було ніяких способів дострокового виходу з оператора <code>while</code>: доводилося просто користуватися механізмом винятків або перевіряти змінну в циклі. Це показує, як далеко я зайшов у обмеженнях на розмір. У нас не було <code>caar</code>, <code>cadr</code> тощо; &ldquo;вичавити все можливе&rdquo;&nbsp;&mdash; таким духом був просякнутий GNU Emacs і його Лісп з самого початку.

note: type: Content of: <div><p>
en: Obviously, machines are bigger now, and we don't do it that way any more. We put in <code>caar</code> and <code>cadr</code> and so on, and we might put in another looping construct one of these days. We're willing to extend it some now, but we don't want to extend it to the level of common Lisp. I implemented Common Lisp once on the Lisp machine, and I'm not all that happy with it. One thing I don't like terribly much is keyword arguments&#8239;<a href="#foot-8">[8]</a>.  They don't seem quite Lispy to me; I'll do it sometimes but I minimize the times when I do that.
uk: Зрозуміло, машини зараз більші, тож ми вже так не робимо. Ми заклали <code>caar</code>, <code>cadr</code> і так далі, і зараз при нагоді ми могли б закласти іншу циклічну конструкцію. Ми охоче розширимо його в деяких межах, але ми не хочемо розширювати його до рівня Common Lisp. Я одного разу реалізовував Common Lisp на Лісп-машині, й мені він не так вже й сподобався. Одна з речей, які мені страшенно не подобаються,&nbsp;&mdash; це аргументи — ключові слова&nbsp;<a href="#foot-8">[8]</a>. На мій погляд, вони виглядають зовсім не по-ліспівськи; іноді я пишу так, але зводжу до мінімуму кількість випадків, коли я це роблю.

note: type: Content of: <div><p>
en: That was not the end of the GNU projects involved with Lisp. Later on around 1995, we were looking into starting a graphical desktop project. It was clear that for the programs on the desktop, we wanted a programming language to write a lot of it in to make it easily extensible, like the editor. The question was what it should be.
uk: На цьому проекти GNU, пов'язані з Ліспом, не закінчилися. Згодом, приблизно в&nbsp;1995&nbsp;році, ми розмірковували над організацією проекту графічної стільниці. Було ясно, що стільничні програми нам потрібно писати переважно такою мовою програмування, яка робила б стільницю легко розширюваною, ніби наш редактор. Постало питання того, яку мову обрати.

note: type: Content of: <div><p>
en: At the time, <abbr title="Tool Command Language">TCL</abbr> was being pushed heavily for this purpose. I had a very low opinion of TCL, basically because it wasn't Lisp. It looks a tiny bit like Lisp, but semantically it isn't, and it's not as clean.  Then someone showed me an ad where Sun was trying to hire somebody to work on TCL to make it the &ldquo;de-facto standard extension language&rdquo; of the world. And I thought, &ldquo;We've got to stop that from happening.&rdquo; So we started to make Scheme the standard extensibility language for GNU. Not Common Lisp, because it was too large. The idea was that we would have a Scheme interpreter designed to be linked into applications in the same way TCL was linked into applications. We would then recommend that as the preferred extensibility package for all GNU programs.
uk: У той час для таких цілей посилено просували <abbr title="Tool Command Language — мову контролю знарядь">TCL</abbr>. Я був дуже невисокої думки про TCL, оскільки це був зовсім не Лісп: TCL злегка нагадує Лісп, але семантично відрізняється й не така елегантна. Потім мені показали оголошення: компанія Sun намагалася найняти кого-небудь для роботи над TCL, щоб зробити його &ldquo;стандартом де-факто для мови розширень&rdquo; в усьому світі. А я подумав: &ldquo;Нам потрібно запобігти цьому&rdquo;. Тому ми почали робити Scheme стандартною мовою розширень GNU. Не Common Lisp, бо він був занадто великий. Ідея була в тому, щоб розробити інтерпретатор Scheme, спроектований для компонування у застосунки по аналогії з TCL, і радити всім програмам GNU використовувати саме його для втілення розширень.

note: type: Content of: <div><p>
en: There's an interesting benefit you can get from using such a powerful language as a version of Lisp as your primary extensibility language.  You can implement other languages by translating them into your primary language. If your primary language is TCL, you can't very easily implement Lisp by translating it into TCL. But if your primary language is Lisp, it's not that hard to implement other things by translating them. Our idea was that if each extensible application supported Scheme, you could write an implementation of TCL or Python or Perl in Scheme that translates that program into Scheme. Then you could load that into any application and customize it in your favorite language and it would work with other customizations as well.
uk: Є одна цікава вигода, яку можна отримати з застосування такої потужної мови, як варіант Ліспа, в якості первинної мови розширень. Ви можете втілювати інші мови перекладом їх вашою первинною мовою. Якщо ваша первинна мова&nbsp;&mdash; TCL, ви не можете легко втілити Лісп перекладом його на TCL. Але якщо ваш первинна мова&nbsp;&mdash; Лісп, то неважко реалізовувати інші мови, перекладаючи їх. Наша ідея полягала в тому, що якби кожний відкритий застосунок підтримував Scheme, то ви могли б написати на Scheme реалізацію TCL, Python або Perl, яка перекладає ту чи іншу програму на Scheme. Тоді ви могли б завантажити її в будь-який застосунок, надбудувати його своєю улюбленою мовою — й надбудова вашою мовою працювала б разом з іншими.

note: type: Content of: <div><p>
en: As long as the extensibility languages are weak, the users have to use only the language you provided them. Which means that people who love any given language have to compete for the choice of the developers of applications&mdash;saying &ldquo;Please, application developer, put my language into your application, not his language.&rdquo; Then the users get no choices at all&mdash;whichever application they're using comes with one language and they're stuck with [that language]. But when you have a powerful language that can implement others by translating into it, then you give the user a choice of language and we don't have to have a language war anymore. That's what we're hoping Guile, our scheme interpreter, will do. We had a person working last summer finishing up a translator from Python to Scheme. I don't know if it's entirely finished yet, but for anyone interested in this project, please get in touch. So that's the plan we have for the future.
uk: Використання слабких мов розширення примушує користувачів застосовувати лише ту мову, яку ви їм надаєте. Тобто прихильникам різних мов доводиться змагатися за вибір розробників застосунків, кажучи розробнику програми: «Закладіть, будь ласка, в свій застосунок мою мову, а не його». Тоді у користувачів взагалі не буде вибору: яким би застосунком вони не користувалися, його мову вже обрано й у них нема альтернатив. Але коли у вас потужна мова, здатна реалізовувати інші мови, перекладаючи їх, то ви надаєте користувачеві вибір мови, і нам більше не доводиться вести війну мов. Саме цього, як ми сподіваємося, досягне Guile — наш інтерпретатор Scheme. У нас є людина, яка цього літа працює над завершенням транслятора з Python на Scheme. Я не знаю, чи повністю він завершений, але якщо ви зацікавлені в цьому проекті — зв'яжіться, будь ласка. Ось такі у нас плани на майбутнє.

note: type: Content of: <div><p>
en: I haven't been speaking about free software, but let me briefly tell you a little bit about what that means. Free software does not refer to price; it doesn't mean that you get it for free. (You may have paid for a copy, or gotten a copy gratis.) It means that you have freedom as a user. The crucial thing is that you are free to run the program, free to study what it does, free to change it to suit your needs, free to redistribute the copies of others and free to publish improved, extended versions. This is what free software means. If you are using a nonfree program, you have lost crucial freedom, so don't ever do that.
uk: Я ще не згадував вільне програмне забезпечення, але дозвольте мені коротко розповісти вам трохи про те, що це означає. Вираз &ldquo;вільна програма&rdquo; передбачає не вартість; воно не означає, що ви отримаєте її безкоштовно. (Можливо, ви заплатили за копію або отримали копію безкоштовно.) Воно означає, що у вас як у користувача є свобода. Життєво важливо те, що ви вільні виконувати програму, вільні вивчати, що вона робить, вільні змінювати її під свої потреби, вільні розповсюджувати копії інших і вільні публікувати поліпшені, розширені версії. Ось що означає вільна програма. Якщо ви користуєтеся невільною програмою, то ви втратили життєво важливу свободу, тому ніколи цього не робіть.

note: type: Content of: <div><p>
en: The purpose of the GNU project is to make it easier for people to reject freedom-trampling, user-dominating, nonfree software by providing free software to replace it. For those who don't have the moral courage to reject the nonfree software, when that means some practical inconvenience, what we try to do is give a free alternative so that you can move to freedom with less of a mess and less of a sacrifice in practical terms. The less sacrifice the better. We want to make it easier for you to live in freedom, to cooperate.
uk: Призначення проекту GNU полягає в тому, щоб полегшити людям відмову від зневажаючих свободу, пануючих над користувачем невільних програм наданням вільних програм для їхньої заміни. Для тих, у кого немає моральних сил для відмови від невільних програм, коли це означає яку-небудь практичну незручність,&mdash; для них ми намагаємося дати вільну альтернативу, щоб ви могли перейти до свободи з меншими зусиллями і меншими жертвами в практичному сенсі. Чим менші жертви, тим краще. Ми хочемо полегшити для вас співпрацю і вільне життя.

note: type: Content of: <div><p>
en: This is a matter of the freedom to cooperate. We're used to thinking of freedom and cooperation with society as if they are opposites. But here they're on the same side. With free software you are free to cooperate with other people as well as free to help yourself. With nonfree software, somebody is dominating you and keeping people divided. You're not allowed to share with them, you're not free to cooperate or help society, anymore than you're free to help yourself.  Divided and helpless is the state of users using nonfree software.
uk: Співпраця&nbsp;&mdash; це питання свободи. Ми звикли думати про свободу і співпрацю з суспільством як про протилежності. Але в даному випадку вони на одному боці. При вільних програмах ви вільні співпрацювати з іншими й допомагати самим собі. При невільних програмах хтось домінує над вами і роз'єднує людей. Вам не дозволяють обмінюватися з ними, ви не вільні співпрацювати або допомагати суспільству, точно так само, як ви не вільні допомогти самим собі. Роз'єднаність і безпорадність&nbsp;&mdash; стан користувачів, які застосовують невільні програми.

note: type: Content of: <div><p>
en: We've produced a tremendous range of free software. We've done what people said we could never do; we have two operating systems of free software. We have many applications and we obviously have a lot farther to go. So we need your help. I would like to ask you to volunteer for the GNU project; help us develop free software for more jobs. Take a look at <a href="/help/help.html">gnu.org/help</a> to find suggestions for how to help. If you want to order things, there's a link to that from the home page. If you want to read about philosophical issues, look in /philosophy. If you're looking for free software to use, look in /directory, which lists about 1900 packages now (which is a fraction of all the free software out there). Please write more and contribute to us. My book of essays, &ldquo;Free Software and Free Society,&rdquo; is on sale and can be purchased at www.gnu.org&#8239;<a href="#foot-9">[9]</a>.  Happy hacking!
uk: Ми виробили запаморочливе число вільних програм. Ми зробили те, що, як стверджувалося, ми ніколи не зможемо зробити; у нас є дві операційні системи з вільних програм. У нас є безліч застосунків, і нам, очевидно, ще багато належить пройти. Отож, нам потрібна ваша допомога. Я хотів би попросити вас стати добровольцями проекту GNU; допоможіть нам розробити вільні програми для нових завдань. Загляньте на <a href="/help/help.html">gnu.org/help</a> за пропозиціями того, як допомогти. Якщо ви хочете замовити щось, на це є посилання з домашньої сторінки. Якщо ви хочете почитати про філософські питання, загляньте в /philosophy. Якщо ви шукаєте вільні програми для користування, загляньте в /directory, де зараз перераховано близько 1900&nbsp;пакетів (це тільки частинка всіх вільних програм світу). Будь ласка, пишіть нові програми і передавайте нам. Мій збірник нарисів, &ldquo;Вільні програми і вільне суспільство&rdquo;, знаходиться у продажу, і його можна придбати на www.gnu.org&#8239;<a href="#foot-9">[9]</a>. Успішного хакерства!

note: type: Content of: <div><h3>
en: Footnotes
uk: Виноски

note: type: Content of: <div><ol><li>
en: Guy Steele designed the original symmetrical Emacs command set; then he and I began implementing Emacs (on top of TECO), but after one long joint development session, Steele began drifting away, so I finished Emacs.  Others particularly including Eugene C. Cicciarelli and Mike McMahon contributed substantially later on.
uk: Гай Стіл розробив початковий симетричний набір команд Emacs; потім ми з ним почали реалізовувати Emacs (на базі TECO), але після однієї тривалої спільної сесії розробки Стіл втомився, тож Emacs дописав я. Інші, зокрема Юджин Чиччареллі й Майк Макмегон, згодом додали й свої великі внески.

note: type: Content of: <div><ol><li>
en: Bernie Greenberg says that Dan Weinreb's implementation of Emacs for the Lisp Machine came before Greenberg's implementation for Multics.  I apologize for the mistake.
uk: Берні Грінберг стверджує, що реалізація Emacs Дена Вайнреба для Лісп-машини вийшла раніше реалізації Грінберга для Multics. Я прошу вибачення за цю помилку.

note: type: Content of: <div><ol><li>
en: Greenblatt's plan, as I understood it, was to hire lab people part time, so that they could continue working at the AI Lab.  Symbolics hired them full time instead, so they stopped working at MIT.
uk: План Грінблета, наскільки я розумію, полягав у тому, щоб наймати людей з лабораторії за сумісництвом, щоби вони могли продовжувати працювати в Лабораторії штучного інтелекту. Symbolics замість цього наймала їх на повний робочий день, тому вони припиняли працювати в інституті.

note: type: Content of: <div><ol><li>
en: The background of this plan, which I did not state explicitly in the talk, is that during an initial period the ex-AI-Lab hackers, whether at Symbolics or LMI, continued contributing their changes to the MIT Lisp Machine system&mdash;even though the contract did not require this.  Symbolics' plan was to rupture this cooperation unilaterally.
uk: Цей план базувався на тому (у тій промові я цього не сказав явно), що в початковий період колишні хакери Лабораторії штучного інтелекту, як у Symbolics, так і в LMI, продовжували вносити свої зміни в систему Лісп-машини інституту&nbsp;&mdash; хоча за контрактом цього не вимагалося. План Symbolics полягав у тому, щоб перервати цю співпрацю у односторонньому порядку.

note: type: Content of: <div><ol><li>
en: It was not that I cared particularly about the fate of LMI, but rather I did not want to let Symbolics gain through its aggression against the AI Lab.
uk: Не те щоб мене особливо турбувала доля LMI, але я просто не хотів дозволити Symbolics нажитися на своїй агресії по відношенню до Лабораторії штучного інтелекту.

note: type: Content of: <div><ol><li>
en: This statement has been misconstrued as saying that I never, ever looked at Symbolics' code.  Actually it says I did look, at first.  The Symbolics source code was available at MIT, where I was entitled to read it, and at first that's how I found out about their changes.
uk: З цього твердження було зроблено неправильний висновок, що я ніколи-ніколи не заглядав у програми Symbolics. Насправді тут йдеться, що я це робив спочатку. Вихідний текст Symbolics був доступний в інституті, де я мав право його читати, й спочатку саме так я дізнавався про їхні зміни.

note: type: Content of: <div><ol><li><p>
en: But that meant I had to make a special effort to solve each problem differently, in order to avoid copying Symbolics code.  After a while, I concluded it was better not to even look.  That way I could write code in whatever way was best, without concern for what might be in Symbolics' code.
uk: Але тому я був змушений докладати особливих зусиль, щоб розв'язувати кожне завдання по-іншому, аби уникнути копіювання програм Symbolics. Через деякий час я зробив висновок, що краще навіть не дивитися. Так я міг писати програми яким завгодно найкращим чином, не озираючись на те, що могло бути в текстах Symbolics.

note: type: Content of: <div><ol><li>
en: Symbolics at one point protested to MIT that my work, by thwarting their plan, had cost Symbolics a million dollars.
uk: Symbolics якось висловила інституту претензію, ніби моя робота, перешкодивши їхнім планам, коштувала компанії Symbolics мільйон доларів.

note: type: Content of: <div><ol><li>
en: I don't mind if a very complex and heavyweight function takes keyword arguments.  What bothers me is making simple basic functions such as &ldquo;member&rdquo; use them.
uk: Я не заперечую, якщо дуже складна і громіздка функція приймає аргументи-кодові слова. Турбує мене випадок, коли ними користуються такі прості функції, як &ldquo;member&rdquo;.

note: type: Content of: <div><ol><li>
en: In 2021, this book can be purchased from <a href="https://shop.fsf.org/books-docs/free-software-free-society-selected-essays-richard-m-stallman-3rd-edition"> GNU Press</a>.
uk: У 2021 цю книгу можна придбати в <a href="https://shop.fsf.org/books-docs/free-software-free-society-selected-essays-richard-m-stallman-3rd-edition"> GNU Press</a>.

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>.
uk: Будь ласка, надсилайте загальні запити фонду та 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.
uk: Ми намагалися зробити цей переклад точним та якісним, але виключити можливість помилки ми не можемо. Надсилайте, будь ласка, свої зауваження і пропозиції щодо перекладу за адресою <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; 2003, 2007, 2013, 2021 Free Software Foundation, Inc.
uk: Copyright &copy; 2003, 2007, 2013, 2021 Free Software Foundation, Inc. (Фонд вільного програмного забезпечення, Inc.)

note: type: Content of: <div><p>
en: This page is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/">Creative Commons Attribution-NoDerivatives 4.0 International License</a>.
uk: Ця сторінка доступна на умовах <a rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/deed.uk"> ліцензії Creative Commons Attribution-NoDerivatives 4.0 International (<em>Із зазначенням авторства — Без похідних творів 4.0 Міжнародна</em>)</a>.

note: TRANSLATORS: Use space (SPC) as msgstr if you don't want credits. type: Content of: <div><div>
en: *GNUN-SLOT: TRANSLATOR'S CREDITS*
uk: Підтримка українського перекладу: Андрій Бандура (andriykopanytsia@gmail.com)

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