Por que preferimos a linha de comando às GUIs?

Revendo outros artigos me deparei com essa pequena questão que me divertiu muito, é verdade que uma das primeiras coisas que os usuários de outros sistemas (exceto FreeBSD) nos vêem é que não usamos as GUIs. Para dizer a verdade, também achei bastante curioso no início da minha jornada GNU / Linux. Devo admitir que, com o tempo, agora uso a linha de comando muito mais do que qualquer outro programa de GUI e geralmente prefiro programas de linha de comando a programas mais elaborados com GUIs deslumbrantes.

O mito

Na verdade, isso nada mais é do que um mito urbano, porque ao contrário de outros sistemas cujos nomes não serão mencionados aqui, é no GNU / Linux que você realmente tem liberdade de escolha. Gostaria que em outros sistemas houvesse a versatilidade que existe aqui. Mas vamos dar uma olhada neste assunto, caso contrário, muitas coisas não ficarão claras:

Servidores

Todos nós ouvimos a palavra Servidor, alguns acreditam que são aqueles supercomputadores que impulsionam o Google ou a Amazon, ou o único da sua empresa. Mas a realidade é que um servidor responder a um modelo de trabalho. Usamos este termo para nos referir ao fato de que temos um programa disponível para os usuários (clientes) e entrega-lhes algo. Um exemplo básico é apache, que é usado para servir páginas da web na internet. Este programa fornece html para clientes quem o pede.

Servidor de imagem

Mas não apenas um servidor pode estar nos supercomputadores que o Google e muitas outras empresas tornam possíveis, até mesmo o laptop "mais antigo" pode ser um servidor, especialmente quando falamos sobre imagens. Todos nós dirigimos um servidor de imagens em nossos laptops para ter uma tela funcional, neste caso o servidor e o cliente eles são a mesma pessoa. O exemplo mais comum é X (conhecido como xorg-server em muitas distribuições) e sua nova substituição Wayland. Não vamos dar uma explicação detalhada de por que a org, ou como funciona o Wayland, ou as filosofias que existem por trás desses grandes projetos, mas vamos deixar claro que é graças a eles que podemos contar com um navegador da web como Firefox ou Chrome, ou muitos outros programas.

Gerenciador de janela

Os gerenciadores de janelas trabalham diretamente com o servidor de imagem, seu trabalho é de um nível "inferior", já que gerenciam (perdoe a redundância) como as janelas são criadas, modificadas, fechadas. Eles geralmente são bastante simples e os ambientes de desktop são desenvolvidos com base neles. A lista é grande, mas deixarei aqui apenas a ideia de que são software minimalista, que permitem que você tenha um controle bastante básico do servidor de imagem.

Ambiente desktop

Um conjunto mais especializado de software que permite não apenas a operação do servidor de imagem, mas também fornece recursos de personalização. Entre estes, os mais antigos e pesados ​​são o KDE e o GNOME, mas também temos ambientes mais leves como LXDE ou Mate, Canela, etc.

CLI (interface de linha de comando)

Após uma breve olhada no mundo dos servidores de imagem, voltamos ao nosso tópico novamente. CLI, implica em qualquer programa executado por linha de comando, git, vim, weechat, ou bem, o que mais vier à mente. Você pode ver que estou falando de programas que, embora sejam executados na linha de comando, apresentam uma espécie de "interface gráfica" como weechat o vim. Recomendo a todos aqueles que ainda não experimentaram, são basicamente os que uso o dia todo.

Por que CLI é melhor do que GUI

Vamos tentar algo bem simples  Outro dia eu queria trabalhar em um patch para Portage (gerenciador de pacotes do Gentoo). Como qualquer bom projeto colaborativo, o número de linhas de código ultrapassa 70k. Tente abri-lo em um IDE como o NinjaIDE (Portage é escrito em Python) e você logo notará que quando a tela começa a carregar, sua máquina fica extremamente lenta (pelo menos meu i7 ficou) e isso está apenas tentando abra o código e mude para a cor padrão de «ajuda».

Agora tente fazer o mesmo com vim, me carregou em questão de milissegundos, e ao mesmo tempo colocou as cores "bonitas" e tudo mais.

CLI foi muito antes

Alguns aqui dirão que esses programas são antigo, Eu ligo para eles robusto. Se você pudesse ver o número de horas investidas na construção emacs, vim, gdb, e centenas de outros programas de console, você pode perceber que a quantidade de código e funcionalidades é tão grande que eles praticamente já resolveram tudo o que precisavam resolver. Muitos GUI para programas que já são robustos em sua CLI eles nunca terão a mesma quantidade de funcionalidade, isso simplesmente porque se fizéssemos uma guia para cada subcomando disponível, por exemplo git, nos perderíamos entre as opções e seria contraproducente, pois dificultaria o trabalho.

CLI é mais rápido

A magia começa com a chave Tab, este não é apenas o seu melhor amigo ao navegar nos desktops do seu terminal, mas quando está devidamente configurado, permite encurtar frases longas para 2 letras e um Tab, 3 letras e um Tab, ou mesmo uma letra e um Aba.

Mas esta não é a única vantagem, aqueles de nós que dedicamos tempo para aprender vim o emacs Podemos dizer que embora a curva de aprendizado seja um pouco maior que a dos IDEs hoje em dia, no final os resultados de produtividade são surpreendentes, não se pode imaginar o tempo que se pode perder ao mover um mouse. Ter as mãos no teclado 90% do tempo não ensina apenas a concentração, além disso, o fato de digitar tanto no teclado o torna bastante ágil e produtivo. E agora voltamos ao ponto anterior, por estarmos conosco há tanto tempo, programas como esses já possuem todas as funcionalidades que alguém poderia imaginar, um ditado bastante comum para quem usa o vim vem à mente:

Se você usar mais de 4 chaves, pode haver uma maneira melhor.

Simples mas poderoso, o vim permite que você faça tudo com o grande número de teclas e combinações possíveis, nunca se para de aprender, mas também é verdade que para usá-lo não é necessário conhecê-los todos, cerca de 10 ou 15 são suficientes para começar ser mais produtivo.

CLI oferece controle completo

Quando se executa operações com o mouse, ou programas desde o servidor de imagem, nem sempre estão presentes todas as configurações extras que se executam no momento do clique, isso não acontece com o terminal, aqui você tem o poder absoluto do que é executado ou não, com que opção ou em que medida. Com o tempo, você percebe que precisa de menos do que pensa e isso o ajuda a fazer as coisas de uma forma mais focada.

GUI também tem seu próprio

Não vou dizer que todos devemos usar CLI sempre, isso também não é o ideal, eu mesmo uso GUIs quase o tempo todo, para escrever este post estou usando meu Chrome, e para ver meus e-mails eu uso o Evolution (embora também use mutt bastante ultimamente). E suponho que este seja o maior mito de todos... que as pessoas pensam que GNU/Linux são apenas terminais, gosto do meu ambiente desktop, é bastante minimalista, mas gosto dele assim  E normalmente só tenho dois ou três programas em execução, meu Chrome, meu Evolution e meu terminal 

Estas são algumas das razões pelas quais gosto tanto de CLIs e porque convido você a dar uma chance a elas, talvez mais tarde você acabe como eu usando mais CLIs do que GUIs  Atenciosamente