Sección: unix

¿MS-DOS? No, gracias

El otro día pasó un compañero al lado y me preguntó ¿estás con MS-DOS?
Realmente, no. Suelo trabajar con Linux y lo que tenía abierta era una ventana del intérprete de órdenes, línea de comandos, interfaz de texto, consola, o terminal (no acabo de saber cuál es el término más correcto).
No es la primera vez que preguntan algo parecido o que me hacen un comentario como “huy, qué anticuado, si parece el MS-DOS”.

El MS-DOS era un sistema operativo bastante rudimentario que tomó algunas ideas (pocas) del sistema operativo UNIX, que ya por entonces (años 80) era un sistema totalmente maduro. No es adecuado decir que Linux (o cualquier otro sistema operativo de la familia UNIX) se parece a MS-DOS. Más bien es al contrario.

La “anticuada” interfaz de texto permite realizar algunas tareas de una forma mucho más eficiente que con una interfaz de “ventanas”, y en muchas ocasiones, es insustituible, como cualquier usuario habitual de sistemas UNIX ya sabe. Si usted no conoce esta familia de sistemas operativos, siga leyendo.

Una de las filosofías de diseño de UNIX es disponer de muchas herramientas especializadas en una única tarea y que puedan intercambiar información entre ellas. Muchas de estas herramientas o programas no son parte del sistema operativo en sí, pero todos los sistemas UNIX las incorporan. La propia interfaz de texto o intérprete de instrucciones es programable y esto permite crear secuencias de instrucciones que se ejecuten sin necesidad de un usuario – como los archivos de instrucciones por lotes del MS-DOS, pero mejor ;-)

En resumen, para automatizar muchas tareas tediosas, este tipo de interfaz es perfecta. Voy a poner algunos ejemplos:

  • Imagine que un directorio (carpeta) tiene un montón de imágenes en formato JPG y quiere convertirlas en GIF. Hay programas “de ventanas” que pueden hacer conversiones masivas, pero en UNIX existe un programa llamado ImageMagick que es perfecto para esta tarea:
    for foto in `ls *jpg`; do convert "$foto" "$foto".gif; done

    Esta instrucción (mejorable, pero rápida) convierte todas las imágenes de un plumazo.

  • Supongamos que tenemos dos archivos de texto (telefonos.txt y direcciones.txt) con información relacionada que queremos combinar:
    telefonos.txt:

    juana@novale.com 999 888 777
    juan@mentira.com 666 555 444
    perico@falso.com 333 222 111

    direcciones.txt:

    juana@novale.com Juana Mengánez Zutánez C/Sin Nombre, 42
    juan@mentira.com Juan Fulánez Desconocido C/Inexistente, 314
    perico@falso.com Pedro Pedrea Pedrón C/Inventada, 2

    Con la instrucción siguiente los “juntamos” y ordenamos alfabéticamente:

    join telefonos.txt direcciones.txt | sort

    Con la instrucción siguente

    cut -d @ -f 1 direcciones.txt

    Extraeríamos la parte que va delante de la arroba de cada dirección (juana, juan y perico).

  • ¿Dónde estaba la canción de “Paquito el Chocolatero”?
    find . -name "*Chocolatero*"

No voy a poner más ejemplos, esto no es un cursillo de UNIX, pero quiero resaltar una característica muy importante: las instrucciones se pueden combinar unas con otras, con lo que muchas tareas mecánicas y repetitivas se pueden programar y dejar que las haga el ordenador.

Por eso, pese a la aparente vetustez de esta interfaz, muchas personas la seguimos utilizando asiduamente. Nos ahorra mucho tiempo, aunque no lo parezca.

Y no, no se parece al MS-DOS. Para nada ;-)

Comentarios (25)

Viejitos muy actuales

Parece que en esto de la informática se evoluciona muy rápido, que todo es lo último de lo último, … pero no.

En esta entrada quiero recordar algunas tecnologías con varias décadas a sus espaldas que se siguen utilizando hoy en día.

  • El lenguaje de programación C:
    En 1972 Ken Thompson y Dennis M. Ritchie diseñaron un lenguaje de programación para utilizarlo en el sistema operativo UNIX. 35 años más tarde, sigue siendo uno de los lenguajes más utilizados en la programación de sistemas operativos, programas en los que el rendimiento es crítico y muchas más aplicaciones.
  • El sistema operativo UNIX:
    Íntimamente ligado al lenguaje C, su desarrollo comenzó en 1969, basado en otro sistema llamado MULTICS. A lo largo de los años se han desarrollado múltiples variantes y clones. Algunos sistemas UNIX actuales: Mac OSX, Linux, la familia de sistemas BSD, Solaris, … y bastantes más.
  • El lenguaje COBOL:
    Son las siglas de “Lenguaje Común Orientado a Negocios” (en inglés). Como su nombre indica, se utiliza principalmente en sistemas financieros: bancos, aseguradoras, etc. Se diseñó en 1960 y se estima que es uno de los lenguajes más utilizados (en líneas de código escritas).
  • El protocolo TCP/IP:
    Desarrollado en los años 70, este protocolo (conjunto de reglas y especificaciones que utilizan los dispositivos para comunicarse a través de una red) ha demostrado ser fiable y proporciona la base de Internet tal y como la conocemos hoy en día. Otras arquitecturas o protocolos de red han “sucumbido” y no se usan tan ampliamente como TCP/IP.
  • Bases de datos relacionales:
    La teoría fue desarrollada por Codd en 1970 y a lo largo de esa década surgieron distintas bases de datos relacionales. Durante la década de los 80 las bases de datos relacionales (y su lenguaje propio, SQL) se impusieron a otros sistemas de bases de datos, de tal forma que algunas personas jóvenes no hemos conocido otro sistema que no sea el relacional.

Hay muchísimos más ejemplos de tecnologías y sistemas bastante veteranos que siguen utilizándose ampliamente. Existe en todos ellos un denominador común: son tecnologías muy probadas y estables. En muchos entornos, ésta es una cualidad muy valorada.

Animo a los lectores que nos dejen más ejemplos de “viejitos” actuales en los comentarios.

Comentarios (5)