{"id":58,"date":"2017-10-30T19:32:32","date_gmt":"2017-10-31T00:32:32","guid":{"rendered":"http:\/\/blogs.gentoo.org\/chrisadr\/?p=58"},"modified":"2019-11-01T03:35:28","modified_gmt":"2019-11-01T08:35:28","slug":"por-que-preferimos-la-linea-de-comandos-a-los-guis","status":"publish","type":"post","link":"https:\/\/blogs.gentoo.org\/chrisadr\/2017\/10\/30\/por-que-preferimos-la-linea-de-comandos-a-los-guis\/","title":{"rendered":"\u00bfPor qu\u00e9 preferimos la l\u00ednea de comandos a los GUIs?"},"content":{"rendered":"<p>Revisando otros art\u00edculos me top\u00e9 con esta peque\u00f1a pregunta que me caus\u00f3 mucha gracia, es verdad que una de las primeras cosas que nos sacan en cara usuarios de otros sistemas (excepto FreeBSD) es que no usamos los GUIs. A decir verdad, a mi tambi\u00e9n me pareci\u00f3 bastante curioso al principio de mi viaje por GNU\/Linux. Debo admitir que con el pasar del tiempo, ahora utilizo mucho m\u00e1s la l\u00ednea de comandos que cualquier otro programa con GUI, y muchas veces prefiero programas dentro de la l\u00ednea de comando a programas m\u00e1s elaborados con GUIs deslumbrantes.<\/p>\n<h3>El mito<\/h3>\n<p>En realidad esto no es m\u00e1s que un mito urbano, pues a diferencia de otros sistemas cuyos nombres no ser\u00e1n mencionados aqu\u00ed, es en GNU\/Linux donde realmente tienes\u00a0<strong>libertad<\/strong> de elecci\u00f3n. Ya quisiera que en otros sistemas existiera la versatilidad que existe aqu\u00ed. Pero veamos en m\u00e1s profundidad este asunto, que sino no quedan claras muchas cosas:<\/p>\n<h3>Servidores<\/h3>\n<p>Todos hemos o\u00eddo de la palabra <em>Servidor,<\/em> algunos creen que son esas super computadoras que alimentan Google o Amazon, o la que est\u00e1 en tu empresa. Pero la realidad es que un\u00a0<em>Servidor<\/em> responde a un\u00a0<em>modelo de trabajo.<\/em> Usamos este t\u00e9rmino para hacer referencia a que tenemos un programa que est\u00e1 a disposici\u00f3n de los usuarios (<em>clientes<\/em>) y les entrega algo. Un ejemplo b\u00e1sico es <em>Apache<\/em>, el cual se usa para\u00a0<em>servir<\/em> p\u00e1ginas web en internet. Este programa entrega html a los\u00a0<em>clientes<\/em> que lo soliciten.<\/p>\n<h3>Servidor de im\u00e1genes<\/h3>\n<p>Pero no solamente un servidor puede estar en las super computadoras que hacen posible Google y otras muchas empresas, incluso la laptop m\u00e1s &#8220;antigua&#8221; puede ser un <em>servidor<\/em>, de manera especial cuando hablamos de im\u00e1genes. Todos corremos un\u00a0<em>servidor<\/em> de im\u00e1genes en nuestras laptops para poder tener una pantalla funcional, en este caso el\u00a0<em>servidor\u00a0<\/em>y el\u00a0<em>cliente\u00a0<\/em>son la misma persona. El ejemplo m\u00e1s com\u00fan es <code>X<\/code> (conocido como <code>xorg-server<\/code>\u00a0en muchas distribuciones) y su nuevo reemplazo <code>Wayland<\/code>. No vamos a dar una explicaci\u00f3n detallada de por qu\u00e9 el org, o c\u00f3mo es que Wayland funciona, o las filosof\u00edas que existen atr\u00e1s de estos grandes proyectos, pero si vamos a dejar claro que es gracias a ellos que nosotros podemos contar con un navegador web como Firefox o Chrome, o muchos otros programas.<\/p>\n<h4>Gestor de ventanas<\/h4>\n<p>Los gestores de ventanas trabajan directamente con el servidor de imagen, su trabajo es de un nivel m\u00e1s &#8220;bajo&#8221;, puesto que gestionan (valga la redundancia) c\u00f3mo es que se crean, modifican, cierran las ventanas. Suelen ser bastante simples y sobre estos se construyen los entornos de escritorio. La lista es grande, pero solo dejar\u00e9 aqu\u00ed la idea de que son <em>softwares minimalistas,<\/em> los cuales permiten tener un control bastante b\u00e1sico del servidor de imagenes.<\/p>\n<h4>Entorno de escritorio<\/h4>\n<p>Un conjunto m\u00e1s especializado de software que permite no solamente un funcionamiento del servidor de imagen, sino tambi\u00e9n proporcionan capacidades de personalizaci\u00f3n. Dentro de estos los m\u00e1s antiguos y pesados son KDE y GNOME, pero tambi\u00e9n tenemos entornos m\u00e1s ligeros como LXDE o Mate, Cinnamon, etc.<\/p>\n<h3>CLI (Command Line Interface)<\/h3>\n<p>Tras un breve repaso por el mundo de los servidores de im\u00e1genes, ahora nos centramos nuevamente en nuestro tema. <em>CLI<\/em>, implica todo aquel programa que se ejecuta por l\u00ednea de comando, ya sea <code>git<\/code>, <code>vim<\/code>, <code>weechat<\/code>, o bueno, cualquier otro que se les venga a la mente. Pueden apreciar que estoy hablando de programas que si bien se ejecutan en la l\u00ednea de comando, muestran una especie de &#8220;interfaz gr\u00e1fica&#8221; como <code>weechat<\/code> o <code>vim<\/code>. Para todos los que no los hayan probado, se los recomiendo, son b\u00e1sicamente los que uso todo el d\u00eda.<\/p>\n<h3>Por qu\u00e9 CLI es mejor que GUI<\/h3>\n<p>Intentemos algo bastante sencillo :) El otro d\u00eda quer\u00eda trabajar en un parche para <em>Portage (el gestor de paquetes de Gentoo)<\/em>. Como todo buen proyecto colaborativo, la cantidad de l\u00edneas de c\u00f3digo supera los 70k. Intenten abrir eso en un IDE como NinjaIDE (Portage est\u00e1 escrito en Python) y no tardar\u00e1n en notar que en lo que empieza a cargar la pantalla, su m\u00e1quina se pone sumamente lenta (al menos mi i7 si lo hac\u00eda) y esto solamente tratando de abrir el c\u00f3digo y cambiar al color por defecto de &#8220;ayuda&#8221;.<\/p>\n<p>Ahora intenten hacer lo mismo con <code>vim<\/code>, a mi me carg\u00f3 en cuesti\u00f3n de mil\u00e9simas de segundo, y al mismo tiempo que pon\u00eda los colores &#8220;bonitos&#8221; y todo lo dem\u00e1s.<\/p>\n<h4>CLI ha estado mucho antes<\/h4>\n<p>Algunos aqu\u00ed dir\u00e1n que esos programas son\u00a0<em>antiguos<\/em>, yo los llamo\u00a0<strong>robustos<\/strong>. Si pudiesen ver la cantidad de horas invertidas en construir <code>emacs<\/code>, <code>vim<\/code>, <code>gdb<\/code>, y otros cientos de programas para consola, podr\u00e1n notar que la cantidad de c\u00f3digo y funcionalidades es tan grande que practicamente ya han solucionado todo lo que necesitaban solucionar. Muchos <em>GUI\u00a0<\/em>para programas que ya son robustos en su CLI jam\u00e1s tendr\u00e1n la misma cantidad de funcionalidades, esto sencillamente porque si hicieramos una pesta\u00f1a para cada subcomando disponible de por ejemplo\u00a0<code>git<\/code>, nos perder\u00edamos entre las opciones y ser\u00eda contraproducente, porque har\u00eda dif\u00edcil el trabajar.<\/p>\n<h4>CLI es m\u00e1s r\u00e1pido<\/h4>\n<p>La m\u00e1gia comienza con la tecla\u00a0<code>Tab<\/code>, esta no solamente es tu mejor amiga al momento de navegar por los escritorios en tu terminal, sino que cuando est\u00e1 bien configurada, te permite acortar sentencias largas a 2 letras y un Tab, 3 letras y un Tab, o incluso una letra y un Tab.<\/p>\n<p>Pero esta no es la \u00fanica ventaja, los que hemos tomado el tiempo de aprender <code>vim<\/code>\u00a0o\u00a0<code>emacs<\/code>\u00a0podemos decir que aunque la curva de aprendizaje sea un poco mayor a la de los IDE de estos d\u00edas, al final los resultados de productividad son asombrosos, uno no se imagina el tiempo que puede perderse al mover un mouse. El tener las manos en el teclado el 90% del tiempo no solo ense\u00f1a concentraci\u00f3n, adem\u00e1s, el hecho de escribir tanto en el teclado te hace bastante \u00e1gil y productivo. Y ahora volvemos al punto anterior, al llevar tanto tiempo con nosotros, programas como estos ya cuentan con todas las funcionalidades que se le puedan ocurrir a alguien, un dicho bastante com\u00fan para los que usamos vim me viene a la mente:<\/p>\n<blockquote class=\"td_pull_quote td_pull_center\"><p>Si usas m\u00e1s de 4 teclas, puede haber una forma mejor.<\/p><\/blockquote>\n<p>Sencillo pero poderoso, vim te permite hacer todo con la gran cantidad de teclas y combinaciones posibles, uno nunca deja de aprender, pero no deja de ser verdad tambi\u00e9n que para poder usarlo no es necesario saberlas todas, bastan unas 10 o 15 para empezar a ser m\u00e1s productivo.<\/p>\n<h4>CLI te da el control absoluto<\/h4>\n<p>Cuando uno ejecuta operaciones con el mouse, o programas desde el servidor de im\u00e1genes, no siempre se tienen presente todas las configuraciones extra que se ejecutan al momento de dar click, esto no sucede con la terminal, aqu\u00ed tu tienes el poder absoluto de lo que se ejecuta o no, con qu\u00e9 opci\u00f3n o hasta qu\u00e9 punto. Con el tiempo te vas dando cuenta que necesitas menos de lo que piensas, y eso te ayuda a hacer las cosas de forma m\u00e1s centrada.<\/p>\n<h3>GUI tambi\u00e9n tiene lo suyo<\/h3>\n<p>No voy a decir que todos deber\u00edamos usar CLI siempre, eso tampoco es lo ideal, yo mismo uso GUIs casi todo el tiempo, para escribir este post estoy usando mi Chrome, y para ver mis correos uso Evolution (aunque tambi\u00e9n uso\u00a0<code>mutt<\/code>\u00a0bastante \u00faltimamente). Y supongo que este es el mayor mito de todos&#8230; que la gente piense que GNU\/Linux son solamente termianles, a mi me gusta mi entorno de escritorio, es bastante minimalista, pero a mi me gusta as\u00ed :) Y usualmente solo tengo dos o tres programas corriendo, mi Chrome, mi Evolution y mi terminal :)<\/p>\n<p>Estos son unos de los motivos por los que me gustan tanto las CLI y por los que los invito a darles una oportunidad, puede que despu\u00e9s terminen como yo usando m\u00e1s CLIs que GUIs ;) Saludos<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Revisando otros art\u00edculos me top\u00e9 con esta peque\u00f1a pregunta que me caus\u00f3 mucha gracia, es verdad que una de las primeras cosas que nos sacan en cara usuarios de otros sistemas (excepto FreeBSD) es que no usamos los GUIs. A decir verdad, a mi tambi\u00e9n me pareci\u00f3 bastante curioso al principio de mi viaje por &hellip; <a href=\"https:\/\/blogs.gentoo.org\/chrisadr\/2017\/10\/30\/por-que-preferimos-la-linea-de-comandos-a-los-guis\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">\u00bfPor qu\u00e9 preferimos la l\u00ednea de comandos a los GUIs?<\/span><\/a><\/p>\n","protected":false},"author":169,"featured_media":59,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[3,8,9],"jetpack_featured_media_url":"https:\/\/blogs.gentoo.org\/chrisadr\/files\/2017\/10\/cli.png","_links":{"self":[{"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/posts\/58"}],"collection":[{"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/users\/169"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/comments?post=58"}],"version-history":[{"count":1,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/posts\/58\/revisions"}],"predecessor-version":[{"id":60,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/posts\/58\/revisions\/60"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/media\/59"}],"wp:attachment":[{"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/media?parent=58"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/categories?post=58"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/tags?post=58"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}