# Spanish translation of http://www.gnu.org/gnu/rms-lisp.html # Copyright (C) 2009-2014 Free Software Foundation, Inc. # This file is distributed under the same license as the gnu.org article. # Rafa Pereira , 2009. # Xavier Reina , 2010, 2011. # Dora Scilipoti , 2012-2014. # This translation needs further review. # msgid "" msgstr "" "Project-Id-Version: rms-list.html\n" "POT-Creation-Date: 2014-04-04 23:59+0000\n" "PO-Revision-Date: 2019-03-04 12:06+0000\n" "Last-Translator: RS. Montalvo \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 2.2.1\n" # type: Content of: #. type: Content of: <title> msgid "" "My Lisp Experiences and the Development of GNU Emacs - GNU Project - Free " "Software Foundation" msgstr "" "Mis experiencias con Lisp y el desarrollo de Emacs de GNU - Proyecto GNU - " "Free Software Foundation " # type: Content of: <h2> #. type: Content of: <h2> msgid "My Lisp Experiences and the Development of GNU Emacs" msgstr "Mis experiencias con Lisp y el desarrollo de Emacs de GNU" # type: Content of: <h3> #. type: Content of: <blockquote><p> msgid "" "(Transcript of Richard Stallman's Speech, 28 Oct 2002, at the International " "Lisp Conference)." msgstr "" "(Transcripción de la conferencia pronunciada por Richard Stallman el 28 de " "octubre de 2002 en el Congreso Internacional de Lisp [<span style=\"font-" "style:italic;\">International Lisp Conference</span>])." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "Dado que ninguna de mis charlas habituales tiene nada que ver con Lisp, " "ninguna era apropiada para hoy. Así que voy a tener que improvisar. Por otro " "lado, la cantidad de trabajo conectado con Lisp hecho a lo largo de mi " "carrera es bastante amplia que debería ser capaz de decir algo interesante " "al respecto." # type: Content of: <p> #. type: Content of: <p> msgid "" "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 — it had something like 8k of memory " "— 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." msgstr "" "Mi primera experiencia con Lisp tuvo lugar en la escuela secundaria, cuando " "leí el manual de Lisp 1.5. Entonces quedé maravillado con la idea de que " "pudiera haber un lenguaje de programación así. La primera vez que tuve la " "oportunidad de hacer algo en Lisp fue siendo un novato en Harvard, cuando " "escribí un intérprete de Lisp para el <abbr title=\"Programmed Data Processor" "\" lang=\"en\">PDP</abbr>-11. Era una máquina muy pequeña, tenía algo así " "como 8k de memoria, y me las arreglé para escribir el intérprete en unas mil " "instrucciones. Eso me dejó sitio para unos pocos datos. Aquello fue antes de " "que llegara a conocer cómo era el software real, el que hacía el trabajo en " "los sistemas reales." # type: Content of: <p> #. type: Content of: <p> msgid "" "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 " "— he must have really regretted that day." msgstr "" "Fue tras comenzar mi trabajo en el <abbr title=\"Instituto de Tecnología de " "Massachusetts\">MIT</abbr> cuando empecé a trabajar en una implementación " "real de Lisp con JonL White. No fui contratado para el Laboratorio de " "Inteligencia Artificial gracias a JonL, sino por Russ Noftsker, lo que es de " "lo más irónico teniendo en cuenta lo que vendría después, debe de haber " "lamentado realmente lo ocurrido aquel día." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "En la década de los 70, antes de que mi vida se politizara a causa de " "terribles sucesos, simplemente me dedicaba a hacer una extensión tras otra " "de varios programas, la mayoría de los cuales no tenía nada que ver con " "Lisp. Pero, al mismo tiempo, escribí un editor de textos: Emacs. Lo " "interesante de Emacs era que no solo incluía un lenguaje de programación, " "además, los comandos de edición del que disponía el usuario estaban escritos " "en ese mismo lenguaje, de forma que permitía cargar nuevas instrucciones " "mientras las estaba editando. Podía modificar los programas que estaba " "utilizando e, inmediatamente, editar utilizando los programas recién " "modificados. Es decir, teníamos un sistema que resultaba útil para tratar " "con texto para mucho más que programar, que sin embargo, permitía al usuario " "programar el editor mientras lo estaba usando. No sé si era el primer " "sistema de estas características, pero, desde luego, sí el primer editor de " "tales prestaciones." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "Esta construcción de programas complejos y gigantescos para usarlos en las " "ediciones de textos de uno, y después intercambiarlos con otros, alimentó el " "espíritu de cooperación espontánea que teníamos entonces en el Laboratorio " "de Inteligencia Artificial. La idea era que podía dar una copia de cualquier " "programa que tuviera a quien quisiera una. Compartíamos programas con todo " "el que deseara usarlos, eran conocimiento humano. Así que, a pesar de que no " "había un pensamiento político organizado que relacionara la forma en que " "compartíamos software con el diseño de Emacs, estoy convencido de que había " "una conexión entre ellos, quizá una conexión inconsciente. Creo que fue la " "naturaleza de la forma de vida que llevábamos en el Laboratorio de " "Inteligencia Artificial lo que condujo a Emacs e hizo de él lo que fue." # type: Content of: <p> #. type: Content of: <p> msgid "" "The original Emacs did not have Lisp in it. The lower level language, the " "non-interpreted language — 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 ‘5l’, meaning ‘move five " "lines’, or ‘i’ 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." msgstr "" "El Emacs original no incluía Lisp. Su lenguaje, de más bajo nivel y no " "interpretado, era Ensamblador del <abbr>PDP</abbr>-10. El intérprete que " "escribimos nosotros en realidad no fue escrito para Emacs, sino para " "<acronym title=\"Text Editor and COrrector\" lang=\"en\">TECO</acronym>. " "<acronym>TECO</acronym> era nuestro editor de textos y era un lenguaje de " "programación extremadamente feo, no podía haber sido más feo. La razón era " "que no fue diseñado para ser un lenguaje de programación, sino como un " "lenguaje de órdenes y un editor de textos. Había órdenes como «5l», que " "significaba «mover cinco líneas», o «i» seguido de una cadena de caracteres " "y después ESC para insertar esa cadena de caracteres. Podría escribir una " "cadena de caracteres que fuera una secuencia de órdenes, lo que se llamaba " "una cadena de órdenes, terminada con ESC ESC, y sería ejecutada." # type: Content of: <p> #. type: Content of: <p> msgid "" "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 < >. 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>." msgstr "" "Bien. La gente quería extender este lenguaje con elementos útiles para la " "programación, así que añadió algunos. Por ejemplo, uno de los primeros fue " "una estructura iterativa: < >. Encerrar algo entre estos signos hacía " "que se ejecutara en un bucle. Había otras crípticas órdenes que podían " "usarse para salir del bucle condicionalmente. Para construir Emacs, nosotros " "<a href=\"#foot-1\">(1)</a> añadimos mecanismos para tener subrutinas con " "nombres. Antes de esto, de forma análoga a lo que ocurre con Basic, los " "nombres de las subrutinas sólo podían estar formados por una letra. Con esta " "limitación era difícil escribir programas grandes, así que añadimos código " "que permitió que pudieran tener nombres más largos. De hecho, había algunos " "mecanismos bastante sofisticados; creo que Lisp tomó su mecanismo <span " "style=\"font-style:italic;\">unwind-protect</span>, llamémosle, de \\" "\"aplicación-abierta\\\" de <acronym>TECO</acronym>." # type: Content of: <p> #. type: Content of: <p> msgid "" "We started putting in rather sophisticated facilities, all with the ugliest " "syntax you could ever think of, and it worked — 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." msgstr "" "Empezamos a añadir otros mecanismos sofisticados, todos ellos con la " "sintaxis más horrible que puedan imaginar, y funcionó, por lo menos la gente " "fue capaz de escribir programas extensos con él. La lección obvia fue que " "utilizar un lenguaje como <acronym>TECO</acronym>, que no había sido " "diseñado como lenguaje de programación, fue una opción equivocada. El " "lenguaje sobre el que construye sus extensiones no debería ser considerado " "como un lenguaje de programación a posteriori, sino que debería ser diseñado " "como un lenguaje de programación desde un principio. De hecho, descubrimos " "que el mejor lenguaje de programación para ese propósito era Lisp." # type: Content of: <p> #. type: Content of: <p> msgid "" "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 — " "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." msgstr "" "Fue Bernie Greenberg quien descubrió que lo era <a href=\"#foot-2\">(2)</" "a> . Escribió una versión de Emacs en Multics MacLisp, y programó sus " "órdenes en MacLisp de forma sencilla. El propio editor estaba escrito " "enteramente en Lisp. Multics Emacs fue un gran éxito: programar nuevas " "órdenes de edición era tan práctico que incluso los administrativos " "empezaron a aprender a hacerlo en sus oficinas. Utilizaban un manual que " "mostraba cómo extender Emacs, pero que no lo llamaba programación, de forma " "que los administrativos, que pensaban que no sabían programar, no se " "asustaran. Leyeron el manual, descubrieron que podían hacer cosas útiles y " "aprendieron a programar." # type: Content of: <p> #. type: Content of: <p> msgid "" "So Bernie saw that an application — a program that does something " "useful for you — 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 — at the stage where it's " "the hardest — where they don't believe they can program, until they " "get to the point where they are programmers." msgstr "" "Así que Bernie vio que una aplicación, un programa creado para solucionar " "problemas prácticos, que llevara incorporado LISP, de forma que pudiera " "extender las funcionalidades que trae de diseño, incluso reescribirlas " "enteramente, era en sí misma una muy buena manera de aprender a programar. " "Le da a uno la oportunidad de ajustar dichas utilidades a la propia medida, " "algo que en la mayoría de las situaciones simplemente no puede hacer. Lo " "cual es estimulante en sí mismo y le mueve a extender personalizar las " "aplicaciones y de hecho transitar desde el momento más duro en el que asume " "que no es capaz de programar hasta aquel en el que está, de hecho, " "programando." # type: Content of: <p> #. type: Content of: <p> msgid "" "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 — it was a " "full-fledged Lisp system — 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 — 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." msgstr "" "Llegado este punto, la gente se empezó a preguntar cómo podría conseguir " "algo así en una plataforma que no poseyera una implementación de Lisp " "completa. Multics MacLisp tenía tanto un compilador como un intérprete, era " "un sistema Lisp con todas las de la ley, pero la gente quería implementar " "algo similar en otros sistemas para los cuales todavía no había programado " "un compilador de Lisp. Bien, si no tenía el compilador de Lisp no podía " "escribir todo el editor en Lisp: resultaría demasiado lento, especialmente " "al refrescar la pantalla, si tenía que ejecutarse en Lisp interpretado. Así " "que desarrollamos una técnica híbrida. La idea era escribir conjuntamente un " "intérprete de Lisp y los fragmentos de nivel más bajo del editor, de forma " "que algunos fragmentos del editor fueran mecanismos incorporados en el " "intérprete de Lisp. Estos fragmentos serían todas aquellas partes que " "consideráramos que teníamos que optimizar. Ya habíamos utilizado esta " "técnica en el Emacs original, cuando reescribimos en lenguaje máquina " "algunas funciones de nivel relativamente alto, transformándolas en " "primitivas <acronym>TECO</acronym>. Por ejemplo, había una primitiva " "<acronym>TECO</acronym> para rellenar un párrafo (en realidad, para hacer " "casi todo el trabajo necesario para rellenar un párrafo, porque algunas de " "las tareas que menos tiempo consumían eran realizadas en un nivel superior " "por un programa <acronym>TECO</acronym>). Se podría haber hecho todo el " "trabajo con un programa <acronym>TECO</acronym>, pero habría resultado " "demasiado lento, por eso lo optimizamos escribiendo parte de él en lenguaje " "máquina. Esa misma idea es la que usamos aquí (en la técnica híbrida): " "escribimos la mayoría del editor en Lisp, pero escribimos en un nivel " "inferior algunas partes que tenían que ejecutarse particularmente rápido." # type: Content of: <p> #. type: Content of: <p> msgid "" "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 " "— manipulating editor buffers, inserting leading text, reading and " "writing files, redisplaying the buffer on the screen, managing editor " "windows." msgstr "" "Por lo tanto, cuando escribí mi segunda implementación de Emacs seguí el " "mismo esquema. El lenguaje de bajo nivel ya no era lenguaje máquina, sino C. " "C era un lenguaje bueno y eficiente para programas portátiles que fueran a " "ejecutarse en un sistema operativo tipo Unix. Había un intérprete de Lisp, " "pero implementé directamente en C funciones para tareas de edición de " "propósito específico: manipular las zonas de memoria intermedia [buffers] " "del editor, insertar texto por delante, leer y escribir ficheros, refrescar " "la pantalla con el contenido de la memoria intermedia y gestionar la " "ventanas del editor." # type: Content of: <p> #. type: Content of: <p> msgid "" "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 — 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 “you had to send back all of your " "improvements” so we could all benefit. No one ever tried to enforce " "that, but as far as I know people did cooperate." msgstr "" "Ahora bien, este no fue el primer Emacs escrito en C y que se ejecutaba en " "Unix. El primero lo escribió James Gosling, y era conocido como GosMacs. Con " "James ocurrió algo extraño. Al principio parecía estar influido por el mismo " "espíritu de participación y cooperación del Emacs original. En primer lugar " "liberé el Emacs original para personal del <abbr>MIT</abbr>. Alguien quería " "adaptarlo para su ejecución en Twenex, inicialmente sólo se podía ejecutar " "sobre el <span style=\"font-style:italic;\">Incompatible Timesharing System</" "span> [sistema de tiempo compartido incompatible] que usábamos en el " "<abbr>MIT</abbr>. Lo adaptaron a Twenex, lo cual significaba que había unos " "pocos cientos de instalaciones alrededor del mundo que podían, " "potencialmente, usarlo. Empezamos a distribuírselo junto con la norma de que " "«usted debía enviarnos todas sus mejoras» para que así todos nos pudiéramos " "beneficiar. Nadie intentó nunca hacer cumplir esta norma pero, hasta donde " "yo sé, la gente cooperaba." # type: Content of: <p> #. type: Content of: <p> msgid "" "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 — 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." msgstr "" "Inicialmente Gosling parecía participar de este espíritu. Escribió en un " "manual que llamó Emacs al programa con la esperanza de que otros miembros de " "la comunidad lo mejoraran hasta que llegara a ser merecedor de ese nombre. " "Esa es la forma correcta de enfocar la relación con la comunidad, pedirle " "que se una al proyecto y mejore el programa. Pero más adelante pareció " "cambiar el espíritu, y lo vendió a una empresa." # type: Content of: <p> #. type: Content of: <p> msgid "" "At that time I was working on the GNU system (a free software Unix-like " "operating system that many people erroneously call “Linux”). " "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 ‘mocklisp’, 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." msgstr "" "Por aquel entonces yo estaba trabajando en el sistema GNU (un sistema " "operativo libre tipo Unix al que mucha gente llama erróneamente «Linux»). No " "había ningún editor Emacs que pudiera ejecutarse en Unix y que fuera " "software libre. No obstante, tenía un amigo que había participado en el " "desarrollo del Emacs de Gosling. Gosling le había dado permiso, por correo " "electrónico, para distribuir su propia versión. Me propuso que usara esa " "versión. Entonces me di cuenta de que el Emacs de Gosling no incluía un Lisp " "real. Tenía un lenguaje de programación conocido como «mocklisp», que " "sintácticamente parece Lisp pero que no tiene sus estructuras de datos. Así, " "los programas no eran datos, y carecía de elementos vitales de Lisp. Sus " "estructuras de datos eran cadenas de caracteres, números y unos pocos " "elementos especializados más." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "Llegué a la conclusión de que no podía utilizarlo y tuve que reemplazarlo " "por completo, para lo cual el primer paso fue escribir un intérprete de Lisp " "real. Gradualmente adapté cada componente del editor basándolo en " "estructuras de datos de Lisp real, en lugar de estructuras de datos ad hoc, " "y haciendo las estructuras de datos internas del editor visibles y " "manipulables por los programas Lisp del usuario." # type: Content of: <p> #. type: Content of: <p> msgid "" "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 — it's now possible to " "run Lisp code during redisplay. It's quite a convenient thing." msgstr "" "La excepción fue <span style=\"font-style:italic;\">redisplay</span>. " "Durante mucho tiempo, <span style=\"font-style:italic;\">redisplay</span> " "fue una especie de universo paralelo. El editor pasaba al universo de <span " "style=\"font-style:italic;\">redisplay</span> y todo funcionaba con " "estructuras de datos muy especiales que no eran seguras para la recolección " "de memoria [<span style=\"font-style:italic;\">garbage collection</span>], " "no eran seguras frente a interrupciones, y no podía ejecutar ningún programa " "Lisp mientras tanto. Posteriormente lo hemos modificado, ahora se puede " "ejecutar código Lisp concurrentemente con <span style=\"font-style:italic;" "\">redisplay</span>. Es algo muy práctico." # type: Content of: <p> #. type: Content of: <p> msgid "" "This second Emacs program was ‘free software’ in the modern " "sense of the term — 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 — the experience I had, " "the life that I've lived at the <abbr>MIT</abbr> AI lab — to be " "working on human knowledge, and not be standing in the way of anybody's " "further using and further disseminating human knowledge." msgstr "" "Este segundo Emacs era «software libre» en el sentido moderno del término: " "formaba parte de una campaña política explícita para la elaboración de " "software libre. La esencia de la campaña era que todo el mundo, debería " "tener la libertad de hacer lo que nosotros hacíamos en el <abbr>MIT</abbr> " "de los viejos tiempos: trabajar conjuntamente en el software y colaborar con " "todo el que quisiera trabajar con nosotros. Esta es la base del movimiento " "por el software libre, la experiencia que tuve, la vida que viví en el " "Laboratorio de Inteligencia Artificial del <abbr>MIT</abbr>: trabajar para " "el conocimiento, y no obstaculizar su uso ni su expansión." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "En esa época, podía construir un ordenador por un precio similar al de otros " "ordenadores que no estaban pensados para usar Lisp, en el cual Lisp se " "ejecutaría mucho más rápido y que incluiría validación de tipos en cada " "operación. Los ordenadores normales típicamente le forzaban a elegir entre " "velocidad de ejecución y buena validación de tipos. O sea que sí, podía " "tener un compilador de Lisp y ejecutar sus programas con velocidad, pero " "cuando sus programas intentaban tomar <tt>car</tt> de un número, obtenían " "resultados absurdos y terminaban por fallar o bloquearse." # type: Content of: <p> #. type: Content of: <p> msgid "" "The Lisp machine was able to execute instructions about as fast as those " "other machines, but each instruction — a car instruction would do data " "typechecking — 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." msgstr "" "La máquina Lisp podía ejecutar instrucciones aproximadamente a la misma " "velocidad que esas otras máquinas, pero cada instrucción validaría los tipos " "de los datos, así cuando usted intentara obtener el <tt>car</tt> de un " "número en un programa compilado, obtendría un error inmediato. Construimos " "la máquina y un sistema operativo Lisp para ella. Estaba escrito en Lisp " "casi en su totalidad, con las únicas excepciones de algunos fragmentos " "escritos en microcódigo. Hubo quien se interesó en fabricarla, lo que " "significaba fundar una empresa." # type: Content of: <p> #. type: Content of: <p> msgid "" "There were two different ideas about what this company should be like. " "Greenblatt wanted to start what he called a “hacker” 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." msgstr "" "Había dos visiones diferentes sobre cómo debería ser esa empresa. Greenblatt " "quería fundar lo que él llamaba una empresa «hacker». Esto quería decir que " "sería una empresa gestionada por hackers y que operaría de un modo propicio " "para hackers. Otro objetivo era mantener la cultura del Laboratorio de " "Inteligencia Artificial <a href=\"#foot-3\">(3)</a>. Desafortunadamente, " "Greenblatt no tenía experiencia empresarial, por lo que otros miembros del " "grupo de la máquina Lisp expresaron sus dudas sobre el éxito de la empresa. " "Pensaban que su plan para evitar inversiones externas no funcionaría." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "¿Por qué quería evitar la inversión externa?. Porque cuando una empresa " "tiene inversores externos, éstos toman el control y no permiten que tenga " "ningún escrúpulo. Y, si usted tiene algún escrúpulo, finalmente le relevan " "de sus funciones directivas." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "La idea de Greenblatt era encontrar un cliente que pagara sus máquinas por " "adelantado para poder comprar las piezas necesarias. Construirían las " "máquinas y las entregarían; con los beneficios obtenidos podrían comprar las " "piezas para unas pocas máquinas más, venderlas, comprar piezas para un " "número mayor de máquinas, y así sucesivamente. Los otros miembros del grupo " "pensaban que lo más probable era que el plan no saliera bien." # type: Content of: <p> #. type: Content of: <p> msgid "" "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, “Let's ditch " "Greenblatt, forget his ideas, and we'll make another company.” " "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." msgstr "" "Entonces Greenblatt reclutó a Russell Noftsker, la persona que me había " "contratado, quien había dejado el Laboratorio de Inteligencia Artificial y " "creado una empresa exitosa. Russell era considerado una persona con " "aptitudes para los negocios. Demostró serlo al decir a los otros miembros " "del grupo: «deshagámonos de Greenblatt, olvidad sus ideas y fundaremos otra " "empresa». Apuñalando por la espalda, sin duda un auténtico hombre de " "negocios. Decidieron crear una empresa llamada Symbolics. Obtendrían " "financiación externa, no tendrían escrúpulos y harían todo lo posible por " "ganar." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "Pero Greenblatt no se dio por vencido. Fundó, junto con los pocos que " "permanecieron leales a él, Lisp Machines Inc. y siguió adelante con sus " "planes. ¡Y tuvieron éxito! Consiguieron el primer cliente y éste les pagó " "por adelantado. Construyeron las máquinas y las vendieron, y construyeron " "más y más máquinas. Tuvieron éxito a pesar de no contar con la ayuda de la " "mayor parte de los miembros del grupo. Symbolics también empezó con buen " "pie, así que había dos empresas de máquinas Lisp compitiendo. Cuando " "Symbolics vio que LMI no se iba a caer de bruces empezó a buscar maneras de " "destruirla." # type: Content of: <p> #. type: Content of: <p> msgid "" "Thus, the abandonment of our lab was followed by “war” 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." msgstr "" "Por lo tanto, al abandono de nuestro laboratorio le siguió la «guerra» en " "nuestro laboratorio. El abandono tuvo lugar cuando Symbolics se llevó a " "todos los hackers, excepto a los pocos que trabajaban a tiempo parcial en " "LMI y a mí mismo. Luego apelaron a una norma y eliminaron a la gente que " "trabajaba a tiempo parcial para el <abbr>MIT</abbr>, que tuvo que marcharse, " "lo cual me dejo sólo a mí. En ese momento el Laboratorio de Inteligencia " "Artificial estaba indefenso. Y, además, el <abbr>MIT</abbr> había llegado a " "un acuerdo muy poco sensato con esas dos empresas. Era un contrato a tres " "bandas por el que ambas empresas autorizaban el uso de las fuentes del " "sistema de la máquina Lisp. Estas empresas debían permitir al <abbr>MIT</" "abbr> usar sus modificaciones. Pero el contrato no decía que el <abbr>MIT</" "abbr> tuviera derecho a instalarlas en las máquinas Lisp para cuyo uso le " "habían otorgado licencia ambas empresas. Nadie había previsto que el grupo " "de hackers del Laboratorio de Inteligencia Artificial sería aniquilado, pero " "lo fue." # type: Content of: <p> #. type: Content of: <p> msgid "" "So Symbolics came up with a plan <a href=\"#foot-4\">(4)</a>. They said to " "the lab, “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.”" msgstr "" "A Symbolics se le ocurrió un plan <a href=\"#foot-4\">(4)</a>. Dijeron al " "laboratorio: «seguiremos permitiéndoles que usen nuestras modificaciones al " "sistema, pero no podrán instalarlas en la máquina Lisp del <abbr>MIT</abbr>. " "En su lugar, les daremos acceso al sistema de la máquina Lisp de Symbolics, " "y podrán ejecutarlo, pero eso será todo lo que podrán hacer.»." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "Esto, en la práctica, significaba que nos exigían posicionarnos en un bando " "y utilizar, o bien la versión del <abbr>MIT</abbr> del sistema, o bien la " "versión de Symbolics. Nuestra decisión determinaría a qué sistema irían " "nuestras mejoras. Si mejorábamos la versión de Symbolics, estaríamos " "apoyando a Symbolics exclusivamente. Si utilizábamos y mejorábamos la " "versión del sistema del <abbr>MIT</abbr>, ambas empresas tendrían acceso a " "nuestro trabajo. Pero Symbolics vio que estaríamos dando apoyo a LMI porque " "estaríamos ayudando a que siguiera existiendo. Así, no se nos permitió " "seguir siendo neutrales." # type: Content of: <p> #. type: Content of: <p> msgid "" "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> — 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)." msgstr "" "Hasta ese momento yo no había tomado partido por ninguna de las dos " "empresas, aunque me entristecía ver lo que le había ocurrido a nuestra " "comunidad y al software. Pero ahora, Symbolics había forzado la situación. " "Así que, en un intento por ayudar a mantener Lisp Machines Inc. a flote <a " "href=\"#foot-5\">(5)</a>, empecé a duplicar todas las mejoras que había " "hecho Symbolics al sistema de la máquina Lisp. Escribí por mí mismo las " "mejoras equivalentes de nuevo (es decir, el código era mío)." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "Después de un tiempo <a href=\"#foot-6\">(6)</a>, llegué a la conclusión de " "que sería mejor ni siquiera mirar su código. Cuando anunciaban la liberación " "de una actualización del código, podía ver en las notas correspondientes a " "la nueva liberación cuáles eran las modificaciones introducidas e " "implementarlas. Cuando ellos hacían finalmente la liberación de las " "modificaciones, yo también liberaba las mías." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "De esta manera, durante dos años evité que acabaran con Lisp Machines " "Incorporated, y las dos empresas siguieron adelante. Pero no quería pasarme " "años y años castigando a alguien, evitando que se cometiera un acto malvado. " "Supuse que ya habían sido castigados bastante puesto que estaban inmersos en " "una competición que no tendría fin <a href=\"#foot-7\">(7)</a>. Por otro " "lado, había llegado el momento de formar una nueva comunidad que reemplazara " "a la que las acciones suyas y de otros exterminaron." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "La comunidad Lisp en los setenta no estaba limitada al Laboratorio de " "Inteligencia Artificial del <abbr>MIT</abbr>, y no todos los hackers estaban " "en el <abbr>MIT</abbr>. La guerra iniciada por Symbolics fue lo que aniquiló " "el <abbr>MIT</abbr>, pero había otras actividades en marcha. Había gente que " "abandonó la cooperación, y esto también contribuyó a extinguir la comunidad." # type: Content of: <p> #. type: Content of: <p> msgid "" "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 — the only way " "that people could work together and share was with a free operating system." msgstr "" "Una vez que dejé de castigar a Symbolics, tuve que pensar qué hacer a " "continuación. Tenía que hacer un sistema operativo libre, eso estaba claro. " "La única forma de que la gente pudiera trabajar conjuntamente y compartir " "era con un sistema operativo libre." # type: Content of: <p> #. type: Content of: <p> msgid "" "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 — 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." msgstr "" "Al principio pensé en hacer un sistema basado en Lisp, pero me di cuenta de " "que no sería una buena idea desde el punto de vista técnico. Para tener algo " "como el sistema de la máquina Lisp, se necesita un tipo de microcódigo " "llamado \"de propósito específico\". Eso es lo que hizo posible ejecutar " "programas con la misma velocidad con la que se ejecutaban programas en otros " "ordenadores y con el beneficio adicional de la validación de tipos. Sin eso, " "se habría visto limitado a algo similar a los compiladores Lisp para otras " "máquinas. Los programas habrían sido más rápidos, pero inestables. Ahora " "bien, eso puede ser admisible si está ejecutando un programa en un sistema " "de tiempo compartido: que un programa falle no es un desastre, es algo que " "ocurre ocasionalmente. Pero no es admisible cuando lo que escribimos es el " "sistema operativo, así que rechacé la idea de hacer un sistema como la " "máquina Lisp." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "En su lugar, decidí hacer un sistema operativo tipo Unix que tuviera " "implementaciones Lisp, las cuales serían ejecutadas como programas de " "usuario. El núcleo no estaría escrito en Lisp, pero tendríamos Lisp. Así que " "el desarrollo de ese sistema operativo, el sistema operativo GNU, fue lo que " "me llevó a escribir Emacs de GNU. Al hacerlo, me propuse como meta hacer la " "implementación de Lisp mínima posible. El tamaño de los programas era algo a " "tener muy en cuenta." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "Había gente en aquellos días, en 1985, que tenía máquinas con un megabyte de " "memoria y sin memoria virtual. Querían poder usar Emacs de GNU. Esto " "significaba que tenía que hacer que el programa fuera lo más pequeño posible." # type: Content of: <p> #. type: Content of: <p> msgid "" "For instance, at the time the only looping construct was ‘" "while’, which was extremely simple. There was no way to break out of " "the ‘while’ 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 ‘caar’ and ‘cadr’ " "and so on; “squeeze out everything possible” was the spirit of " "GNU Emacs, the spirit of Emacs Lisp, from the beginning." msgstr "" "Por ejemplo, en aquel entonces la única estructura iterativa era «while», " "implementada de forma extremadamente simple. No había ningún mecanismo para " "interrumpir la ejecución de la sentencia «while» y transferir el control a " "la instrucción siguiente a dicha sentencia, usted tenía que ejecutar un " "<tt>catch</tt> y un <tt>throw</tt>, o monitorizar una variable para salir " "del bucle. Esto muestra hasta dónde estaba llevando las cosas para mantener " "los programas pequeños. No teníamos «caar», «cadr», etc., había que " "«exprimirlo lo más posible» ese fué el espíritu del Emacs de GNU, el " "espíritu de Emacs Lisp desde el principio." # type: Content of: <p> #. type: Content of: <p> msgid "" "Obviously, machines are bigger now, and we don't do it that way any more. We " "put in ‘caar’ and ‘cadr’ 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." msgstr "" "Evidentemente, las máquinas actuales tienen mayor capacidad, y ya no hacemos " "las cosas así. Ahora incluimos «caar», «cadr», etc. Y podríamos añadir otra " "estructura iterativa un día de estos. Queremos ampliarlo en cierta medida, " "pero no hasta el punto de Common Lisp. Una vez implementé Common Lisp en una " "máquina Lisp, y no estoy muy satisfecho con el resultado. Algo que no me " "gusta gran cosa son los parámetros de palabra clave<a href=\"#foot-8\">(8)</" "a>. No me parecen muy de Lisp; los utilizo a veces pero intento hacerlo lo " "menos posible." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "Ese no fue el fin de los proyectos de GNU implicados con Lisp. Más tarde, " "alrededor de 1995, estábamos estudiando el inicio de un proyecto de " "escritorio gráfico. Teníamos claro que queríamos un lenguaje de programación " "que hiciera fácilmente extensibles, como el editor, los programas accesibles " "desde el escritorio. La cuestión era cuál." # type: Content of: <p> #. type: Content of: <p> msgid "" "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 “de-facto standard extension " "language” of the world. And I thought, “We've got to stop that " "from happening.” 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." msgstr "" "En aquel momento, <acronym title=\"Tool Command Language\" lang=\"en\">TCL</" "acronym> estaba recibiendo un fuerte impulso como lenguaje a utilizar para " "este propósito. Yo tenía una opinión muy negativa de <acronym>TCL</acronym>, " "básicamente porque no era Lisp. Tiene un ligerísimo parecido con Lisp, pero " "no semánticamente, y no es tan limpio. Después, me mostraron un anuncio en " "el que Sun ofrecía un puesto de trabajo para trabajar con <acronym>TCL</" "acronym> y hacer de él el «lenguaje de extensión estándar, de facto» en el " "mundo. Y pensé: «Tenemos que evitar que eso llegue a ocurrir.». Así que " "empezamos a hacer de Scheme el lenguaje para extensiones estándar para GNU. " "No Common Lisp, porque era demasiado voluminoso. La idea era tener un " "intérprete Scheme diseñado para ser enlazado en las aplicaciones de la misma " "manera que se enlazaba <acronym>TCL</acronym>. Entonces lo recomendaríamos " "como el paquete para extensiones prefererido para todos los programas GNU." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "Usted puede obtener un beneficio interesante del uso de un lenguaje tan " "potente como un dialecto de Lisp como su lenguaje primario de extensión: " "puede implementar otros lenguajes traduciéndolos a su lenguaje primario. Si " "su lenguaje primario es <acronym>TCL</acronym>, usted no podrá implementar " "Lisp fácilmente mediante su traducción a <acronym>TCL</acronym>. Pero si su " "lenguaje primario es Lisp, no es tan difícil implementar otros lenguajes " "traduciéndolos. Nuestra idea era que si cada aplicación extensible admitía " "Scheme, usted podría escribir una implementación de <acronym>TCL</acronym> o " "Python o Perl en Scheme que tradujera los programas en esos lenguajes a " "Scheme. Entonces, usted podría cargar su traductor en cualquier aplicación y " "extender dicha aplicación usando su lenguaje favorito." # type: Content of: <p> #. type: Content of: <p> msgid "" "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 " "— saying “Please, application developer, put my language into " "your application, not his language.” Then the users get no choices at " "all — 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." msgstr "" "Mientras los lenguajes de extensión sean débiles, los usuarios sólo pueden " "usar los lenguajes proporcionados por el programador. Lo que significa que a " "quien le guste utilizar un lenguaje de programación determinado tiene que " "competir por la elección de los diseñadores de aplicaciones diciendo «por " "favor, programador, ponga mi lenguaje en su aplicación, no el lenguaje de " "aquél.». Después los usuarios no tienen ninguna opción, la aplicación viene " "con un lenguaje y tienen que quedarse con él. Pero cuando dispone de un " "lenguaje potente que puede implementar otros mediante la traducción, da al " "usuario la posibilidad de elegir el lenguaje y ya no hay necesidad de una " "guerra de lenguajes. Esto es lo que esperamos que haga «Guile», nuestro " "intérprete Scheme. El verano pasado tuvimos a una persona trabajando en la " "finalización de un traductor de Python a Scheme. No sé si ya está " "completamente terminado, pero cualquiera que esté interesado en este " "proyecto, por favor póngase en contacto. Este es nuestro plan para el futuro." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "Esta charla no es sobre software libre, pero déjenme comentarles brevemente " "lo que significa. Software libre no se refiere al precio<sup><a href=" "\"#TransNote1\" id=\"IniTransNote1\">1</a></sup>, no significa que usted lo " "obtiene gratis (puede haber pagado por una copia, o haberla obtenido " "gratis.). Lo que significa es que usted tiene libertad como usuario. Lo " "fundamental es que es libre de ejecutar el programa, libre de estudiar qué " "hace, libre de modificarlo para adaptarlo a sus necesidades, libre de " "redistribuir las copias de otros y libre de publicar versiones mejoradas, " "ampliadas. Esto es lo que significa software libre. Si utiliza un programa " "que no sea libre, pierde una libertad crucial, así que no lo haga nunca." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "El propósito del proyecto GNU es hacer más fácil para la gente rechazar el " "software que no sea libre, pisotea libertades y domina usuarios, " "proporcionándole software libre para sustituirlo. Para aquellos que no " "tienen el valor moral de rechazar el software que no es libre cuando hacerlo " "representa un inconveniente práctico, lo que intentamos hacer es ofrecer una " "alternativa libre de forma que puedan mudarse a la libertad de forma más " "ordenada y con menos sacrificios en términos prácticos. Cuanto menor el " "sacrificio, mejor. Queremos hacer más fácil vivir en libertad, cooperar." # type: Content of: <p> #. type: Content of: <p> msgid "" "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." msgstr "" "Es una cuestión de libertad para cooperar. Solemos pensar en la libertad y " "en la cooperación con la sociedad como si fueran opuestos. Pero aquí están " "del mismo lado. Con software libre es libre de cooperar con otros así como " "libre de ayudarse a usted mismo. Con software que no es libre, alguien le " "está dominando y está manteniendo dividida a la gente. No se le permite " "compartir con el resto, no es libre de cooperar ni de ayudar a la sociedad, " "como tampoco es libre de ayudarse a usted mismo. Divididos y desamparados es " "como se encuentran los usuarios de software que no es libre." # type: Content of: <p> #. type: Content of: <p> msgid "" "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, “Free " "Software and Free Society”, is on sale and can be purchased at <a href=" "\"http://www.gnu.org/\">www.gnu.org</a>. Happy hacking!" msgstr "" "Hemos producido una enorme variedad de software libre. Hemos hecho lo que la " "gente decía que nunca lograríamos hacer; tenemos dos sistemas operativos de " "software libre. Tenemos muchas aplicaciones y, obviamente, todavía tenemos " "mucho camino por recorrer. Así que necesitamos su ayuda. Me gustaría " "pedirles que colaboraran como voluntarios para el proyecto GNU; ayúdennos a " "desarrollar software libre para más tareas. Echen un vistazo a <a href=\"/" "help/\">http://www.gnu.org/help/help.es.html</a> para encontrar sugerencias " "sobre cómo ayudar. Si quieren hacer algún pedido, hay un enlace disponible " "en la página principal. Si quieren leer sobre cuestiones filosóficas, miren " "en /philosophy. Si están buscando el software libre disponible, miren en /" "directory, donde se listan alrededor de 1900 paquetes en la actualidad (lo " "cual es una fracción de todo el software libre disponible ahí fuera). Por " "favor, escriban más software y contribuyan. Mi libro de ensayos, «<span " "style=\"font-style:italic,\">Free Software and Free Society</span>» se " "encuentra a la venta y puede adquirirse en <a href=\"http://www.gnu.org" "\">www.gnu.org</a><sup><a href=\"#TransNote2\" id=\"IniTransNote2\">2</a></" "sup>. ¡Feliz hacking!." # type: Content of: <p> #. type: Content of: <ol><li> msgid "" "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." msgstr "" "Guy Steele diseñó el conjunto de órdenes simétrico original de Emacs; luego, " "él y yo empezamos a implementar Emacs (sobre TECO), pero, tras una larga " "sesión conjunta de desarrollo, Steele empezó a distanciarse, así que yo " "finalicé Emacs. Otros, entre los que destacan Eugene C. Cicciarelli y Mike " "McMahon, contribuyeron más tarde de forma sustancial." # type: Content of: <p> #. type: Content of: <ol><li> msgid "" "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." msgstr "" "Bernie Greenberg dice que Dan Weinreb implementó Emacs para la Máquina Lisp " "antes de que Greenberg lo implementara para Multics. Pido disculpas por el " "error. " # type: Content of: <p> #. type: Content of: <ol><li> msgid "" "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." msgstr "" "El plan de Greenblatt, según lo entendía yo, era contratar a la gente del " "laboratorio a tiempo parcial, de forma que pudieran seguir trabajando en el " "Laboratorio de Inteligencia Artificial. En cambio, Symbolics les contrató a " "jornada completa, así que dejaron de trabajar en el MIT." # type: Content of: <p> #. type: Content of: <ol><li> msgid "" "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 " "— even though the contract did not require this. Symbolics' plan was " "to rupture this cooperation unilaterally." msgstr "" "Las circunstancias de este plan, que no expuse explícitamente en la charla, " "fueron las siguientes: durante un periodo inicial los hackers que habían " "dejado el Laboratorio de Inteligencia Artificial, tanto los que trabajaban " "para Symbolics como los que lo hacían para LMI, continuaron aportando al " "sistema de la máquina Lisp del MIT sus modificaciones, a pesar de que el " "contrato no lo exigía. El plan de Symbolics era provocar unilateralmente la " "ruptura de esta cooperación." # type: Content of: <p> #. type: Content of: <ol><li> msgid "" "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." msgstr "" "No era que me preocupara especialmente el destino de LMI, sino más bien que " "no quería que Symbolics saliera vencedora gracias a haber agredido como lo " "hizo al Laboratorio de Inteligencia Artificial." # type: Content of: <p> #. type: Content of: <ol><li> msgid "" "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." msgstr "" "Esta afirmación ha sido malinterpretada atribuyéndole el significado de que " "nunca miré el código de Symbolics. En realidad dice que sí lo hice, al " "principio. El código fuente de Symbolics estaba disponible en el MIT, por lo " "tanto yo podía leerlo, y al principio era así como me enteraba de sus " "modificaciones." # type: Content of: <p> #. type: Content of: <ol><li><p> msgid "" "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." msgstr "" "Pero eso significaba que tenía que hacer un esfuerzo especial para resolver " "cada problema de forma diferente, para evitar que mi código fuera una copia " "del código de Symbolics. Pasado un tiempo, llegué a la conclusión de que era " "mejor no mirarlo. De esa forma podía escribir el código de la forma que " "considerara mejor sin preocuparme de lo que contenía el código de Symbolics." # type: Content of: <p> #. type: Content of: <ol><li> msgid "" "Symbolics at one point protested to MIT that my work, by thwarting their " "plan, had cost Symbolics a million dollars." msgstr "" "En una ocasión Symbolics se quejó al MIT de que mi trabajo, al frustrar sus " "planes, le había costado un millón de dólares." #. type: Content of: <ol><li> msgid "" "I don't mind if a very complex and heavyweight function takes keyword " "arguments. What bothers me is making simple basic functions such as “" "member” use them." msgstr "" "No me molesta si una función muy compleja y avanzada toma parámetros de " "palabras clave. Lo que me molesta es ponerlas en funciones simples y básicas " "como «member»." # type: Content of: <div> #. TRANSLATORS: Use space (SPC) as msgstr if you don't have notes. #. type: Content of: <div> msgid "*GNUN-SLOT: TRANSLATOR'S NOTES*" msgstr "" "<b>Notas del traductor</b>:\n" "<ol>\n" "<li id=\"TransNote1\">Software Libre es la traducción de <span style=\"font-" "style:italic;\">Free Software</span>. Aquí se hace referencia al doble " "significado del término inglés <span style=\"font-style:italic;\">Free</" "span>, que puede significar tanto «libre» como «gratis». <a href=" "\"#IniTransNote1\" >Regresar al texto</a>.</li>\n" "<li id=\"TransNote2\">Existe una traducción del libro publicada en España " "por el editorial Traficantes de Sueños. <a href=\"#IniTransNote2\">Regresar " "al texto</a>.</li></ol>" # type: Content of: <div><p> #. type: Content of: <div><div><p> msgid "" "Please send general FSF & GNU inquiries to <a href=\"mailto:address@hidden" "\"><address@hidden></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:address@hidden"><address@hidden" "org></a>." msgstr "" "Envíe sus consultas acerca de la FSF y GNU a <a href=\"mailto:address@hidden" "\"><address@hidden></a>. Existen también <a href=\"/contact/\">otros " "medios para contactar</a> con la FSF. <br /> Para avisar de enlaces rotos y " "proponer otras correcciones o sugerencias, diríjase a <a href=\"mailto:" "address@hidden"><address@hidden></a>." # #. 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 href="mailto:address@hidden"> #. <address@hidden></a>.</p> #. <p>For information on coordinating and submitting translations of #. our web pages, see <a #. href="/server/standards/README.translations.html">Translations #. README</a>. #. type: Content of: <div><div><p> msgid "" "Please see the <a href=\"/server/standards/README.translations.html" "\">Translations README</a> for information on coordinating and submitting " "translations of this article." msgstr "" "El equipo de traductores al español se esfuerza por ofrecer traducciones " "fieles al original y de buena calidad, pero no estamos libres de cometer " "errores.<br /> Por favor envíe sus comentarios y sugerencias sobre las " "traducciones a <a href=\"mailto:address@hidden"><web-" "address@hidden></a>. </p><p>Consulte la <a href=\"/server/standards/" "README.translations.html\">Guía para las traducciones</a> para obtener " "información sobre la coordinación y el envío de traducciones de las páginas " "de este sitio web." # type: Content of: <div><p> #. type: Content of: <div><p> msgid "Copyright © 2003, 2007, 2013, 2014 Free Software Foundation, Inc." msgstr "Copyright © 2003, 2007, 2013, 2014 Free Software Foundation, Inc." #. type: Content of: <div><p> msgid "" "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>." msgstr "" "Esta página está bajo licencia <a rel=\"license\" href=\"http://" "creativecommons.org/licenses/by-nd/3.0/us/deed.es_ES\">Creative Commons " "Reconocimiento-SinObraDerivada 3.0 Estados Unidos de América</a>." # type: Content of: <div><div> #. TRANSLATORS: Use space (SPC) as msgstr if you don't want credits. #. type: Content of: <div><div> msgid "*GNUN-SLOT: TRANSLATOR'S CREDITS*" msgstr "" "<span style=\"text-weight:bold;\">Traducción</span>: Rafa Pereira, julio " "2009." # type: Content of: <div><p> #. timestamp start #. type: Content of: <div><p> msgid "Updated:" msgstr "Última actualización:"