Melhores Editores de Programação? Uma batalha sem fim sem vencedor claro

Publicados: 2022-03-11

Independentemente da aparente evidência em contrário, os programadores são humanos. E, como todos os humanos, gostamos de tirar vantagem da nossa liberdade de escolha. Quer essa escolha seja sobre tomar a pílula vermelha ou a pílula azul, usar um vestido ou calça, ou usar um ambiente de desenvolvimento em detrimento de outro, a escolha que fazemos nos coloca em um grupo de pessoas ou em outro. A escolha, inevitavelmente, vem depois de nossa avaliação de opções. E tendo feito uma escolha, tendemos a acreditar que quem escolhe diferente cometeu um erro.

Você pode facilmente pesquisar na internet e encontrar centenas de debates sobre Emacs vs Vim. Mesmo se você ler todos eles, será impossível escolher objetivamente um vencedor. No entanto, a escolha do ambiente de desenvolvimento diz alguma coisa sobre a qualidade do trabalho que um desenvolvedor pode entregar? Absolutamente não!

Um grande desenvolvedor poderia escrever seu código no Bloco de Notas e ainda entregar coisas boas.

Certamente, há muitas coisas que os profissionais consideram ao selecionar ferramentas para seu trabalho. Isso é verdade para todas as profissões, incluindo desenvolvimento de software. Muitas vezes, no entanto, a seleção é baseada no gosto pessoal, não em algo facilmente tangível.

Os programadores passam a maior parte do tempo olhando para o ambiente de desenvolvimento, então é natural que queiramos algo bonito e funcional. Todo ambiente de desenvolvimento tem seus prós e contras. Como um todo, eles são uma força motriz da indústria de desenvolvimento de software.

melhores editores de programação

Quais são as coisas que um desenvolvedor deve avaliar ao escolher um conjunto de ferramentas de programação, como um editor de programação de sua escolha? A resposta a esta pergunta não é tão simples como pode parecer. O desenvolvimento de software está perto de uma arte, e existem poucos fatores “difusos” que separam uma obra-prima de um colecionável superfaturado.

Cada linguagem de programação, seja Java, C#, PHP, Python, Ruby, JavaScript e assim por diante, tem suas próprias práticas de desenvolvimento relacionadas à estrutura do projeto, depuração e implantação. No entanto, uma coisa que todos eles têm em comum é a edição de código. Neste artigo avaliaremos diferentes plataformas de desenvolvimento sob a ótica da tarefa mais comum no desenvolvimento de software: escrever código.

IDE vs Editor de texto de uso geral

Um ambiente de desenvolvimento integrado (IDE) (ou ambiente de desenvolvimento interativo) é um aplicativo de software que fornece recursos abrangentes para programadores de computador para desenvolvimento de software. Um IDE normalmente consiste em um editor de código-fonte, ferramentas de automação de compilação e um depurador, e muitos suportam muitos plug-ins e extensões adicionais.

Editores de texto são aplicativos mais simples. Comparados aos IDEs, eles geralmente correspondem apenas ao segmento do editor de código de um IDE. No entanto, muitas vezes são muito mais do que isso. IDEs são criados para servir ao propósito de desenvolvimento de software, enquanto muitos editores de texto são projetados para serem usados ​​por não desenvolvedores também.

As linguagens de tipo estático podem obter muitos benefícios dos IDEs. Devido às regras rígidas de digitação, é possível que o IDE detecte bugs e inconsistências de nomenclatura entre classes e módulos, e até mesmo entre arquivos, diretamente no editor, antes de compilar. Essa funcionalidade é padrão em muitos IDEs e, por esse motivo, os IDEs são muito populares para linguagens de tipo estático.

No entanto, é impossível fazer a mesma coisa para linguagens tipadas dinamicamente. Por exemplo, se um nome de método pode ser gerado pelo próprio código, construído a partir de uma série de concats de strings, tentar detectar erros de nomenclatura em linguagens dinâmicas requer nada menos do que executar o programa real. Como um dos principais benefícios dos IDEs não se aplica aos programadores de linguagem dinâmica, eles têm uma tendência maior a ficar com editores de texto como o Sublime. Como uma observação lateral, essa também é uma das principais razões pelas quais o movimento de desenvolvimento orientado a testes cresceu em torno de comunidades de linguagem dinâmicas e não teve tantos seguidores em linguagens estáticas.

O que faz um ótimo editor de programação?

Além de vários recursos diferentes para várias linguagens, todo editor de programação precisa ter uma interface de usuário bem organizada e limpa. O apelo estético geral também não deve ser negligenciado. Não é apenas uma questão de boa aparência, pois um editor bem projetado com a escolha certa de fonte e cores ajuda a reduzir a fadiga ocular e permite que você seja mais produtivo.

No ambiente de desenvolvimento atual, uma curva de aprendizado íngreme é um risco, independentemente do conjunto de recursos. O tempo é sempre valioso, então um bom editor deve ser fácil de se acostumar. Idealmente, o programador deve ser capaz de começar a trabalhar imediatamente, sem ter que passar por muitos obstáculos. Um canivete suíço é uma ferramenta prática e útil, mas qualquer um pode dominá-lo em minutos. Da mesma forma, para editores de programação, a simplicidade é uma virtude.

Interface do usuário, recursos e fluxo de trabalho

Vamos dar uma olhada mais de perto na interface do usuário, nos diferentes recursos e capacidades e nas ferramentas usadas com frequência que devem fazer parte de qualquer editor de programação.

Os números de linha, é claro, devem estar ativados por padrão e simples de ativar ou desativar.

Os snippets são úteis para inserir blocos de texto padronizados em um layout fixo. No entanto, programar é dizer as coisas apenas uma vez, portanto, tenha cuidado com os snippets, pois eles podem dificultar a manutenção do seu código no futuro.

A capacidade de lint, ou verificação de sintaxe, o arquivo atual é útil, assim como a capacidade de iniciá-lo. Sem esse recurso, um programador deve alternar para uma janela de linha de comando externa, escolher e executar o comando correto e, em seguida, percorrer as mensagens de erro para encontrar a origem do erro. No entanto, o lint deve estar sob o controle do programador, pois o atraso causado pelo lint pode interromper o codificador em um momento crucial.

documento embutido

Doc embutido é útil desde que não atrapalhe, mas ter uma página do navegador aberta nas definições de classe às vezes é mais útil, especialmente quando há muitas classes relacionadas que não se estendem diretamente umas às outras. É bastante fácil recortar e colar o código da documentação do navegador para o código que está sendo escrito, de modo que a complexidade adicional da documentação em linha geralmente se torna menos útil, na verdade, mais irritante, à medida que o conhecimento do programador sobre a documentação aumenta.

A complementação de palavras é útil, pois é rápida e quase tão confiável quanto a documentação em edição, sendo menos intrusiva. É satisfatório inserir apenas alguns caracteres de uma palavra e, em seguida, pressionar Enter para obter o resto. Caso contrário, trabalha-se sob a pressão do excesso de digitação, abominada por programadores preguiçosos, que querem digitar ee em vez do exponentialFunctionSquared mais longo. O preenchimento de palavras satisfaz minimizando a digitação, reforçando a nomenclatura coerente e não atrapalhando.

Renomear variáveis ​​e funções no programa é útil, mas você precisa ser capaz de revisar as alterações e certificar-se de que seu código não está quebrado. Novamente, a complementação de palavras é um meio-termo útil, pois funciona para todos os idiomas; você pode usar nomes longos para itens com vida útil longa, sem incorrer em sobrecarga de digitação. Você pode usar referências a eles por meio de um nome mais curto localmente, a fim de encurtar expressões que poderiam se espalhar por muitas linhas. Se você precisar renomear, os nomes longos são exclusivos, portanto, essa abordagem funciona em todos os idiomas e em todos os arquivos.

Os arquivos de origem às vezes podem crescer muito. A dobragem de código é um bom recurso que simplifica a leitura de arquivos longos.

Localizar/alterar com limitação de escopo para local, incremental ou global com metacaracteres e expressões regulares faz parte do requisito mínimo atualmente, assim como o realce de sintaxe.

Visão geral dos editores de programação populares

Ao longo dos anos, passei por vários editores, e é isso que penso deles:

  • Emacs: Um dos editores mais populares do mundo. A maior característica do Emacs é sua extensibilidade, apesar da complexidade de sua linguagem de extensão (você pode até jogar Tetris nele com Mx tetris ). Os fãs do Emacs consideram sua interface baseada em terminal um ótimo recurso, enquanto outros podem debater que é uma desvantagem. Na minha experiência pessoal, achei muito para adotar e aprender. Tenho certeza de que, se você souber usar o Emacs, nunca usará mais nada, mas assumir e aprender toda a cultura foi mais do que eu queria fazer. No entanto, sua popularidade entre os desenvolvedores prova que está longe de ser uma relíquia dos velhos tempos e também faz parte do nosso futuro.

  • Vi/Vim: O Vim é outro poderoso editor baseado em terminal e vem como padrão com a maioria dos sistemas operacionais xNIX. Além de ter uma interface diferente do Emacs, minha visão é praticamente a mesma. Se você cresceu com isso, tenho certeza que nunca usará outra coisa. Ter habilidades de Vi tornará sua vida muito mais simples ao operar através de SSH e outros pontos apertados, e você não terá problemas com velocidade, uma vez que se familiarize com as teclas. Embora não seja tão difícil de invadir quanto o Emacs, a curva de aprendizado ainda é bastante íngreme e definitivamente poderia usar alguns recursos interessantes de um editor de janelas.

  • SublimeText: Fiel ao seu nome, SublimeText é um belo editor de texto com vários recursos. Ao contrário de alguns editores semelhantes, o SublimeText é de código fechado, portanto não pode ser modificado em um nível baixo. O SublimeText oferece a simplicidade dos editores de texto tradicionais, com uma interface de usuário enxuta e rápida. Muitos desenvolvedores acham mais fácil de usar do que o Vim, e isso é especialmente verdadeiro para os recém-chegados. A curva de aprendizado não é tão íngreme. Embora a interface do usuário seja mínima e direta, o SublimeText oferece alguns recursos interessantes, como um código de exibição reduzido à direita da interface do usuário, permitindo que os usuários rolem rapidamente pelo código e naveguem com relativa facilidade. Embora não seja totalmente gratuito, a versão demo com recursos limitados é. Desbloquear todos os recursos custará US $ 70.

  • Atom é o resultado de um esforço do GitHub para produzir um editor de programação para uma nova geração de desenvolvedores. Embora ainda seja um trabalho em andamento, o Atom é um editor muito capaz com uma comunidade vibrante de desenvolvedores interessados ​​em novas extensões, bibliotecas JavaScript e muito mais. Suas desvantagens incluem algumas peculiaridades da interface do usuário, a possibilidade de que alguns pacotes complementares possam se comportar mal e problemas de desempenho relatados ao trabalhar com arquivos (muito) grandes. Mas o projeto está em desenvolvimento ativo e as deficiências atuais provavelmente serão melhoradas. Atom é um projeto de código aberto e pode ser facilmente hackeado para atender às suas necessidades.

  • Nano: Excelente em um canto apertado, mas não rico em recursos o suficiente para evitar o inevitável pensamento de que deve haver uma maneira mais rápida de fazer isso enquanto se esforça para digitar um bloco de código, mantendo os comentários alinhados na coluna 80! Ele nem tem realce de texto e não deve ser usado para nada além de alterações no arquivo de configuração.

  • TextMate2: A maior desvantagem do TextMate é que ele só roda no Mac. Como seus criadores colocaram, “TextMate traz a abordagem da Apple aos sistemas operacionais para o mundo dos editores de texto”. Ao unir os fundamentos do UNIX e a GUI, o TextMate escolhe o melhor dos dois mundos, para o benefício de scripters experientes e usuários iniciantes. É o editor de escolha para muitos desenvolvedores Ruby, Python e JavaScript, com ótimo suporte para Bash ou Markdown também. No momento da publicação deste artigo o TextMate 2 ainda está em Beta, mas já possui um ecossistema de plugins muito maduro que promete estendê-lo além das extensões do Emacs.

  • jEdit: Baseado em Java e considerado lento por alguns. A configuração pronta para uso pode afastar certas pessoas, mas o jEdit pode ser extremamente rápido se configurado corretamente, além de ter uma aparência extremamente agradável.

  • Eclipse: Outro IDE amplamente utilizado, o Eclipse é muito popular entre os desenvolvedores Java, mas foi adaptado para muitas plataformas diferentes. Poderíamos argumentar que sua arquitetura monolítica é uma pedra que o puxará para baixo da água, mas ainda é uma das plataformas mais populares entre os desenvolvedores.

  • Aptana Studio: Um IDE abrangente de aplicativo da Web de código aberto. Ele está disponível como um plug-in do Eclipse, o que o torna popular entre alguns desenvolvedores Java. A versão autônoma é ainda mais enxuta e oferece uma variedade de diferentes temas e opções de personalização. Os recursos de gerenciamento de projetos do Aptana também podem ser úteis para codificadores que aprimoraram suas habilidades no Eclipse. Enquanto as versões anteriores sofriam de problemas de desempenho em algumas plataformas de hardware, esses problemas foram resolvidos no Aptana Studio 3 e devem ser coisa do passado.

  • NetBeans: Outro IDE de código aberto relativamente popular com suporte multiplataforma. É um pouco mais lento na inicialização do que editores enxutos como o SublimeText, e a escolha de complementos é limitada em comparação com algumas alternativas. Muitos desenvolvedores Java passaram a amar o NetBeans graças à integração SCM perfeita e ao suporte a HTML5. O suporte do NetBeans para PHP também melhorou nas versões mais recentes.

  • JetBrains: Oferece uma família de IDEs para Java, Ruby, Python e PHP. Eles são todos baseados no mesmo mecanismo principal. Muito capazes por si só, os IDEs da JetBrains vêm ganhando um número crescente de seguidores. No entanto, eles não são soluções gratuitas e de código aberto, embora uma avaliação de 30 dias esteja disponível e o preço seja razoável.

  • Komodo Edit: Komodo Edit tem um grande potencial, e ainda assim está cheio de pequenas “pegadinhas” irritantes e idiossincrasias que podem ser frustrantes por sua falta de ortogonalidade. Komodo Edit parece confuso, o que é uma pena, porque claramente tem imensa capacidade. Continuo voltando ao Komodo Edit na esperança de ter perdido algum princípio de organização e, toda vez, sou derrotado por uma confusão de capacidade desorganizada.

  • Geany: Geany não é um grande jogador de poder como muitos dos outros editores nesta lista. É definido mais por “o que não é” do que “o que é”. Não é lento, não tem muita herança dos velhos tempos, não tem uma capacidade de macro, ou muito de uma multi janela na capacidade de buffer. No entanto, as coisas que ele faz, ele faz bem o suficiente. É, talvez, o menos exigente de todos os editores que eu tentei e ainda pode fazer 90 por cento do que você esperaria de um editor de programador. Geany parece bom o suficiente no Ubuntu, que é uma das razões pelas quais eu o escolhi como meu editor preferido.

Minha conclusão

Seria presunçoso declarar apenas um como o melhor editor de programação entre essas grandes ferramentas. E há alguns editores que eu nem tentei. Não existe uma solução única para todos. Foi isso que me obrigou a experimentar vários editores diferentes; se você estiver mais interessado na longevidade do editor, você também vai querer ler a avaliação de editores de código de Roben Kleene.

Atualmente estou usando o Geany, mas é porque atende aos requisitos que tenho. Com Geany, e muita ajuda de Perl/Gimp/Audacity/Sox, sou capaz de desenvolver e manter a base de código Java para os aplicativos Android que desenvolvo, prepará-los para compilação em diferentes configurações para vários distribuidores, fonte, lint , compile, dex e produza arquivos .apk e entregue esses aplicativos globalmente.

Sua linha de desenvolvimento pode prescrever um conjunto diferente de requisitos, e espero ter economizado algum tempo para você pesquisar os editores de programação mais apropriados.

Relacionado: Tutorial do Protocolo do Servidor de Idiomas: Do VSCode ao Vim