rms-lisp.html - en to pt_BR translation catalogue (63 entries)

note: type: Content of: <title>
en: My Lisp Experiences and the Development of GNU Emacs - GNU Project - Free Software Foundation
pt_BR: Minhas experiências com Lisp e o desenvolvimento do GNU Emacs - Projeto GNU - Free Software Foundation

note: type: Content of: <h2>
en: My Lisp Experiences and the Development of GNU Emacs
pt_BR: Minhas experiências com Lisp e o desenvolvimento do GNU Emacs

note: type: Content of: <blockquote><p>
en: (Transcript of Richard Stallman's Speech, 28 Oct 2002, at the International Lisp Conference).
pt_BR: (Transcrição do discurso de Richard Stallman, 28 de outubro de 2002, na International Lisp Conference).

note: type: Content of: <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.
pt_BR: Como nenhum dos meus discursos habituais tem nada a ver com Lisp, nenhum deles era apropriado para hoje. Então eu vou ter que improvisar. Desde que fiz coisas suficientes em minha carreira conectadas com Lisp, eu deveria poder dizer algo interessante.

note: type: Content of: <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.
pt_BR: Minha primeira experiência com Lisp foi quando li o manual do Lisp 1.5 no ensino médio. Foi quando tive a impressão de que poderia haver uma linguagem de computação como essa. A primeira vez que tive a chance de fazer qualquer coisa com Lisp foi quando eu era um calouro em Harvard e escrevi um interpretador de Lisp para o <abbr title="Programmed Data Processor">PDP</abbr>-11. Era uma máquina muito pequena &ndash; tinha algo como 8k de memória &ndash; e consegui escrever o interpretador com mil instruções. Isso me deu algum espaço para um pouco de dados. Isso foi antes de eu ver como era o software real, que funcionava no sistema real.

note: type: Content of: <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.
pt_BR: Comecei a trabalhar em uma implementação real do Lisp com JonL White quando comecei a trabalhar no <abbr title="Massachusetts Institute of Technology">MIT</abbr>. Fui contratado no Laboratório de Inteligência Artificial (<abbr title="Artificial Intelligence Laboratory">AI Lab</abbr>) não por JonL, mas por Russ Noftsker, o que foi muito irônico considerando o que estava por vir &ndash; ele deve ter realmente se arrependido daquele dia.

note: type: Content of: <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.
pt_BR: Durante a década de 1970, antes de minha vida se tornar politizada por conta de eventos horríveis, eu estava apenas fazendo uma extensão após a outra para vários programas, e a maioria deles não tinha nada a ver com Lisp. Mas, ao longo do caminho, escrevi um editor de texto, o Emacs. A ideia interessante sobre o Emacs era que ele tinha uma linguagem de programação e os comandos de edição do usuário seriam escritos naquela linguagem de programação interpretada, para que você pudesse carregar novos comandos no editor enquanto estava editando. Você poderia editar os programas que estava usando e depois continuar editando com eles. Então, nós tínhamos um sistema que era útil para outras coisas além de programação, e ainda assim você poderia programá-lo enquanto você o estivesse usando. Não sei se foi o primeiro deles, mas certamente foi o primeiro editor assim.

note: type: Content of: <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.
pt_BR: Este espírito de construir programas gigantescos e complicados para usar em sua própria edição e depois trocá-los com outras pessoas, alimentou o espírito de cooperação livre que tivemos no AI Lab. A ideia era que você pudesse dar uma cópia de qualquer programa que você tivesse para alguém que quisesse uma cópia dele. Nós compartilhamos programas para quem quisesse usá-los, eles eram conhecimento humano. Assim, embora não houvesse um pensamento político organizado relacionando à forma como compartilhamos software com o design do Emacs, estou convencido de que havia uma conexão entre eles, talvez uma conexão inconsciente. Eu acho que é a natureza do jeito que vivemos no AI Lab que levou ao Emacs e fez dele o que se tornou.

note: type: Content of: <p>
en: The original Emacs did not have Lisp in it. The lower level language, the non-interpreted language &mdash; was <abbr>PDP</abbr>-10 Assembler. The interpreter we wrote in that actually wasn't written for Emacs, it was written for <acronym title="Text Editor and COrrector">TECO</acronym>. 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 &lsquo;5l&rsquo;, meaning &lsquo;move five lines&rsquo;, or &lsquo;i&rsquo; 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.
pt_BR: O Emacs original não tinha Lisp nele. A linguagem de baixo nível, a linguagem não interpretada &ndash; era o Assembler de <abbr>PDP</abbr>-10. O interpretador que escrevemos na verdade não foi escrito para o Emacs, foi escrito para o <abbr title="Text Editor and COrrector">TECO</abbr>. Era o nosso editor de texto, e era uma linguagem de programação extremamente feia, tão feia quanto poderia ser. O motivo foi que não foi projetado para ser uma linguagem de programação, foi projetado para ser um editor e uma linguagem de comando. Havia comandos como “5l”, significando “mover cinco linhas”, ou “i” e, em seguida, uma sequência de caracteres e, em seguida, um ESC para inserir essa sequência de caracteres. Você digitaria uma string que era uma série de comandos, que era chamada de string de comando. Você terminaria com ESC ESC, e o comando seria executado.

note: type: Content of: <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 &lt; &gt;. 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 <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 <acronym>TECO</acronym>.
pt_BR: Bem, as pessoas queriam estender essa linguagem com recursos de programação, então elas adicionaram alguns. Por exemplo, um dos primeiros foi uma construção em <i>loop</i>, que foi &lt; &gt;. Você colocaria essas coisas em volta e os comandos dentro delas rodariam em <i>loop</i>. Havia outros comandos enigmáticos que poderiam ser usados para sair condicionalmente do <em>loop</em>. Para fazer o Emacs, nós <a href="#foot-1">(1)</a> adicionamos recursos para termos sub-rotinas com nomes.Antes disso, era como o Basic, e as sub-rotinas só podiam ter letras únicas como seus nomes. Foi difícil desenvolver programas grandes, então adicionamos código para que eles pudessem ter nomes mais longos. Na verdade, havia algumas instalações bastante sofisticadas; eu acho que o Lisp obteve seu mecanismo de <i>unwind-protect</i> do <abbr>TECO</abbr>.

note: type: Content of: <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 <acronym>TECO</acronym>, 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.
pt_BR: Começamos a colocar instalações bastante sofisticadas, todas com a sintaxe mais feia que você poderia imaginar, e funcionou &ndash; as pessoas eram capazes de escrever programas grandes de qualquer maneira. A lição óbvia foi que uma linguagem como <abbr>TECO</abbr>, que não foi projetada para ser uma linguagem de programação, era o caminho errado a seguir. A linguagem na qual você constrói suas extensões não deve ser pensada como uma linguagem de programação na reflexão posterior; deve ser projetada como uma linguagem de programação. De fato, descobrimos que a melhor linguagem de programação para esse propósito era Lisp.

note: type: Content of: <p>
en: It was Bernie Greenberg, who discovered that it was <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.
pt_BR: Foi Bernie Greenberg, que descobriu que ela era <a href="#foot-2">(2)</a>. Ele escreveu uma versão do Emacs no Multics MacLisp e escreveu seus comandos no MacLisp de maneira direta. O editor em si foi escrito inteiramente em Lisp. Multics Emacs provou ser um grande sucesso &ndash; programar novos comandos de edição era tão conveniente que até os secretários de seu escritório começaram a aprender como usá-lo. Eles usaram um manual que alguém escreveu que mostrava como estender o Emacs, mas não disse que era uma programação. Então os secretários, que acreditavam que não podiam programar, não ficaram assustados. Eles leram o manual, descobriram que podiam fazer coisas úteis e aprenderam a programar.

note: type: Content of: <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.
pt_BR: Então Bernie percebeu que um aplicativo &ndash; um programa que faz algo útil para você &ndash; que tem Lisp dentro dele e que você poderia estender reescrevendo os programas Lisp, é na verdade uma ótima maneira de as pessoas aprenderem programação. Isso lhes dá a chance de escrever pequenos programas que são úteis para eles, o que na maioria das arenas você não pode fazer. Eles podem obter incentivo para seu próprio uso prático &ndash; na fase em que é o mais difícil &ndash; onde eles não acreditam que podem programar, até chegarem ao ponto em que são programadores.

note: type: Content of: <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 <acronym>TECO</acronym> primitives. For instance, there was a <acronym>TECO</acronym> 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 <acronym>TECO</acronym> program). You could do the whole job by writing a <acronym>TECO</acronym> 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.
pt_BR: Nesse ponto, as pessoas começaram a se perguntar como poderiam obter algo assim em uma plataforma em que não tivessem a implementação de Lisp de serviço completo. Multics MacLisp tinha um compilador, bem como um interpretador &ndash; era um sistema Lisp completo &ndash; mas as pessoas queriam implementar algo assim em outros sistemas onde elas não tinham escrito um compilador Lisp. Bem, se você não tivesse o compilador Lisp você não poderia escrever o editor inteiro em Lisp &ndash; seria muito lento, especialmente para reexibição de tela, se tivesse que executar Lisp interpretado. Então nós desenvolvemos uma técnica híbrida. A ideia era escrever um interpretador Lisp e as partes de baixo nível do editor juntos, de modo que partes do editor fossem recursos Lisp embutidos. Essas seriam as partes que sentimos que precisávamos otimizar. Esta foi uma técnica que já tínhamos praticado conscientemente no Emacs original, porque havia certos recursos de alto nível que reimplementamos em linguagem de máquina, transformando-os em primitivas do <abbr>TECO</abbr>. Por exemplo, havia uma primitiva do <abbr>TECO</abbr> para preencher um parágrafo (na verdade, para fazer a maior parte do trabalho de preencher um parágrafo, porque algumas das partes menos demoradas do trabalho seriam feitas em um nível mais alto por um programa do <abbr>TECO</abbr>). Você poderia fazer o trabalho inteiro escrevendo um programa do <abbr>TECO</abbr>, mas isso era muito lento, então otimizamos isso colocando parte dele em linguagem de máquina. Usamos a mesma ideia aqui (na técnica híbrida), que a maior parte do editor seria escrita em Lisp, mas certas partes dele que tinham que rodar particularmente rápido seriam escritas em um nível mais baixo.

note: type: Content of: <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.
pt_BR: Portanto, quando escrevi minha segunda implementação do Emacs, segui o mesmo tipo de design. A linguagem de baixo nível não era mais linguagem de máquina, era C. C era uma linguagem boa e eficiente para programas portáveis rodarem em um sistema operacional parecido com Unix. Havia um interpretador Lisp, mas implementei recursos para trabalhos de edição para fins especiais diretamente no C &ndash; manipulação de buffers do editor, inserção de texto inicial, leitura e gravação de arquivos, exibição do buffer novamente na tela, gerenciamento de janelas do editor.

note: type: Content of: <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 <abbr>MIT</abbr>. Someone wanted to port it to run on Twenex &mdash; it originally only ran on the Incompatible Timesharing System we used at <abbr>MIT</abbr>. 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.
pt_BR: Agora, este não foi o primeiro Emacs que foi escrito em C e rodou no Unix. O primeiro foi escrito por James Gosling e foi referido como GosMacs. Uma coisa estranha aconteceu com ele. No começo, ele parecia influenciado pelo mesmo espírito de compartilhamento e cooperação do Emacs original. Eu lancei pela primeira vez o Emacs original ao público no <abbr>MIT</abbr>. Alguém queria portá-lo para rodar no Twenex &ndash; originalmente rodava apenas no Sistema de Compartilhamento de Tempo Incompatível (<abbr title="Incompatible Timesharing System">ITS</abbr>) que usávamos no <abbr>MIT</abbr>. Eles o levaram para o Twenex, o que significava que havia algumas centenas de instalações em todo o mundo que poderiam usá-lo. Nós começamos a distribuí-lo para eles, com a regra de que “você tinha que mandar de volta todos os seus aprimoramentos” para que todos pudéssemos nos beneficiar. Ninguém nunca tentou impor isso, mas até onde eu sei, as pessoas cooperaram.

note: type: Content of: <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.
pt_BR: Gosling, a princípio, pareceu participar desse espírito. Ele escreveu em um manual que ele chamou o programa Emacs, esperando que outros na comunidade o melhorassem até que fosse digno desse nome. Essa é a abordagem correta a ser adotada para com uma comunidade &ndash; pedir que participem e melhorem o programa. Mas depois disso ele pareceu mudar o espírito e vendeu o programa o vendeu para uma empresa.

note: type: Content of: <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 &lsquo;mocklisp&rsquo;, 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.
pt_BR: Naquela época, eu estava trabalhando no sistema GNU (um sistema operacional similar ao Unix, de software livre, que muitas pessoas erroneamente chamam de “Linux”). Não havia um editor Emacs de software livre que fosse executado no Unix. Eu tinha, no entanto, um amigo que participou do desenvolvimento do Emacs de Gosling. Gosling havia lhe dado, por e-mail, permissão para distribuir sua própria versão. Ele propôs-me que eu usasse essa versão. Então eu descobri que o Emacs de Gosling não tinha um Lisp real. Ele tinha uma linguagem de programação que era conhecida como “mocklisp”, que se parece sintaticamente com o Lisp, mas não possui as estruturas de dados do Lisp. Então os programas não eram dados e os elementos vitais do Lisp estavam faltando. Suas estruturas de dados eram sequências de caracteres, números e algumas outras coisas especializadas.

note: type: Content of: <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.
pt_BR: Eu concluí que não poderia usá-lo e tive que substituir tudo, o primeiro passo foi escrever um interpretador Lisp. Gradualmente adaptei cada parte do editor com base em estruturas de dados do Lisp real, em vez de estruturas de dados <em>ad hoc</em>, tornando as estruturas de dados internas do editor expostas e manipuláveis pelos programas Lisp do usuário.

note: type: Content of: <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.
pt_BR: A única exceção foi a reexibição. Durante muito tempo, a reexibição era uma espécie de mundo alternativo. O editor entraria no mundo da reexibição e as coisas continuariam com estruturas de dados muito especiais que não eram seguras para a coleta de lixo, não eram seguras para a interrupção, e você não poderia executar nenhum programa Lisp durante isso. Nós mudamos isso desde então &ndash; agora é possível executar o código Lisp durante a reexibição. É uma coisa bastante conveniente.

note: type: Content of: <p>
en: This second Emacs program was &lsquo;free software&rsquo; 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 <abbr>MIT</abbr>, 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 <abbr>MIT</abbr> 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.
pt_BR: Este segundo programa Emacs era “software livre” no sentido moderno do termo &ndash; foi parte de uma campanha política explícita para desenvolver software livre. A essência dessa campanha era que todos deveriam ser livres para fazer as coisas que fazíamos antigamente no <abbr>MIT</abbr>, trabalhando juntos em software e trabalhando com quem quisesse trabalhar conosco. Essa é a base para o movimento do software livre &ndash; a experiência que tive, a vida que vivi no AI Lab do <abbr>MIT</abbr> de estar trabalhando no conhecimento humano, e não estar no caminho impedindo as pessoas de usar e disseminar ainda mais o conhecimento humano.

note: type: Content of: <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 <tt>car</tt> of a number, it got nonsensical results and eventually crashed at some point.
pt_BR: Na época, você poderia construir um computador com a mesma faixa de preço de outros computadores que não fossem feitos para rodar Lisp, exceto que ele executaria o Lisp muito mais rápido do que os outros, e com a verificação de tipo completa em todas as operações também. Computadores comuns normalmente o forçavam a optar pela velocidade de execução e boa verificação da digitação. Então, sim, você poderia ter um compilador Lisp e rodar seus programas rapidamente, mas quando eles tentavam pegar o <tt>car</tt> de um número, ele obtinha resultados absurdos e eventualmente falhava em algum ponto.

note: type: Content of: <p>
en: The Lisp machine was able to execute instructions about as fast as those other machines, but each instruction &mdash; a car instruction would do data typechecking &mdash; so when you tried to get the car 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.
pt_BR: A máquina Lisp era capaz de executar instruções tão rápido quanto as outras máquinas, mas cada instrução &ndash; uma instrução <tt>car</tt> &ndash; faria uma verificação de tipo de dados de forma que quando se tentava obter o <tt>car</tt> de um número em um programa compilado, ele causaria um erro imediato. Nós construímos a máquina e tínhamos um sistema operacional Lisp para ela. Ele foi escrito quase inteiramente em Lisp, as únicas exceções sendo partes escritas no microcódigo. As pessoas ficaram interessadas em fabricá-las, o que significava que deveriam abrir uma empresa.

note: type: Content of: <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 <a 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.
pt_BR: Havia duas ideias diferentes sobre como essa empresa deveria ser. Greenblatt queria começar o que ele chamou de um empresa “hacker”. Isso significava que seria uma empresa administrada por hackers e funcionaria de maneira favorável aos hackers. Outro objetivo era manter a cultura do AI Lab <a href="#foot-3">(3)</a>. Infelizmente, o Greenblatt não tinha experiência em negócios, então outras pessoas do grupo de máquinas Lisp disseram duvidar que ele pudesse ter sucesso. Eles pensaram que seu plano para evitar investimentos externos não funcionaria.

note: type: Content of: <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.
pt_BR: Por que ele queria evitar investimentos externos? Porque quando uma empresa tem investidores externos, eles assumem o controle e não deixam que você tenha nenhum escrúpulo. E, eventualmente, se você tiver algum escrúpulo, eles também o substituirão como administrador.

note: type: Content of: <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.
pt_BR: Então, Greenblatt teve a ideia de que encontraria um cliente que pagaria antecipadamente para comprar as peças. Eles construiriam máquinas e as entregariam; com os lucros dessas partes, eles poderiam comprar peças para mais algumas máquinas, vendê-las e então comprar peças para um número maior de máquinas, e assim por diante. As outras pessoas do grupo acharam que isso possivelmente não funcionaria.

note: type: Content of: <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.
pt_BR: Greenblatt então recrutou Russell Noftsker, o homem que havia me contratado, que posteriormente havia deixado o AI Lab e criado uma empresa de sucesso. Acreditava-se que Russell tinha uma aptidão para negócios. Ele demonstrou essa aptidão para os negócios, dizendo às outras pessoas do grupo: “Vamos abandonar Greenblatt, esquecer suas ideias e faremos outra empresa”. Esfaqueando pelas costas, claramente, um verdadeiro homem de negócios. Essas pessoas decidiram que iriam formar uma empresa chamada Symbolics. Eles obteriam investimento externo, não teriam escrúpulos e fariam todo o possível para vencer.

note: type: Content of: <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.
pt_BR: Mas Greenblatt não desistiu. Ele e as poucas pessoas leais a ele decidiram começar a Lisp Machines Inc. de qualquer forma, e seguir em frente com seus planos. E sabe que eles conseguiram! Eles conseguiram o primeiro cliente e foram pagos antecipadamente. Eles construíram máquinas e as venderam e construíram mais máquinas e mais máquinas. Eles realmente conseguiram, apesar de não terem a ajuda da maioria das pessoas do grupo. A Symbolics também teve um começo bem-sucedido, então você tinha duas empresas concorrentes de máquinas Lisp. Quando a Symbolics viu que a LMI não ia cair de cara no chão, eles começaram a procurar maneiras de destruí-la.

note: type: Content of: <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 <abbr>MIT</abbr>, so they had to leave entirely, which left only me. The AI lab was now helpless.  And <abbr>MIT</abbr> 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 <abbr>MIT</abbr> use their changes. But it didn't say in the contract that <abbr>MIT</abbr> was entitled to put them into the <abbr>MIT</abbr> 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.
pt_BR: Assim, o abandono do nosso laboratório foi seguido por uma “guerra” em nosso laboratório. O abandono aconteceu quando a Symbolics contratou todos os hackers, exceto eu e os poucos que trabalhavam na LMI em meio período. Então eles invocaram uma regra e eliminaram pessoas que trabalhavam em meio período para o <abbr>MIT</abbr>, então tiveram que sair completamente, restando apenas eu. O AI Lab estava agora indefeso. E o <abbr>MIT</abbr> fez um acordo muito tolo com essas duas empresas. Foi um contrato de três vias em que ambas as empresas licenciaram o uso de fontes do sistema de máquinas Lisp. Essas empresas foram obrigadas a deixar o <abbr>MIT</abbr> usar suas mudanças. Mas não disse no contrato que o <abbr>MIT</abbr> tinha o direito de colocá-los nos sistemas de máquinas <abbr>MIT</abbr> Lisp que ambas as empresas tinham licenciado. Ninguém previra que o grupo de hackers do AI Lab seria aniquilado, mas foi.

note: type: Content of: <p>
en: So Symbolics came up with a plan <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 <abbr>MIT</abbr> 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;
pt_BR: Então, a Symbolics criou um plano <a href="#foot-4">(4)</a>. Eles disseram para o laboratório, “Continuaremos a disponibilizar nossas alterações no sistema para você usar, mas você não pode colocá-las no sistema da máquina Lisp do <abbr>MIT</abbr>. Em vez disso, daremos acesso ao sistema de máquina Lisp da Symbolics e você poderá executá-lo, mas isso é tudo que você pode fazer.”

note: type: Content of: <p>
en: This, in effect, meant that they demanded that we had to choose a side, and use either the <abbr>MIT</abbr> 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 <abbr>MIT</abbr> 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.
pt_BR: Isso, na verdade, significava que eles precisavam escolher um lado e, ou usar a versão <abbr>MIT</abbr> do sistema ou a versão da Symbolics. A depender da escolha que fizéssemos, seria determinado para qual sistema nossas melhorias iriam. Se trabalhássemos e melhorássemos a versão da Symbolics, estaríamos apoiando a Symbolics sozinha. Se usássemos e melhorássemos a versão do sistema do <abbr>MIT</abbr>, estaríamos disponibilizando o trabalho para ambas as empresas, mas a Symbolics viu que estaríamos apoiando a LMI porque estaríamos ajudando-a a continuar existindo. Então não nos permitiram mais ser neutros.

note: type: Content of: <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 <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).
pt_BR: Até aquele momento, eu não havia tomado o lado de nenhuma das duas empresas, embora isso me fizesse sentir infeliz ao ver o que havia acontecido com nossa comunidade e com o software. Mas agora, a Symbolics tinha forçado a barra. Então, em um esforço para ajudar a dar continuidade à Lisp Machines Inc. <a href="#foot-5">(5)</a> &ndash; comecei a duplicar todas as melhorias que a Symbolics tinha feito no sistema de máquinas Lisp. Escrevi as melhorias equivalentes novamente (ou seja, o código era meu).

note: type: Content of: <p>
en: After a while <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.
pt_BR: Após algum tempo <a href="#foot-6">(6)</a>, cheguei à conclusão de que seria melhor se eu nem olhasse para o código deles. Quando eles fizeram um anúncio da versão beta que dava as notas de lançamento, eu veria quais eram os recursos e depois os implementaria. No momento em que eles tinham um lançamento real, eu também lançava.

note: type: Content of: <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 <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.
pt_BR: Desta forma, por dois anos, eu os impedi de eliminar a Lisp Machines Incorporated, e as duas empresas sobreviveram. Mas eu não queria passar anos e anos punindo alguém, apenas frustrando um ato maligno. Eu percebi que eles tinham sido punidos muito bem porque estavam presos a uma competição que não acabava e não ia desaparecer <a href="#foot-7">(7)</a>. Enquanto isso, era hora de começar a construir uma nova comunidade para substituir aquela que as ações da Symbolics e outros haviam eliminado.

note: type: Content of: <p>
en: The Lisp community in the 70s was not limited to the <abbr>MIT</abbr> AI Lab, and the hackers were not all at <abbr>MIT</abbr>. The war that Symbolics started was what wiped out <abbr>MIT</abbr>, 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.
pt_BR: A comunidade Lisp nos anos 70 não se limitou ao AI Lab do <abbr>MIT</abbr>, e os hackers não estavam todos no <abbr>MIT</abbr>. A guerra que a Symbolics iniciou foi o que acabou com o <abbr>MIT</abbr>, mas havia outros eventos acontecendo na época. Havia pessoas desistindo da cooperação, e juntos eles acabaram com a comunidade e não sobrou muito.

note: type: Content of: <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.
pt_BR: Quando parei de punir a Symbolics, tive que descobrir o que fazer em seguida. Eu tinha que fazer um sistema operacional livre, isso estava claro &ndash; a única maneira que as pessoas poderiam trabalhar juntas e compartilhar era com um sistema operacional livre.

note: type: Content of: <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.
pt_BR: No começo, pensei em criar um sistema baseado em Lisp, mas percebi que não seria uma boa ideia tecnicamente. Para ter algo como o sistema da máquina Lisp, você precisava de um microcódigo de propósito especial. Foi isso que tornou possível rodar programas tão rápido quanto outros computadores e ainda assim obter o benefício da verificação de tipo. Sem isso, você seria reduzido a algo como os compiladores Lisp para outras máquinas. Os programas seriam mais rápidos, mas instáveis. Agora, tudo bem se você estiver executando um programa em um sistema de tempo compartilhado &ndash; se um programa falhar, isso não é um desastre, isso é algo que seu programa ocasionalmente faz. Mas isso não era bom em setratando de um sistema operacional, então rejeitei a ideia de fazer um sistema como o da Lisp.

note: type: Content of: <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.
pt_BR: Decidi, em vez disso, criar um sistema operacional semelhante ao Unix que tivesse implementações Lisp para serem executadas como programas do usuário. O kernel não seria escrito em Lisp, mas teríamos Lisp. Então o desenvolvimento desse sistema operacional, o sistema operacional GNU, é o que me levou a escrever o GNU Emacs. Ao fazer isso, meu objetivo era fazer a implementação mínima possível do Lisp. O tamanho dos programas foi uma tremenda preocupação.

note: type: Content of: <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.
pt_BR: Havia pessoas naqueles dias, em 1985, que tinham máquinas de um megabyte sem memória virtual. Eles queriam poder usar o GNU Emacs. Isso significava que eu tinha que manter o programa o menor possível.

note: type: Content of: <p>
en: For instance, at the time the only looping construct was &lsquo;while&rsquo;, which was extremely simple. There was no way to break out of the &lsquo;while&rsquo; 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 &lsquo;caar&rsquo; and &lsquo;cadr&rsquo; and so on; &ldquo;squeeze out everything possible&rdquo; was the spirit of GNU Emacs, the spirit of Emacs Lisp, from the beginning.
pt_BR: Por exemplo, naquele momento a única construção em <em>loop</em> era o <i>while</i>, o que era extremamente simples. Não havia maneira de sair da declaração <i>while</i>, você tinha que fazer um <i>catch</i> e um <i>throw</i>, ou testar uma variável que estava no <em>loop</em>. Isso mostra até onde eu estava indo para manter as coisas pequenas. Nós não tínhamos <tt>“caar”</tt> e <tt>“car”</tt> e assim por diante; “espremer tudo o que for possível” era o espírito do GNU Emacs, o espírito do Emacs Lisp, desde o começo.

note: type: Content of: <p>
en: Obviously, machines are bigger now, and we don't do it that way any more. We put in &lsquo;caar&rsquo; and &lsquo;cadr&rsquo; 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 <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.
pt_BR: Obviamente, as máquinas são maiores agora, e nós não fazemos mais isso. Nós colocamos em “caar” e “cadr” e assim por diante, e podemos colocar em outra construção de <em>loop</em> um dia desses. Estamos dispostos a estendê-lo agora, mas não queremos estendê-lo no nível do Lisp comum. Eu implementei o Common Lisp uma vez na máquina Lisp, e não estou muito feliz com isso. Uma coisa que eu não gosto muito é dos argumentos das palavras-chave <a href="#foot-8">(8)</a>. Eles não se parecem muito com algo do Lisp para mim; Às vezes faço isso, mas minimizo as vezes em que faço isso.

note: type: Content of: <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.
pt_BR: Esse não foi o fim dos projetos GNU envolvidos com o Lisp. Mais tarde, por volta de 1995, estávamos procurando iniciar um projeto de área de trabalho gráfica. Ficou claro que, para os programas na área de trabalho, queríamos que uma linguagem de programação escrevesse muito nela para torná-la facilmente extensível, como o editor. A questão era o que deveria ser.

note: type: Content of: <p>
en: At the time, <acronym title="Tool Command Language">TCL</acronym> was being pushed heavily for this purpose. I had a very low opinion of <acronym>TCL</acronym>, 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 <acronym>TCL</acronym> 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 <acronym>TCL</acronym> was linked into applications. We would then recommend that as the preferred extensibility package for all GNU programs.
pt_BR: Na época, a <acronym title="Tool Command Language">TCL</acronym> estava sendo intensamente utilizada para essa finalidade. Eu tinha uma opinião muito ruim sobre a <acronym>TCL</acronym>, basicamente porque não era Lisp. Se parece um pouco com Lisp, mas semanticamente não é, e não é tão limpa. Então, alguém me mostrou um anúncio em que a Sun estava tentando contratar alguém para trabalhar em <acronym>TCL</acronym> para torná-la a “linguagem de extensão padrão de fato” do mundo. E eu pensei: “Temos que impedir que isso aconteça”. Então começamos a fazer do Scheme a linguagem de extensibilidade padrão do GNU. Não Common Lisp, porque era muito grande. A ideia era que teríamos um interpretador Scheme projetado para ser vinculado a aplicativos da mesma forma que a <acronym>TCL</acronym> estava vinculada a aplicativos. Recomendaríamos então que ela fosse o pacote de extensibilidade preferido para todos os programas GNU.

note: type: Content of: <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 <acronym>TCL</acronym>, you can't very easily implement Lisp by translating it into <acronym>TCL</acronym>. 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 <acronym>TCL</acronym> 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.
pt_BR: Há um benefício interessante que você pode obter usando uma linguagem tão poderosa quanto uma versão do Lisp como sua principal linguagem de extensibilidade. Você pode implementar outras linguagens traduzindo-as em sua linguagem principal. Se a sua linguagem principal é a <acronym>TCL</acronym>, você não pode implementar facilmente o Lisp traduzindo-o para o <acronym>TCL</acronym>. Mas se a sua linguagem principal é o Lisp, não é tão difícil implementar outras coisas traduzindo-as. Nossa ideia era que, se cada aplicativo extensível suportasse o Scheme, você poderia escrever uma implementação da <acronym>TCL</acronym> ou Python ou Perl no Scheme que traduz esse programa em Scheme. Em seguida, você poderia carregá-lo em qualquer aplicativo e personalizá-lo em seu idioma favorito e também funcionaria com outras personalizações.

note: type: Content of: <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 &lsquo;Guile&rsquo;, 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.
pt_BR: Enquanto as linguagens de extensibilidade forem fracas, os usuários terão que usar apenas a linguagem que você forneceu. O que significa que as pessoas que gostam de determinada linguagem têm que competir pela escolha dos desenvolvedores de aplicativos &ndash; dizendo “Por favor, desenvolvedor do aplicativo, coloque minha linguagem em seu aplicativo e não em sua linguagem”. Então, os usuários ficam sem escolhas &ndash; Qualquer aplicativo que eles estejam usando vem com uma linguagem e eles estão presos [a essa linguagem]. Mas quando você tem uma linguagem poderosa que pode implementar outras traduzindo-as, então você dá ao usuário uma escolha de linguagem e nós não precisamos mais ter uma guerra de linguagens. É o que esperamos que “Guile”, nosso interpretador scheme, fará. Tivemos uma pessoa trabalhando no último verão, terminando um tradutor do Python para o Scheme. Eu não sei se está totalmente pronto ainda, mas para qualquer pessoa interessada neste projeto, por favor entre em contato. Então esse é o plano que temos para o futuro.

note: type: Content of: <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 non-free program, you have lost crucial freedom, so don't ever do that.
pt_BR: Eu não tenho falado sobre software livre, mas deixe-me contar um pouco sobre o que isso significa. Software livre não se refere ao preço; não significa que você pode obtê-lo de graça. (Você pode ter pago por uma cópia ou obtido uma cópia grátis.) Significa que você tem liberdade como usuário. O importante é que você esteja livre para executar o programa, livre para estudar o que ele faz, livre para mudá-lo para atender às suas necessidades, livre para redistribuir as cópias de outros e livre para publicar versões aprimoradas e estendidas. Isto é o que significa software livre. Se você estiver usando um programa não livre, você perdeu a liberdade crucial, então nunca faça isso.

note: type: Content of: <p>
en: The purpose of the GNU project is to make it easier for people to reject freedom-trampling, user-dominating, non-free software by providing free software to replace it. For those who don't have the moral courage to reject the non-free 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.
pt_BR: O objetivo do projeto GNU é facilitar para que as pessoas rejeitarem softwares que dominam o usuário, não livres, que atropelam a liberdade, por meio do fornecimento de software livre para substituí-los. Para aqueles que não têm a coragem moral de rejeitar o software não livre, quando isso significa algum inconveniente prático, o que tentamos fazer é dar uma alternativa livre para que você possa se mover para a liberdade com menos confusão e menos sacrifício em termos práticos. Quanto menos sacrifício, melhor. Queremos que seja mais fácil viver em liberdade, cooperar.

note: type: Content of: <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 non-free 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 non-free software.
pt_BR: Cooperação é uma questão de liberdade. Estamos acostumados a pensar que liberdade e cooperação na sociedade são coisas opostas. Mas elas estão do mesmo lado. Com o software livre, você é livre para cooperar com outras pessoas, bem como para ajudar a si mesmo. Com software não-livre, alguém está dominando você e mantendo as pessoas divididas. Você não tem permissão para compartilhar com as pessoas, você não está livre para cooperar ou ajudar a sociedade, para ajudar a si mesmo. Divididos e desamparados são os estados dos usuários que usam software não-livre.

note: type: Content of: <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/">http://www.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 <a href="http://www.gnu.org/">www.gnu.org</a>. Happy hacking!
pt_BR: Nós produzimos uma tremenda variedade de software livre. Fizemos o que as pessoas disseram que nunca poderíamos fazer; temos dois sistemas operacionais de software livre. Temos muitos aplicativos e obviamente temos muito mais caminhos para trilhar. Então precisamos da sua ajuda. Eu gostaria de pedir para você ser voluntário no projeto GNU; Ajude-nos a desenvolver software livre para mais tarefas. Dê uma olhada em <a href="/help/">http://www.gnu.org/help</a> para encontrar sugestões de como ajudar. Se você quiser encomendar coisas, há um <em>link</em> para isso na página principal. Se você quiser ler sobre questões filosóficas, veja em /philosophy. Se você está procurando por software livre para usar, veja em /directory, que lista cerca de 1900 pacotes agora (o que é uma fração de todo o software livre disponível). Por favor, escreva mais e contribua conosco. Meu livro de ensaios, “Free Software and Free Society”, está à venda e pode ser adquirido em <a href="http://www.gnu.org/">www.gnu.org</a>. <i>Happy hacking</i>!

note: type: Content of: <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.
pt_BR: Guy Steele projetou o conjunto original de comandos simétrico do Emacs; então ele e eu começamos a implementar o Emacs (sobre o TECO), mas depois de uma longa sessão de desenvolvimento conjunto, Steele começou a se afastar, então terminei o Emacs. Outros, particularmente incluindo Eugene C. Cicciarelli e Mike McMahon contribuíram substancialmente mais tarde.

note: type: Content of: <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.
pt_BR: Bernie Greenberg diz que a implementação de Dan Weinreb do Emacs para a Máquina Lisp <i>(Lisp Machine)</i> veio antes da implementação de Greenberg para o Multics. Peço desculpas pelo erro.

note: type: Content of: <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.
pt_BR: O plano de Greenblatt, como eu entendia, era contratar pessoal de laboratório em meio período, para que eles pudessem continuar trabalhando no AI Lab. A Symbolics os contratou em tempo integral, então pararam de trabalhar no MIT.

note: type: Content of: <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.
pt_BR: O cenário por trás desse plano, que não mencionei explicitamente na palestra, é que durante um período inicial os ex-hackers da AI Lab, seja na Symbolics ou na LMI, continuaram contribuindo com suas mudanças no sistema da Máquina Lisp do MIT &ndash; mesmo que o contrato não exigisse isso. O plano da Symbolics era romper essa cooperação unilateralmente.

note: type: Content of: <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.
pt_BR: Não era que eu me importasse particularmente com o destino da LMI, mas eu não queria deixar a Symbolics ganhar através de sua agressão contra o AI Lab.

note: type: Content of: <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.
pt_BR: Esta declaração foi mal interpretada como dizendo que eu nunca olhei para o código da Symbolics. Na verdade, diz que eu olhei, no começo. O código-fonte da Symbolics estava disponível no MIT, onde eu tinha o direito de lê-lo e, a princípio, foi assim que descobri suas mudanças.

note: type: Content of: <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.
pt_BR: Mas isso significava que eu tinha que fazer um esforço especial para resolver cada problema de forma diferente, para evitar copiar o código da Symbolics. Depois de um tempo, concluí que era melhor nem olhar. Dessa forma, eu poderia escrever o código da maneira que fosse melhor, sem me preocupar com o que poderia estar no código da Symbolics.

note: type: Content of: <ol><li>
en: Symbolics at one point protested to MIT that my work, by thwarting their plan, had cost Symbolics a million dollars.
pt_BR: A Symbolics, em certa altura, protestou ao MIT que meu trabalho, frustrando o plano deles, havia custado à Symbolics um milhão de dólares.

note: type: Content of: <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.
pt_BR: Não me importo se uma função muito complexa e pesada requer argumentos de palavras-chave. O que me incomoda é fazer funções básicas simples, como “member” usá-los.

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>.
pt_BR: Envie perguntas em geral sobre a FSF e o GNU para <a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>. Também existem <a href="/contact/">outros meios de contatar</a> a FSF.  Links quebrados e outras correções ou sugestões podem ser enviadas para <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 submitting translations of this article.
pt_BR: A equipe de traduções para o português brasileiro se esforça para oferecer traduções acuradas e de boa qualidade, mas não estamos isentos de erros. Por favor, envie seus comentários e sugestões em geral sobre as traduções para <a href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>. </p><p>Consulte o <a href="/server/standards/README.translations.html">Guia para as traduções</a> para mais informações sobre a coordenação e o envio de traduções das páginas desse site.

note: type: Content of: <div><p>
en: This page is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nd/3.0/us/">Creative Commons Attribution-NoDerivs 3.0 United States License</a>.
pt_BR: Esta página está sob <a rel="license" href="https://creativecommons.org/licenses/by-nd/3.0/us/deed.pt_BR">licença da Creative Commons Atribuição-SemDerivações 3.0 Estados Unidos</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*
pt_BR: Traduzido por: Rafael Fontenelle <a href="mailto:rafaelff@gnome.org">&lt;rafaelff@gnome.org&gt;</a>, 2018.

note: timestamp start type: Content of: <div><p>
en: Updated:
pt_BR: Última atualização:
