summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/es/rms-lisp.html
diff options
context:
space:
mode:
Diffstat (limited to 'talermerchantdemos/blog/articles/es/rms-lisp.html')
-rw-r--r--talermerchantdemos/blog/articles/es/rms-lisp.html173
1 files changed, 98 insertions, 75 deletions
diff --git a/talermerchantdemos/blog/articles/es/rms-lisp.html b/talermerchantdemos/blog/articles/es/rms-lisp.html
index 65d6618..aba7557 100644
--- a/talermerchantdemos/blog/articles/es/rms-lisp.html
+++ b/talermerchantdemos/blog/articles/es/rms-lisp.html
@@ -1,19 +1,32 @@
<!--#set var="ENGLISH_PAGE" value="/gnu/rms-lisp.en.html" -->
<!--#include virtual="/server/header.es.html" -->
-<!-- Parent-Version: 1.77 -->
+<!-- Parent-Version: 1.96 -->
+<!-- This page is derived from /server/standards/boilerplate.html -->
+<!--#set var="TAGS" value="gnu-history" -->
+<!--#set var="DISABLE_TOP_ADDENDUM" value="yes" -->
<!-- This file is automatically generated by GNUnited Nations! -->
<title>Mis experiencias con Lisp y el desarrollo de Emacs de GNU - Proyecto GNU -
Free Software Foundation </title>
+<style type="text/css" media="print,screen"><!--
+a[href*='#foot-'] { font-size: .94em; }
+-->
+</style>
<!--#include virtual="/gnu/po/rms-lisp.translist" -->
<!--#include virtual="/server/banner.es.html" -->
+<!--#include virtual="/gnu/gnu-breadcrumb.es.html" -->
+<!--GNUN: OUT-OF-DATE NOTICE-->
+<!--#include virtual="/server/top-addendum.es.html" -->
+<div class="article reduced-width">
<h2>Mis experiencias con Lisp y el desarrollo de Emacs de GNU</h2>
-<blockquote><p>(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>]).</p></blockquote>
+<div class="infobox">
+<p>Transcripción de la conferencia pronunciada por Richard Stallman el 28 de
+octubre de 2002 en el Congreso Internacional de Lisp.</p>
+</div>
+<hr class="thin" />
<p>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. En
@@ -73,23 +86,24 @@ Editor and COrrector" lang="en">TECO</abbr>. <abbr>TECO</abbr> 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.</p>
+textos. Había órdenes como <code>5l</code>, que significaba «mover cinco
+líneas», o <code>i</code> 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.</p>
<p>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: &lt; &gt;. 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
+una estructura iterativa: <code>&lt;&nbsp;&gt;</code>. 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&#8239;<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 TECO.</p>
@@ -103,14 +117,14 @@ 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.</p>
-<p>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
+<p>Fue Bernie Greenberg quien descubrió que lo era &#8239;<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.</p>
@@ -245,11 +259,11 @@ una empresa.</p>
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.</p>
+Inteligencia Artificial &#8239;<a class="ftn"
+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.</p>
<p>¿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
@@ -298,11 +312,11 @@ 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.</p>
-<p> 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 MIT. 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».</p>
+<p> A Symbolics se le ocurrió un plan&#8239;<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 MIT. 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».</p>
<p>Esto, en la práctica, significaba que nos exigían posicionarnos en un bando
y utilizar, o bien la versión del MIT del sistema, o bien la versión de
@@ -317,23 +331,23 @@ que siguiera existiendo. Así, no se nos permitió seguir siendo neutrales.</p>
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).</p>
+flote&#8239;<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).</p>
-<p>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.</p>
+<p>Después de un tiempo&#8239;<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.</p>
<p>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
+inmersos en una competición que no tendría fin &#8239;<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.</p>
@@ -375,24 +389,25 @@ 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.</p>
-<p>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
-<code>catch</code> y un <code>throw</code>, 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
+<p>Por ejemplo, en aquel entonces la única estructura iterativa era
+<code>while</code>, implementada de forma extremadamente simple. No había
+ningún mecanismo para interrumpir la ejecución de la sentencia
+<code>while</code> y transferir el control a la instrucción siguiente a
+dicha sentencia, usted tenía que hacer un <cite>catch</cite> y un
+<cite>throw</cite>, 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 <code>caar</code>, <code>cadr</code>, etc. Había que
sacarle el mayor jugo posible, ese fue el espíritu de Emacs de GNU, el
espíritu de Emacs Lisp desde el principio.</p>
<p>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.</p>
+las cosas así. Ahora incluimos <code>caar</code>, <code>cadr</code>, 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&#8239;<a href="#foot-8">[8]</a>. No me parecen muy de Lisp; los
+utilizo a veces pero intento hacerlo lo menos posible.</p>
<p>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
@@ -477,18 +492,20 @@ 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"
+href="/help/help.html">gnu.org/help</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 www.gnu.org&#8239;<a
+href="#foot-9">[9]</a><sup><a href="#TransNote2"
id="IniTransNote2">2</a></sup>. ¡Feliz hacking!</p>
+<div class="column-limit"></div>
+<h3 class="footnote">Notas</h3>
<ol>
<li id="foot-1">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
@@ -535,7 +552,12 @@ planes, le había costado un millón de dólares.</li>
<li id="foot-8">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».</li>
+
+<li id="foot-9">En 2021, este libro (en inglés) puede adquirirse en <a
+href="https://shop.fsf.org/books-docs/free-software-free-society-selected-essays-richard-m-stallman-3rd-edition">GNU
+Press</a>.</li>
</ol>
+</div>
<div class="translators-notes">
@@ -554,7 +576,7 @@ texto</a>.</li></ol></div>
<!-- for id="content", starts in the include above -->
<!--#include virtual="/server/footer.es.html" -->
-<div id="footer">
+<div id="footer" role="contentinfo">
<div class="unprintable">
<p>Envíe sus consultas acerca de la FSF y GNU a <a
@@ -575,7 +597,7 @@ href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>
&lt;web-translators@gnu.org&gt;</a>.</p>
- <p>For information on coordinating and submitting translations of
+ <p>For information on coordinating and contributing translations of
our web pages, see <a
href="/server/standards/README.translations.html">Translations
README</a>. -->
@@ -605,7 +627,7 @@ el envío de traducciones de las páginas de este sitio web.</p>
There is more detail about copyright years in the GNU Maintainers
Information document, www.gnu.org/prep/maintain. -->
-<p>Copyright &copy; 2003, 2007, 2013, 2014, 2020 Free Software Foundation, Inc.</p>
+<p>Copyright &copy; 2003, 2007, 2013, 2021 Free Software Foundation, Inc.</p>
<p>Esta página está bajo licencia <a rel="license"
href="http://creativecommons.org/licenses/by-nd/4.0/deed.es_ES">Creative
@@ -620,11 +642,12 @@ Commons Reconocimiento-SinObraDerivada 4.0 Internacional</a>.</p>
<p class="unprintable"><!-- timestamp start -->
Última actualización:
-$Date: 2020/09/23 10:32:19 $
+$Date: 2021/11/03 16:00:57 $
<!-- timestamp end -->
</p>
</div>
</div>
+<!-- for class="inner", starts in the banner include -->
</body>
</html>