El Editor de Pantalla Completa EMACS

Esta página es una traducción al español hecha por David Arroyo Menéndez de Emacs Full Screen Editor.

Volver a davidam.com

Hoy en día los editores de pantalla completa (programas "procesadores de texto") son comunes y se encuentran en todo ordenador doméstico. En 1973, los terminales de pantalla eran más caros que las impresoras, de modo que la mayoría de la gente todavía usaba terminales de impresora, y quienes usaban terminales de pantalla normalmente los usaban como si fueran terminales de impresora. El laboratorio de IA tenía pantallas pero todavía no editores de pantalla.

EMACS es inusual entre los editores de pantalla porque es poderoso y extensible. EMACS contiene sus propias facilidades de programación que yo usaba para proporcionar comandos que otros editores no tienen, y que los usuarios usan para proporcionar cualquier comando que ellos quieren y que yo no les dí. Los usuarios pueden crear librerías de comandos y compartirlas y cuando ellos hacen un buen trabajo las librerías llegan a ser parte del sistema EMACS estándar simplemente siendo incluidas en el manual.

Muchos otros editores han tenido facilidades de "macro". EMACS tiene un lenguaje de programación para escribir comandos de editor, completamente separado del usual lenguaje de edición. Porque no tiene que ser un lenguaje de edición, puede ser un mejor lenguaje de programación, bueno para escribir programas complicados. El segundo ingrediente es no hacer distinción entre el implementador y el usuario. Casi todos los comandos "built in" de EMACS se escriben simplemente como extensiones de usuario. Cada usuario puede reemplazarlos o cambiarlos por sí mismo.

El desarrollo de EMACS siguió un camino que ilustra la naturaleza del laboratorio. Cuando yo llegué al laboratorio, el editor era TECO, un editor para terminales de impresión con algunas facilidades de programación más que otros editores. El usuario escribiría una cadena de comando de muchos comandos, y entonces TECO lo ejecutaría. En un terminal de pantalla, TECO conocía cómo redibujar el texto del fichero después de cada cadena de comando. El camino natural para proporcionar edición de pantalla era añadirla a TECO y adaptar el mecanismo existente de redibujar.

Originariamente, el editor de pantalla era sólo uno de los comandos de TECO. Su poder era muy limitado y si necesitabas hacer cualquier cosa elegante, como salvar el texto en un fichero o buscar una cadena de texto, tenías que salir del editor de pantalla y usar el TECO regular por un momento. Entonces un usuario sugirió que proporcionara un par de comandos de edición de pantalla que el usuario pudiera enganchar a una cadena de comando TECO o macro para salvar. Implementando esto, descubrí que era fácil hacer todos los caracteres redefinibles mejor que unos pocos y específicos.

Esto provocó una explosión. Cada cual estaba escribiendo su propia colección de comandos de editor de pantalla redefinidos, un comando para cada cosa que le gustaba hacer. La gente los pasaría y mejoraría, haciéndolos más poderosos y más generales. Las colecciones de redefiniciones llegaron a ser gradualmente programas de sistema por derecho propio. Su alcance se incrementó, de modo que hubo cada vez menos y menos razones para usar TECO para la edición. Se convirtió sencillamente en un lenguaje de programación para escribir editores. Empezamos a categorizarlo mentalmente como un lenguaje de programación más que como un editor con la posibilidad de programación como una funcionalidad extra, y esto significaba que se comparaba con otros lenguajes de programación en vez de con otros editores. El resultado fué una demanda de muchas funcionalidades que otros lenguajes de programación tenían. Yo mejoré TECO de este modo mientras que otros hackers usaban las nuevas funcionalidades para mejorar sus editores escritos en TECO.

Aproximadamente dos años después de esta salvaje evolución, Guy Steele decidió que era el momento de escribir un editor que combinara las mejores ideas de todo el resto. Ambos empezamos juntos, pero él derivó hacia otros intereses. Llamé al editor EMACS, por "editando macros". Además, quería que el nuevo editor tuviera una abreviatura de una sola letra y la letra "E" era una de las que no estaban en uso.

De este modo, el lenguaje de comandos estándar EMACS era el resultado de años de experimentación por muchos usuarios mantenedores de sus propios editores, lo cual fué posible solo por la extensibilidad y la actitud del laboratoria de IA de animar a los usuarios a aportar al sistema. El día profético que yo dí a los usuarios el poder de redefinir sus propios editores, no sabía que conduciría a un editor nuevo y con la fuerza de un terremoto. Estaba siguiendo la heurística del laboratorio de IA de que siempre es bueno dar a los usuarios más poder. La actitud del laboratorio de IA entonces animaba a los usuarios a usar el poder y a compartir lo que producían de este modo.

Trabajé en EMACS alrededor de cinco años, distribuyéndolo a cualquiera gratis con la condición de que quienes los usaran me devolvieran las extensiones que hacían, así se ayudaba a mejorar EMACS. Denominé a este acuerdo la "comuna de EMACS". Como yo compartía, el impuesto era compartir; trabajar con otros mejor que contra otros. EMACS ahora se utiliza en todos los departamentos de ciencias de computación de las mejores universidades y en muchos otros lugares. También ha sido imitado unas diez veces. Lamento decir que muchas de estas imitaciones carecen de la esencia real de EMACS, que es su extensibilidad; son "ersatz EMACS" que imitan solo la apariencia superficial.

Hoy en día los usuarios de EMACS apenas editan con TECO, y la mayoría ni siquiera conocen TECO. De hecho, yo he olvidado cómo editar con TECO. Me había acostumbrado tanto a pensar en términos de programación con TECO que en las raras ocasiones en las que necesité editar con él me pierdo por un momento. Los reflejos se habían ido.

He advertido que una mejora de editor es valorable cuando, después de estar usándola por un par de semanas, olvido como hacerlo sin ella. Esto prueba que debe haber requerido un gran esfuerzo mantener la práctica de hacer cosas de la manera antigua.

No creo que algo como EMACS podría haber sido desarrollado comercialmente. Los negocios tienen malas actitudes. El axioma primario del mundo comercial hacia los usuarios es que son incompetentes, y que, si tienen cualquier control sobre su sistema, lo estropearán. El objetivo principal es no darles nada específico sobre lo que quejarse, no darles a ellos un medio para ayudarse a sí mismos. Esto es lo mismo que por qué la FDA mataría un millar de personas dejando las drogas fuera del mercado, antes que a una persona entregando una droga por error. El objetivo secundario es dar a los gestores poder sobre los usuarios, porque los gestores son quienes deciden qué sistema comprar, no los usuarios. Si un editor corporativo no tiene medio de extensibilidad, probablemente permitirán a tu gestor decidir cosas por tí y no darte ningún control. Por ambas razones, una compañía nunca habría diseñado un editor con el que los usuarios pudieran experimentar como hicieron los usuarios del MIT, y no habrían sido capaces de construir sobre los resultados de los experimentos para producir un EMACS. Además, a la compañía no le gustaría darte el código fuente, y sin esto es bastante duro escribir extensiones.

Autor: Richard M. Stallman

Created: 2013-08-18 dom 22:46

Emacs 24.2.1 (Org mode 8.0.7)

Validate