Articles

Os Programadores devem aprender Linux?

Pare-me se já ouviu esta: “Os programadores só usam Linux. PCs e Macs são para noobs!”

Sim, no.

Linux é uma ferramenta. O Windows é uma ferramenta. MacOS também é uma ferramenta. Cada um é um sistema operacional (SO) que você precisa para fazer um computador útil, e cada um tem suas vantagens e desvantagens. O problema é que, tal como muitas outras ferramentas, estes sistemas operativos populares têm tribos. Se Windows é DC Comics e macOS é Marvel, então Linux é Dark Horse.

Uh, What Is Linux, Anyway?

Let’s start at the beginning. (É um dos meus lugares favoritos para começar.) Se você está perguntando se deve aprender Linux, você provavelmente poderia usar uma rápida introdução ao que o Linux é. Enquanto Windows e macOS são sistemas operacionais individuais que a Microsoft e a Apple vendem e suportam, o que Linux é (e não é) é um pouco mais complicado.

Em 1991, um programador chamado Linus Torvalds lançou um novo kernel que ele chamou de Linux. Um kernel é, grosso modo, um programa de computador que fica no meio de um sistema operacional e controla as interações entre o hardware e o software. Ele o baseou no Unix e em outro sistema operacional do tipo Unix chamado Minix. Como você pode ver, monikers que rimam com o Unix já eram uma coisa, então o kernel do Torvald praticamente se nomeou.

O kernel rapidamente ganhou popularidade, e mais programadores contribuíram para o seu projeto. Logo um novo sistema operacional, também chamado Linux, cresceu em torno do kernel.

But open source gotta open source, and there is not-and never be-only one version of Linux. Linux é uma família de sistemas operacionais, normalmente chamados de distribuições ou distros. Uma distribuição inclui o kernel do Linux e o resto do software necessário para tornar um computador utilizável. O website DistroWatch lista 100 distribuições, mas só pára lá porque 100 é um número redondo bonito.

developing an understanding of any major distribution gives you a significant set of skills that you can map over to any one of them.

Somas das distribuições mais populares são Debian, Red Hat, Ubuntu, e Fedora. Ubuntu é na verdade baseado no Debian, e Fedora é baseado no Red Hat. E, claro, há o CentOS, que também é baseado no Red Hat, e o Mint, que é baseado no Ubuntu…Como você pode ver, é complicado. A batalha sobre qual distro é a melhor gera tanto calor quanto e menos luz do que as batalhas sobre os SOs ou quadrinhos.

Então, voltemos à pergunta original. Quando você pergunta “Os programadores devem aprender Linux?”, uma das respostas possíveis é “Qual deles?”

Mas essa não é realmente uma resposta útil, é?

Então, devo aprender Linux?

Bem, depende. Quais são os seus objectivos?

Esta é uma pergunta que deve ter sempre em mente que se depara com uma ferramenta ou uma recomendação para começar a usar uma. O que você precisa aprender, e vai gastar tempo com essa ajuda para chegar lá?

What are your goals? That's a question you should always keep in mind you come across a tool or a recommendation to start using one. What do you need to learn, and will spending time on this help you get there?

Linux é o SO mais usado para servidores. Quase todos os sites que você visita a cada dia estão rodando Linux, assim como os servidores que ficam atrás deles para rodar aplicações “back-end”, como bancos de dados. Por exemplo, os bancos fazem uso pesado do Linux para gerenciar transações financeiras. A maioria dos servidores de banco de dados também rodam Linux.

Linux é muito popular em plataformas embarcadas. Raspbian é uma distribuição popular para o Raspberry Pi. O SO Android do Google é um derivado do Linux, e muitos roteadores e switches de rede também o usam.

Então, se o seu objetivo é escrever software de servidor, código de internet das coisas (IoT), ou software para sistemas embarcados, ficar confortável com o Linux irá percorrer um longo caminho para tornar a sua vida mais fácil.

Se o seu sonho é escrever aplicações para o iPhone ou páginas web bonitas, aprender Linux pode não ser a melhor maneira de passar o seu tempo agora.

O que devo aprender sobre Linux?

A próxima pergunta é: O que significa “aprender Linux”?

Bem, depende. (Desculpe, não pude resistir.)

Se você vai escrever um software de servidor que roda no Linux, ele precisa ser implantado em sistemas que o rodam. Dependendo de onde você estiver trabalhando, isto pode significar entregar seu código para uma organização DevOps, ou pode significar fazê-lo você mesmo. De qualquer forma, você pode tornar sua vida, sem mencionar a vida de seus colegas de trabalho, muito mais agradável se você puder se sentir confortável com a linha de comando e como os arquivos são organizados em um sistema Linux.

Get comfortable with the command line and how files are organized on a Linux system. These skills are transferable regardless of which distribution you learn on and which one your future employer uses.

Essas habilidades são transferíveis independentemente da distribuição em que você aprende e qual a que seu futuro empregador usa. Embora existam algumas (muitas vezes irritantes) diferenças entre elas, desenvolver uma compreensão de qualquer grande distribuição lhe dá um conjunto significativo de habilidades que você pode mapear para qualquer uma delas. Também lhe dará uma vantagem competitiva sobre os desenvolvedores que só se sentem confortáveis dentro do mundo protegido de sua IDE favorita.

Se você está interessado em desenvolver software para robótica ou sistemas embarcados, então você precisa ficar íntimo do Linux no nível do kernel. Para você, “aprender Linux” significa aprender o kernel Linux.

Aqui, novamente, a distribuição que você escolher é menos importante do que simplesmente molhar os pés. Enquanto nem todas as distribuições actualizam as versões do kernel ao mesmo tempo (e algumas são comicamente lentas), o kernel Linux é o kernel Linux. Escolha uma distro e comece a jogar.

How Do I Do That?

If you’re interested in robotics or IoT, you might as well as just get a Raspberry Pi and get right to it. Você vai querer ter certeza de ter um mouse USB e um monitor para conectá-lo. O resto é bastante simples.

Se estiver interessado em software de servidor, escolha uma distribuição e instale-a.

Que distribuição é realmente uma questão de escolha. Alguns consideram o Ubuntu o mais amigável para iniciantes. Outros consideram o Linux Mint um pouco melhor. A boa notícia é que eles são gratuitos, então você poderia tentar todos eles!

A opção mais barata para instalar Linux e chutar as portas e bater os pneus é instalar o software da máquina virtual no computador que você já tem. O VirtualBox é gratuito e roda em Windows e macOS. Ele vai até guiá-lo na instalação do Linux depois de configurá-lo.

Após ter o Linux instalado, comece a jogar! A beleza de jogar com o Raspberry Pi ou uma máquina virtual é que você pode sempre começar do zero se você explodir alguma coisa. Você verá que é muito difícil quebrar um sistema Linux.

Então, os programadores devem aprender Linux?

Existe uma boa chance de você encontrar o Linux em algum lugar da sua carreira como programador. Ficar confortável com ele com antecedência pode dar-lhe uma vantagem competitiva sobre outros programadores que não o fazem. Pegue uma cópia e comece a jogar com ele agora.

Este post foi escrito por Eric Goebelbecker. Eric trabalha nos mercados financeiros em Nova York há 25 anos, desenvolvendo infra-estrutura para redes de protocolo de troca de dados de mercado e informações financeiras (FIX). Ele adora falar sobre o que torna as equipes eficazes (ou não tão eficazes!)