Memento Mori
Una vez que el ordenador Linux ha terminado de escupir su telegrama de inicio en jerga, me insta a que introduzca un nombre de usuario y una contraseña. En este momento la máquina todavía está ejecutando la interfaz de línea de comandos, con letras blancas sobre fondo negro. No hay ventanas, menús, ni botones. No responde al ratón; ni siquiera sabe que el ratón está ahí. En este punto, sin embargo, ya es posible ejecutar un montón de software. Emacs, por ejemplo, existe tanto en versión de interfaz de línea de comandos como de GUI (de hecho, hay dos versiones GUI, que reflejan algún cisma doctrinal entre Richard Stallman y algunos hackers que se hartaron de él). Lo mismo puede decirse de muchos otros programas Unix. Muchos no tienen siquiera un GUI, y muchos de los que o tienen pueden ejecutarse desde la línea de comandos.
Por supuesto, dado que mi ordenador sólo tiene una pantalla, sólo puedo ver una línea de comandos, así que puede que crean que sólo puedo interactuar con un programa cada vez. Pero si mantengo apretada la tecla Alt
y luego puelso el botón de función F2
en lo alto de mi teclado, aparece otra pantalla negra vacía que me pide que dé mi nombre de usuario y contraseña. Puedo entrar e iniciar otro programa, luego pulsar Alt-F1
y regresar a la primera pantalla, que sigue haciendo loquequiera que estuviera haciendo cuando la dejé. O puedo pulsar Alt-F3
y entrar en otra pantalla, y una cuarta, y una quinta. En una de estas pantallas puedo entrar como yo mismo, en otra como root (el administrador del sistema), y en otra puedo entrar en un ordenador distinto a través de Internet.
Cada una de estas pantallas se llama, en jerga Unix, un tty
, que es la abreviatura de teletipo. Así que cuando uso mi sistema Unix de este modo regreso a esa pequeña habitación en el Instituto de Ames donde escribí mi primer código hace veinticinco años, excepto que el tty
es más silenciosos y rápido que un teletipo, y es capaz de ejecutar un software incomparablemente superior, tal como emacs o las herramientas de desarrollo de GNU.
Resulta fácil (fácil por el estándar de Unix, no el de Apple/Microsoft) configurar un ordenadro Unix de tal modo que vaya directamente a un GUI cuando lo inicies. De este modo, nunca se ve una pantalla tty
. Yo todavía hago que el mío inicie en este pantalla de teletipo, blanco sobre negro, como un memento mori computacional. Solía estar de moda que los escritores tuvieran un cráneo humano sobre su escritorio como recordatorio de su mortalidad, de que todo era vanidad. La pantalla tty
me recuerda que lo mismo sucede con las elegantes interfaces de usuario.
El X Windows System, que es el GUI de Unix, ha de ser capaz de ejecutarse en cientos de tarjetas de vídeo diferentes con diferentes chips, memoria, y buses de placa madre. Igualmente, hay cientos de tipos distintos de monitores en el mercado nuevo y usado, cada uno con diferentes especificaciones, así que probablemente haya más de un millón de combinaciones posibles de tarjeta y monitor. Lo único que todas tienen en común es que funcionan en modo VGA, que es la vieja pantalla de línea de comandos que se ve durante unos pocos segundos al iniciar Windows. Así que Linux siempre inicia en VGA, con una interfaz de teletipo, porque al principio no tiene ni idea de qué tipo de hardware está conectado al ordenador. Para ir más! allá del teletipo hasta el GUI, hay que decirle a Linux exactamente qué tipo hardware hay. Si te equivocas, obtendrás una pantalla en blanco en el mejor de los casos, y en el peor, podrías destruir de hecho el monitor enviándole señales que no puede manejar.
Cuando empecé a usar Linux, esto había que hacerlo a mano. Una vez me pasé casi un mes tratando de hacer que monitor rebelde funcionara, y llené la mayor parte de un cuaderno con notas garabateadas cada vez más desesperadas. Hoy en día, la mayor parte de las distribuciones Linux incluyen un programa que automáticamente examina y configura el sistema, así que instalar X Windows es casi tan fácil como instalar un GUI de Apple/Microsoft. La información crucial va a un archivo (un archivo de texto ASCII, naturalmente) llamado XF86Config
, al que merece la pena echar un vistazo incluso aunque la distribución lo cree automáticamente. Para la mayor parte de la gente parece una serie de ensalmos crípticos sin sentido - y ésa era la idea de mirarlo. Un sistema Apple/Microsoft tiene que tener la misma in!
formación para lanzar su GUI, pero posiblemente está escondida en las profundidades, o probablemente esté en un archivo que ni siquiera puede abrir y leer un editor de textos. Todos los archivos importante que hacen que los sistemas Linux funcionen están a la vista. Siempre son archivos de texto ASCII, así que no hace falta herramientas especiales para leerlos. Se pueden mirar siempre que se quiera, lo cual es bueno, y se puede enredar con ellos y volver el sistema completamente disfuncional, lo cual ya no es tan bueno.
En cualquier caso, asumiendo que mi archivo XF86Config
file esté tal cual, introduzco el comando startx
para iniciar X Windows System. La pantalla queda en blanco durante un minuto, el monitor emite extraños ruidos chirriantes, luego se reconstituye como un escritorio gris en blanco con un cursos de ratón en el medio. Al mismo tiempo inicia el gestor de ventanas. X Windows es software de bastante bajo nivel; proporciona la infrastructura para un GUI, y es una infrastrucutra pesada e industrial. Pero no trabaja con ventanas. Eso lo maneja otra categoría de la aplicación colocada encima de X Windows, llamada gestor de ventanas. Hay varios disponibles, todos gratuitos, por supuesto. El clásico es (Tom's Window Manager, el Gestor de Ventanas de Tom) pero hay una variante más pequeña y supuestamente más eficiente llamada fvwm
, que es la que yo uso. Le teng!
o el ojo echado a un gestor de ventanas completamente diferente llamado Enlightenment
, que puede ser el producto tecnológico más elegante que haya visto nunca, puesto que (a) es para Linux, (b) es gratuito, (c) está siendo desarrollado por un número muy pequeño de hackers obsesos, y (d) tiene un aspecto asombrosamente estiloso; es el tipo de gestor de ventanas que podría aparecer en el trasfondo de una película de Alien.
En cualquier caso, el gestor de ventanas funciona como un intermediario entre X Windows y el software que se esté usando. Dibuja los bordes de las ventanas, los menús, y demás, mientras las aplicaciones dibujan el contenido de las ventanas. Las aplicaciones pueden ser de cualquier tipo: editores de texto, navegadores web, paquetes gráficos, o utilidades como un reloj o una calculadora. En otras palabras, a partir de este punto, da la sensación de haber pasado a un universo paralelo bastante parecido al familiar universo de Apple o Microsoft, pero ligera y ubicuiamente diferente. El principal programa gráfico en Apple/Microsoft es Adobe Photoshop, pero en Linux es algo llamado El GIMP. En vez de Microsoft Office, se puede comprar algo llamado ApplixWare. Hay muchos paquetes de software comercial, tales como Mathematica, Netscape Communicator, y Adobe Acrobat, disponibles en versión Linux, y según cómo se configure el gestor de ventanas se puede hacer que tengan el mismo aspec! to y se comporten igual que lo harían en MacOS o Windows.
Pero hay un tipo de ventana que verán en Linux GUI que es raro o inexistente en otros sistemas operativos. Estas ventanas se llaman xterm
y no contienen nada más que líneas de texto - esta vez, texto nego sobre fondo blanco, aunque se pueden cambiar los colores. Cada ventana xterm
es una interfaz de línea de comandos en sí misma - un tty
en una ventana. Así que incluso cuando se está en pleno modo GUI, se puede seguir hablando con el ordenador Linux a través de una interfaz de línea de comandos.
Hay mucho buen software de Unix que no tiene GUIs en absoluto. Esto puede deberse al hecho de que se desarrolló antes de que X Windows estuviera disponible, o porque las personas que lo escribieron no querían sufrir todo el agobio de crear un GUI, o sencillamente porque no lo necesitaban. En cualquier caso, esos programas pueden invocarse introduciendo sus nombres en la línea de comandos de una ventana xterm. El comando whoami
, mencionado antes, es un buen ejemplo. Hay otro llamado wc
(word count, recuento de palabras) que sencillamente devuelve el número de líneas, palabras y caracteres en un archivo de texto.
La capacidad de ejecutar este programitas de utilidades en la línea de comandos es una gran virtud de Unix, y una que es improbable que dupliquen los sistemas operativos de GUI puro. El comando wc
, por ejemplo, es el tipo de cosa que resulta fácil de escribir con una interfaz de línea de comandos. Probablemente no consiste más que de una pocas líneas de código, y un programador listo probablemente podría escribirlo en una sola línea. En forma compilada sólo ocupa unos pocos bytes de espacio de disco. Pero el código requerido para darle una interfaz gráfica de usuario a ese programa probablemente tendría cientos o incluso miles de líneas, dependiendo del capricho del programador. Compilado en un software ejecutable, tendría un montón de código GUI. Sería lento de iniciar y ocuparía un montón !
de memoria. Este esfuerzo sencillamente no valdría la pena, así que wc
nunca se escribiría como un programa independiente. Los usuarios tendrían que esperar a que el recuento de palabras viniera incluido en un paquete de software comercial.
Los GUIs tienden a imponer un montón de código superfluo al software, incluso al más pequeño, y este plus cambia completamente el entorno de programación. Las pequeñas utilidades ya no merecen la pena escribirse. Esta funciones tienden a ser aglutinadas en paquetes más amplios de software. A medida que los GUIs se vuelven más complejos, e imponen más y más código superfluo, esta tendencia se vuelve omnipresente, y los paquetes de software se hacen cada vez más colosales; a partir de cierto punto empiezan a fusionarse, como Microsoft Word y Excel y PowerPoint se fundieron en Microsoft Office: un enorme Corte Inglés de software al borde de una ciudad llenas de tiendecitas en quiebra.
Es una analogía injusta, porque cuando una tiendecita quiebra significa que un tendero ha cerrado el negocio. Por supuesto, nada de eso ocurre cuando wc
queda subsumido en uno de los incontables elementos del menú de Microsoft Word. El único inconveniente real es la pérdida de flexibilidad para el usuario, pero es una pérdida que la mayoría de clientes obviamente no nota o no les importa. EL inconveniente más serio del enfoque Corte Inglés es que la mayoría de usuarios sólo quieren o necesitan una pequeña parte de lo que contienen estos gigantescos paquetes de software. El resto es basura, peso muerto. Y sin embargo, el usuario en el cubículo de al lado tendrá opiniones completamente distintas acerca de qué es útil y qué no lo es.
La otra cosa importante que hay que mencionar aquí es que Microsoft ha incluido una característica verdaderamente elegante en el paquete Office: un paquete de programación en Basic. Basic es el primer lenguaje de ordenador que aprendí, allá cuando usaba la cinta de papel y el teletipo. Usando la versión de Basic que viene incluida en Office uno puede escribir sus propias utilidades que saben cómo interactuar con todos los enredos, mariconaditas, lacitos y pompones de Office. Basic es más fácil de usar que los lenguajes usados habitualmente en la programación Unix de línea de comandos, y Office ha llegado a muchas, muchas más personas que las herramientas GNU. Así que es bastante posible que esta característica de Office acabe por engendrar mucho más hacking que GNU.
Pero ahora estoy hablando del software de aplicaciones, no de sistemas operativos. Y como he dicho, el software de aplicaciones de Microsoft tiende a ser muy bueno. Yo no lo uso mucho, porque no entro dentro de su mercado diana. Si Microsoft saca alguna vez un paquete de software que yo use y me guste, entonces será el momento de que se deshagan del stock, porque yo soy un segmento de mercado de una persona.
Siguiente
capítulo
Neal Stephenson: En el principio fue la
línea de comandos