Enlightenmentware - Softwares que me despertam
(mmapped.blog)- UNIX, Git, Emacs, Boost.Graph, Bazel
- Como programador, interajo diariamente com ferramentas de software, mas a maioria delas serve apenas para realizar o trabalho no limite do necessário
- Às vezes, encontro softwares que vão além da utilidade simples, estimulam a imaginação, abrem novas possibilidades e influenciam a forma como projetamos sistemas
- Chamo esse tipo de software de
Enlightenmentware - Para programadores, a fonte mais comum desse tipo de despertar é a linguagem de programação que usam, inclusive linguagens aprendidas por hobby
- Ao lidar com linguagens de programação como MASM, C, Prolog e Idris, vivi muitos momentos de revelação
- Como a influência do aprendizado de linguagens na expansão do pensamento já é conhecida há muito tempo, este texto decide se concentrar não nas linguagens, mas apenas em softwares que provocam esse tipo de despertar
UNIX
Unix é amigável com o usuário — ele apenas escolhe bem os amigos.
Anônimo, "Art of unix Programming" por Eric S. Raymond
- Em 2008, enquanto estudava na universidade, comecei a procurar meu primeiro emprego em programação.
- A maioria das vagas exigia conhecimento de UNIX e socket.
- Como não havia disciplinas sobre unix ou sistemas operacionais no currículo da universidade, decidi estudar por conta própria.
- Entrei no mundo do unix por meio do livro "The unix Operating System", de Andrey Robachevsky e outros.
- Ao instalar o Mandriva Linux, passei a explorar o ambiente unix.
- Desde então, unix esteve presente em todas as fases da minha vida.
- A maior parte do software roda em ambientes unix, e ainda hoje consulto o livro "Advanced Programming in the unix Environment".
Git
Com git é fácil dar um tiro no próprio pé, mas também é fácil voltar ao pé anterior e fazer merge com a perna atual.
Jack William Bell
- No início de 2009, tive meu primeiro contato com um sistema de controle de versão usando Rational ClearCase.
- O ClearCase era extremamente confuso e só atendia aos requisitos mínimos.
- Depois passei a usar Subversion e aprendi com o livro "Version Control with Subversion".
- O Subversion era fácil de entender e de usar, mas era inconveniente para projetos pessoais.
- Depois disso, descobri o Git.
- O Git tinha uma curva de aprendizado íngreme e era confuso, mas era um tipo de confusão diferente do ClearCase.
- O Git removeu o atrito do uso de controle de versão, tornando possível versionar tudo o que vale a pena.
- Seu design era atraente por ser uma mistura elegante de sistema distribuído, grafo acíclico e armazenamento endereçado por conteúdo.
- Aprender o funcionamento interno do Git foi tão divertido que isso me levou a me interessar por outros sistemas de controle de versão.
- A principal desvantagem do Git é sua abordagem orientada a snapshots, que torna mais difícil entender merges.
Emacs
Qualquer editor de texto consegue salvar arquivos, mas só o Emacs consegue salvar a alma.
Per Abrahamsen
- Editei meu primeiro programa na amigável janela azul do Turbo Pascal 7.0.
- Na universidade, aprendi programação usando Pascal e depois passei para C++ e Java.
- No meu primeiro emprego como programador, usei NEdit, mas logo comecei a me interessar por Vim e Emacs.
- O Vim era desafiador, mas divertido, como tocar um instrumento musical.
- O Emacs funciona como uma máquina Lisp que oferece edição de texto e gerenciamento de janelas.
- A estrutura interna do Emacs é limpa, bem organizada e bem documentada.
- Estendê-lo com Emacs Lisp é muito mais fácil do que em outros editores.
Boost.Graph
Tenho um forte preconceito contra a moda do código reutilizável. Acho que "código reeditável" é muito melhor do que caixa-preta ou toolkit.
Donald Knuth, em entrevista com Andrew Binstock
- Na véspera de Ano-Novo de 2013, li a Boost Graph Library.
- A maioria das bibliotecas de algoritmos depende de representações específicas de dados, o que dificulta sua integração em projetos existentes.
- A Boost.Graph resolve esse problema usando programação genérica.
- Nunca cheguei a usar a biblioteca na prática, mas seu design aprofundou minha compreensão do design da STL e da programação genérica.
Bazel
Se o make não funciona como você esperava, há uma boa chance de o makefile estar errado.
Adam de Boor, "PMake—A Tutorial"
- Em 2009, escrevi meu primeiro
Makefilepara um projeto de pesquisa. - A complexidade do
makeme fez desejar uma ferramenta melhor. - Tentei vários sistemas de build, mas todos me deixaram insatisfeito.
- Em 2016, entrei no Google e passei a usar o
blaze. - O Bazel foi a última peça que faltava no quebra-cabeça dos sistemas de build.
- O Bazel é rápido, preciso, fácil de usar e independente de linguagem.
Conclusão
- Características em comum de um bom
enlightenmentware:- Resolve problemas profundos e lida com questões que enfrentamos no dia a dia.
- Coloca muito volume em uma superfície pequena.
- Convida e incentiva a explorar seu interior.
Opinião do GN⁺
- Importância do UNIX: UNIX é usado como sistema operacional básico em muitos ambientes de programação e é essencial para entender os fundamentos da programação de sistemas.
- Curva de aprendizado do Git: Git é difícil no começo, mas é indispensável como ferramenta poderosa de controle de versão. É especialmente útil em sistemas distribuídos e ambientes colaborativos.
- Flexibilidade do Emacs: Emacs oferece muito mais do que um editor de texto e é especialmente recomendável para quem tem interesse em programação Lisp.
- Programação genérica no Boost.Graph: Boost.Graph é um exemplo poderoso de programação genérica e permite aprender formas eficientes de implementar algoritmos complexos.
- Eficiência do Bazel: Bazel é uma ferramenta capaz de maximizar a eficiência do sistema de build em projetos de grande escala, sendo particularmente útil em grandes empresas como o Google.
5 comentários
No Windows, talvez seja o Everything mesmo haha
O quão bom o Magit é para entrar nessa lista de softwares-primas? Como não uso Emacs, não tenho como saber. No Nvim, dizem que o Neogit foi influenciado pelo Magit, então talvez eu devesse experimentar pelo menos esse...
Também recomendo o lazygit hehe
Obrigado.
No fim de semana, vou instalar o superfile e o lazygit para dar uma olhada.
Opiniões do Hacker News
Resumo dos comentários do Hacker News
Compiler Explorer:
Opiniões sobre o uso do Windows:
Docker:
Spring Framework:
Nix:
Emacs:
Conceito de 'Round':
Magit:
Comparação entre SVN e Git:
Experiência usando Linux, Emacs, Bazel e Magit: