Monday, July 20, 2015

CLI sobre GUI: fondo sobre forma.

En este artículo, y este otro, les he hablado de cómo correr aplicaciones desde la CLI*, o Terminal. Antes de proseguir, quiero que todos tengamos clara la relación entre Forma y Fondo: 

Forma: continente, el envoltorio, el cómo.
Fondo: el contenido, la idea, el qué.

Una de las cosas más importantes para todo usuario de Linux, es aprender a usar su Terminal y unos cuantos comandos básicos como los que Jimmy nos compartía. A medida avanzamos en el uso de Linux, vemos que la CLI nos puede simplificar las cosas, o también complicarlas si no sabemos qué carajo estamos haciendo. Por ejemplo, ¿sabías que es posible abrir una página de búsqueda en tu navegador desde Terminal? Suponiendo que tenés Firefox o Chromium en tu distro, tratá:

$ firefox linuxdesobrevivencia.blogspot.com
$ chromium-browser elementary.io

Esto te ahorra el tiempo de ir al menú, buscar la applicación, darle click, esperar a que la GUI** cargue, mover el mouse a la barra de direcciones (o F6, si sos no sos tan lento) , ingresar la dirección, darle click al botoncito de la derecha (o apretar Enter, si no sos tan lento), esperar a que la página cargue, y disfrutar del fappin' después de seleccionar un video en exquisita alta definición. Dos simples bloques de texto sintetizan 40 años en el desierto de la GUI.

Como mencionaba en el  artículo de Deluge Console, podés abrir Terminal, arrancar deluge-console, agregar un archivo torrent, y dejarlo leeching/seeding mientras ves tu porno favorito desde tu navegador. 

Seguramente alguien puede pensar: "pero chele, ¿por qué y para qué querés correr una aplicación a puras letras y comandos? Si la rueda de caucho ya está inventada, ¿por qué querés seguir usando una rueda de piedra? La CLI es una cosa vieja, de los tiempos de MS-DOS" Mi respuesta es simplemente, por conveniencia. 

Claro, lo que es conveniente para mí, no puede serlo para vos. Eso lo tengo claro y no pienso convencer a nadie de que mi forma de operar y adminstrar mi equipo es la forma en la que deberías de gestionar el suyo. Ahora, si sos de la gente que le dedica tiempo a encontrar una mejor forma de hacer las cosas, te comparto lo que he aprendido sobr usar Linux: Aquí es donde radica la belleza de Linux. 

La Terminal te simplifica muchas cosas:

• Al correr tus aplicaciones vía CLI-Terminal, estás ahorrando el uso de recursos para tareas de mayor prioridad. Esto es importante cuando tu equipo cuenta con recursos limitados y necesitás gestionar diversas tareas a la vez. El consumo de RAM que implica mantener de una interfaz gráfica es reducido cuando la tarea se ejecuta desde terminal. De la misma forma, el uso de CPU, espacio en disco, aparte que tu atención  no se dispersa en los botoncitos, barritas, backgrounds, soniditos y animaciones. 

Raspberry Pi, modelo B: 256MB de RAM y 700Mhz de CPU. No es el tipo más rápido ni más fuerte, pero es lo suficientemente pequeño y ecológico como para hacer un servidor de descargas o headless server que ha corrido durante la noche cuando mi equipo principal está apagado.

• La CLI es importante para administradores de servidores: usualmente un servidor no tiene interfaz gráfica: como administrador querés usar tus recursos de forma eficiente y ejecutar tareas sin afectar negativamente la disponibilidad de recursos para la ejecución de otras tareas. Los administradores no suelen tener una consola tipo Alienware Command Center como este: 

Ejmplo de cómo la forma tiene alta importancia: Alienware Command Center para cambiar las luces de una Area 51. No poseo los derechos de esta imagen ni de la marca. Sólo la muestro con propósitos educativos. La forma es importante particularmente en objetos y bienes de lujo; la forma da status, alimenta el ego, nos hace sentir mejor y sana el horror vacui

Si no algo más o menos así: 

Fondo como prioridad: administración de un servidor remoto con el comando "htop", una versión versátil y turbocargada de "top". Aquí, htop muestra un CPU con 64 núcleos y 64GB de RAM. Toda distro de Linux tiene top por defecto. Si abrís tu terminal y escribís "top" vas a ver esto de forma menos gráfica y probablemente con menos procesadores. Pero por supuesto,  podés instalar con "$ sudo apt-get install htop", y disfrutá :)

• Incluso para proyectos caseros, como un servidor local, de firewall, de base de datos, etc., la Terminal te va a ahorrar tiempo y la molestia de tener que instalar software de terceros para monitorear algo tan simple como el tiempo de finalización de una descarga o carga, navegar entre directorios y copiar un archivo desde un equipo a otro, etc. ¿Para qué gastarías en licencias, ancho de banda, o recursos de tu servidor y tu workstation en renderizar la GUI cuando podés administrar y operar desde la CLI? Sí, es cierto que existen herramientas de assistencia remotas gratuitas para uso doméstico... como TeamViewer que te permite operar y acceder a tu workstation desde tu smartphone pero, ¿qué tal si tu batería tiene poca carga y sólo buscás iniciar o finalizar un programa?

¿Para qué necesitás botones, colores y defectos espaciales***? Si tu equipo tiene un cantidad relativamente escasa de RAM o de poder de procesamiento, no querés desperdiciar músculo en cosa que van a volver más lenta la ejecución de una tarea. Fondo ante todo.

No quiero armar debate; como diseñador gráfico aficionado, valoro la importancia del diseño y la estética visual; lo que digo es que no debemos de confundir la falta de íconos con fealdad: que una aplicación carezca de elementos visuales no significa que no sea usable; que no haya una forma elaborada, no implica que algo sea menos estético. De hecho, la Terminal tiene su atractivo: la belleza de lo simple -y en todo caso, si insistís en la importancia de lo estético-pero-funcional como tu servidor, podés aplicarle transparencia con ~/.devilspie como lo hice alguna vez en Fedora 20... o en el caso de Freya, la Terminal es transparente de fábrica y te funciona trabajar en ella mientras leés este blog :v

¿La CLI es mejor, más rápida y eficiente que la GUI? Depende quién lo pregunte. La GUI es una representación visual de la CLI. Un botón de "cerrar ventana", representa un comando de salir/suspender una aplicación. La GUI es la síntesis visual de la CLI; la CLI es la síntesis en código de la GUI. Para un usuario de casa, la GUI es el camino a escoger; de la misma frma para un creador de contenido multimedia, el asunto de una interfaz gráfica no viene al caso porque sí es necesaria para sus propósitos, como puede serlo para un agente de ventas, o un profesional de contabilidad.  

Lo que digo es que, para un usuario de Linux que quiere expandir su conocimiento y habilidades, la CLI es el Santo Grial.

Usar la CLI no es andar en llantas de piedra; al contrario: la CLI es más rápida siempre y cuando aprendás a escribir rápido, a usar tu teclado como se debe, a desprenderte de tu mouse y sobretodo a desarollar la capacidad de visualizar y conceptualizar sin asistencia visual...  pero esto es algo que usuarios dependientes de la GUI difícilmente van a entender.

Saludos.


*Command Line Interface: El "command prompt", terminal de comandos, terminal, etc. 
** Graphic User Interface: Interfaz gráfica: íconos, botones, cuadros, figuras geométricas, representaciones simbólicas de los comandos. Lo que volvió popular a Windows en un inicio; una de las mayores razones del éxito de iOS, de Android.
*** Efectos especiales.

No comments:

Entradas populares.