Steve Yegge escreveu um comentário em seu blog :
Todos os maiores engenheiros do mundo usam o Emacs. Os tipos de mudança de mundo. Não é a grande garota no cubo ao seu lado. Não Fred, o cara incrível do outro lado do corredor. Estou falando dos maiores desenvolvedores de software de nossa profissão, aqueles que mudaram a cara da indústria. Os James Goslings, os Donald Knuths, os Paul Grahams, os Jamie Zawinskis, os Eric Bensons. Engenheiros de verdade usam o Emacs. Você tem que ser muito esperto para usá-lo bem, e isso o torna incrivelmente poderoso se você pode dominá-lo. Vá olhar por cima do ombro de Paul Nordstrom enquanto ele trabalha algum dia, se você não acredita em mim. É realmente uma grande surpresa para alguém que usou IDEs do Visual Blub .NET durante toda a sua carreira.
O Emacs é o editor de 100 anos.
A última vez que usei um editor de texto para escrever código estava de volta quando eu ainda escrevia HTML no bloco de notas há cerca de 1000 anos. Desde então, sou mais ou menos dependente do IDE, tendo usado o Visual Studio, NetBeans, IntelliJ, Borland / Codegear Studio e Eclipse por toda a minha carreira.
Por que vale a pena, eu tenho tentado Emacs, e minha experiência foi um frustrante devido à sua completa falta de out-of-the-box características detectáveis. (Aparentemente, existe um comando do Emacs para descobrir outros comandos do Emacs, que eu não consegui encontrar por sinal - é como viver sua própria piada cruel do tipo zen.) Tentei me fazer gostar do programa por um bom mês, mas eventualmente decidiu que preferia ter designers de GUI de arrastar e soltar, IntelliSense e depuração interativa.
É difícil separar fato de fanboyismo, então não estou disposto a considerar os comentários de Yegge pelo valor de face ainda.
Existe uma diferença mensurável em habilidade, produtividade ou prazer de programação entre pessoas que dependem de IDEs e aquelas que não, ou é tudo apenas fanboyismo?
fonte
Respostas:
Primeiro, deixe-me dizer que sou um verdadeiro crente professo no culto do Emacs.
Dito isto, o blogueiro é louco. Você escreve o que acha útil. Acho que o Emacs me ajuda, principalmente porque passei meus anos de faculdade pagando antecipadamente o custo inicial de aprender a modificá-lo para atender às minhas necessidades e me modificar às suas necessidades.
Mas outras pessoas fazem as coisas de maneira diferente, e como dizem "Tudo bem".
fonte
Ele (Steve Yegge) elaborou isso, em pedaços, em outras postagens dele. http://steve-yegge.blogspot.com/2008_04_01_archive.html é provavelmente o mais abrangente, mas as informações estão ocultas, pois são tangentes ao assunto principal.
Eu suponho resumir: os programadores meramente bons ou competentes escolherão um IDE e o conhecerão muito bem, e talvez o façam decentemente o suficiente, mas se restringirão ao que o IDE fornece para eles. Em outras palavras, eles se adaptam ao IDE. Os grandes programadores, por outro lado, adaptarão seu ambiente para se adequarem a si mesmos , como escrever scripts ou suas próprias ferramentas, ou estender suas ferramentas. E até esse último ponto, não apenas o Emacs é o ambiente mais extensível que existe, mas também o mais fácil ambiente de estender, e é o ambiente onde você obtém mais benefícios de estendê-lo - suas extensões se integram ao Emacs como se fossem recursos padrão e, portanto, suas futuras extensões podem se basear nas anteriores (tipo de loop de feedback positivo).
fonte
Os melhores programadores usam vi ou emacs, porque os programadores mais experientes são os melhores e, há 20 anos, não havia muita escolha, exceto vi e emacs.
Depois de iniciar o vi (ca. 1987) em uma máquina com um terminal de texto muito lento, converti para o (GNU) Emacs depois de alguns anos (em uma máquina mais rápida) e o usei quase exclusivamente por quase 10 anos.
O Emacs foi o primeiro ambiente de desenvolvimento verdadeiramente integrado - todo o ciclo de edição / link / compilação pode ser controlado no emacs e você pode criar o seu próprio para qualquer compilador usado.
Atualmente, IDEs como o eclipse são ainda mais integrados (para ser honesto: o emacs é péssimo em gráficos), mas o Emacs ainda é um dos melhores ambientes para edição de texto "pura".
fonte
Melhorar seu pensamento claro e a resolução de problemas fará de você um programador melhor. Nenhum programa pode fazer isso.
Usar um martelo melhor não vai me ajudar a construir uma casa melhor, a menos que eu saiba como e por quê. ;)
fonte
Yegge precisa conhecer Bill Joy. Além de ser um dos grandes programadores do mundo, ele também escreveu grandes partes do vi. No vi.
Confissão vergonhosa curta: Após 20 anos usando o vi (e vim / gvim nos últimos anos) para tudo, no último ano, mais ou menos, comecei a usar o Eclipse para edição em java (e o Thunderbird para e-mail), embora no meu trabalho atual meu A máquina tem tão pouca memória que eu normalmente uso o vi, exceto quando preciso do depurador.
fonte
Vamos restringir isso ao Visual Studio vs. Emacs --- a questão é muito ampla de outra forma, e suspeito que a maioria das pessoas (pelo menos aqui no StackOverflow) esteja familiarizada com esses dois. [Sou, uso e prefiro o emacs]
Em seguida, vamos detalhar os três componentes da pergunta.
O prazer da programação se resume a gostar principalmente da programação em si mesma e, secundariamente, a não aparecer fatores de aborrecimento quando você faz isso. O uso de ferramentas com as quais você luta vai subtrair do prazer. Então, eu suponho que o prazer é provavelmente maximizado usando ferramentas que você gosta e que conhece.
Obviamente, quando você se familiarizar com uma nova ferramenta, poderá achar que gosta mais dessa ferramenta e, portanto, gostará de programar mais se fizer isso com sua nova ferramenta favorita. Não está claro para mim que as pessoas em geral gostem do VS sobre o emacs (ou vice-versa) quando os conhecem bem.
Em seguida, habilidade de programação. Se houver alguma conexão entre a habilidade e a escolha do VS / emacs, acho que é a habilidade que causa a escolha, e não a causa da habilidade. Na minha experiência, nenhum dos {VS, emacs} parece me fazer aprender algo sobre como escrever código melhor .
Uma boa ferramenta pode me permitir escrever o mesmo código (e, portanto, a mesma qualidade de código) em quantidades menores de tempo; se assumirmos isso
productivity = quality of code `times` code per time
, é lógico que qualquer editor que permita escrever um bom código em menos tempo é um aumento de produtividade.Talvez eu não esteja familiarizado com o VS, mas aqui acho que o emacs tem alguns pontos fortes que não encontrei no VS. Pode parecer ridículo, mas algo tão simples quanto o movimento do cursor com
Ctrl-[fbnp]
é um benefício real - significa que você não precisa mover as mãos para as teclas de seta. Outra coisa: você pode fazer uma pesquisa ou substituição que inclua novas linhas, que eu uso com frequência suficiente para odiar.Outra coisa de que gosto é a capacidade de incorporar um shell no meu editor. Na minha experiência, é muito mais valioso em plataformas não Windows (e minha primeira experiência em "programação", o IIRC, estava escrevendo arquivos DOS .bat, por isso não sou apenas um fanboy em chamas), mas nessas plataformas é uma grande vitória . Faz com que o emacs "integre" a "tudo" (pesquisa de arquivos com localização / localização, pesquisa de texto com grep, controle de versão com svn / git / hg / ..., o que você quiser).
Veredicto final - você deve aprender emacs ou não? E é tudo fanboyismo? Se você tiver tempo, eu diria que sempre vale a pena aprender novas maneiras de fazer a mesma coisa, porque a nova maneira pode funcionar melhor para você. E eu encorajo você a não rejeitá-lo pelo que parece ser quando você é novo nele. Nesse sentido, é como mudar para o layout do teclado Dvorak: você é mais lento no início, mas, quando acelerar, é provável que seja pelo menos tão rápido quanto no qwerty e mais confortável. Eu recomendo a mesma abordagem para aprender novas linguagens (de programação): porque você não conhece o vocabulário (biblioteca padrão), dizer que as coisas são difíceis, mas a recompensa ainda está lá no horizonte esperando por você.
fonte
Com o texto citado começando "Todos os maiores engenheiros do mundo usam o Emacs", eu também não aceitaria isso pelo valor nominal. Ele conhece todos os maiores engenheiros do mundo? É a mesma lista dos maiores engenheiros do mundo que você ou eu temos?
Uma vez aprendido, um editor poderoso como o EMACS ou o vi o tornará mais eficiente, ou pelo menos mais eficiente, se você for pego sem o seu IDE favorito.
É a parte "uma vez aprendida" que é o assassino. É muito trabalho e prática usar essas ferramentas de forma produtiva, e é muito difícil no começo.
fonte
Eu sou um fanboy do Emacs, pessoalmente, mas o Emacs é apenas uma ferramenta. Não fará de você um programador melhor, assim como uma caneta super sofisticada o tornará um escritor melhor.
O esclarecimento de que "grandes programadores" adaptam seu ambiente a si mesmos pode ter algum mérito, mas muitas ferramentas podem fazer isso (por exemplo, vim e SlickEdit), então não há nada em particular no Emacs a esse respeito.
Acho que o mais provável é que os "grandes programadores" sejam apaixonados por programação e as pessoas apaixonadas por isso tendem a encontrar ferramentas que ajudam a impulsionar essa paixão. O Emacs (e vim e SlickEdit, et al) é uma ferramenta desse tipo.
fonte
Não acredito que haja diferença, é mais uma questão de preferência.
No entanto, o que eu notei é que quanto mais você codifica, ou no nível inferior, maior as chances de você usar o emacs ou vi.
fonte
Embora os IDE tenham melhorado muito na última década, eles ainda contêm a programação em uma "bolha" um pouco segura, longe de alguns dos detalhes mais feios. O que tende a acontecer é que esse aumento na abstração permite que mais programadores façam mais, com menos conhecimento. Isso, é claro, não se aplica a todos os programadores, mas ferramentas mais fáceis levam a programação a um público mais amplo.
Mais conhecimento de ferramentas de nível inferior, muitas vezes se traduz em mais estabilidade no código, pois há menos chances de "ir contra a corrente" acidentalmente. É injusto apenas listar o EMACS como o único indicador líder, pois ele vem de uma variedade de idiomas e ferramentas, e realmente é mais sobre a profundidade do entendimento, não sobre a tecnologia específica.
No caminho de volta, você aprendeu VI ou EMACS nas caixas UNIX ou se especializou em PCs (OK, também havia VMS, CMS, AS400 etc., mas essas eram tecnologias mais antigas). Ambos os fluxos atraíram pessoas muito interessadas, mas o pessoal do UNIX tendia a querer uma solução sofisticada, enquanto o pessoal do PC só queria que fosse feito rapidamente. As culturas eram muito diferentes.
fonte
Os IDEs da IMHO tendem a ser otimizados em torno de uma plataforma, linguagem ou sistema operacional específico: o Eclipse JDT é ótimo para Java, o Visual Studio é centrado em C ++ / .NET, etc. Eles ajudam muito a produtividade (novamente IMHO) se você estiver trabalhando apenas em nessa plataforma, mas se você mudar de plataforma, precisará basicamente aprender um novo IDE (ou pelo menos um novo conjunto de plugins, visualizações, perspectivas e não sei mais o que fazer para o Eclipse).
A vantagem de conhecer o emacs, ou Textmate, ou vim (minha preferência pessoal) ou qualquer editor genérico , é que as habilidades que você adquire nesse editor se aplicam independentemente da plataforma para a qual você está escrevendo. Eles são otimizados para editar texto e, depois de dominá-los, você pode editar o texto com muita eficiência em qualquer idioma.
Há também a afirmação de Yegge de que grandes programadores adaptam suas ferramentas ao seu estilo de trabalho em vez de vice-versa. Eu acho que isso é uma vitória para editores genéricos, porque você personaliza um editor, em vez de precisar descobrir como adaptar quatro IDEs diferentes para que todos se comportem da maneira que você deseja.
fonte
C-[npfbaed]
. (Mas, infelizmente, nãoM-
)Eu diria que os melhores programadores tendem a ser os que demoram para personalizar seu ambiente, tornando mais rápido / fácil executar as tarefas que provavelmente executarão. O Emacs é um dos editores mais poderosos quando se trata de personalizar seu ambiente. Ele tem uma curva de aprendizado acentuada, mas, depois que você passa por isso, praticamente não há limites para o que você pode fazer por você.
Alguém disse uma vez que os melhores programadores são os preguiçosos; os que, uma vez que precisam fazer algo mais de uma vez, encontram uma maneira de automatizá-lo para que seja preciso menos esforço. O Emacs permite que você seja muito, muito preguiçoso;)
fonte
Eu usei IDEs desde o início (sem dúvida; tendo começado com QBASIC) e por muitos e muitos anos. Agora mudei quase completamente para o VIM (em diversos sabores) para todo o meu trabalho de desenvolvimento e não me arrependo. Minha produtividade aumentou definitivamente.
Obviamente, nada substituirá o designer do Windows Forms do Visual Studio. Mas comparado ao VIM (e ao Emacs, tenho certeza), o editor de texto dentro do Visual Studio é realmente péssimo. Depois de aproveitar o poder bruto do console e das ferramentas de desenvolvedor GNU (com o que quero dizer
make
, GCCbinutils
egdb
, e mais algumas), você perceberá que essas ferramentas podem parecer primitivas, mas são exatamente o oposto, e realmente oferecem tudo as ferramentas que um IDE fornece (bem, exceto pelo designer de formulários).É só que você tem uma subida muito íngreme pela frente quando começa a usar essas ferramentas, e o incentivo pode ser pequeno. Eu tive a sorte (?) De ser forçado a usar essas ferramentas para não ter uma escolha da qual pudesse me basear.
fonte
Pessoalmente, acho que você deve usar o que o torna mais produtivo. Se você não tem tempo para investir em um projeto para se sentar e aprender o Emacs, provavelmente não é o melhor uso do seu tempo nesse momento.
No entanto, sinto que é uma boa ideia conhecer outros IDEs quando tiver tempo suficiente. Eu uso o Visual Studio no meu dia-a-dia, mas em casa eu uso o Eclipse para pequenos projetos e utilizei Emacs também. No momento em que eu considerei usar o Emacs, meu esforço foi melhor servido para realizar o trabalho real do que diminuir a velocidade na luta com o Emacs.
Eu acho que até certo ponto é absurdo pensar que todos os melhores programadores usam o Emacs. Existem muitos programadores incríveis que não são tão populares (ou vocais, talvez) que não usam o Emacs.
fonte
Comecei a usar o Emacs há cerca de um ano e meio, porque era a confluência de vários desejos - queria trabalhar com expressões regulares (em um editor que os apoiava), queria aprender cocô, queria um editor melhor.
A edição do meu código com expressões regulares me ensinou muito sobre como encontrar padrões no código. As teclas levaram um tempo para se acostumar, mas eu voo muito mais rápido sem o mouse.
O Emacs me deu a capacidade de continuar trabalhando com minhas anotações e codificação no mesmo aplicativo - troca de contexto mínima significa troca de cérebro mínima e posso manter o foco na tarefa em questão.
fonte
Não. Um bom código faz de você um programador melhor.
Dito isto, uma boa manipulação de texto é essencial para a eficiência. O vim ou o emacs mudarão a maneira como você trabalha com texto - ambos são comprovadamente eficazes, mas estão quase em desacordo em termos de estilo. Além disso, esse debate é bastante antigo (nos anos 80 e 90, onde o texto -> compilador era a chave), então existem muitos outros editores de texto e / ou IDEs que podem ajudá-lo a ser o melhor programador possível.
fonte
Não. Se você acredita que usar o emacs o torna um programador melhor, você está confundindo causa e efeito.
Eu uso diariamente, no entanto. Acho que sou mais produtivo com o emacs + maven do que com o Eclipse para o desenvolvimento de java (embora eu ainda inicie o Eclipse de vez em quando para fazer uma sessão ocasional de refatoração ou depuração).
Estas são as minhas razões:
fonte
Para mim, a principal razão pela qual escolhi o Emacs em vez de um IDE é porque ele me permite fazer tudo, desde apenas o meu teclado. Isso é bom, pois economiza algum tempo para quando eu usaria normalmente um mouse. Além disso, como me sinto muito móvel, tenho a tendência de interromper minha programação "groove" devido ao uso do meu touch pad lento. Além disso, sua personalização faz brilhar alguns IDEs para mim. No entanto, se você se programar rápido o suficiente com um IDE, diria que a curva de aprendizado do Emacs não vale a pena.
fonte
Existe uma diferença mensurável em habilidade, produtividade ou prazer de programação entre pessoas que dependem de IDEs e aquelas que não, ou é tudo apenas fanboyismo?
Eu não acho que você poderia realmente obter uma resposta para isso. Existem muitas maneiras diferentes de medir a habilidade, a produtividade e o prazer da programação - e todas elas são provavelmente muito subjetivas e / ou não podem ser divididas em UMA coisa que a causa ou não.
Ainda é uma pergunta interessante.
Minha crença pessoal é - depende do programador :)
G-Man
fonte
Eu não acho que isso faria de você um programador melhor, mas quando você tiver esse nível, provavelmente usará o emacs (ou vi)
: - /
A coisa boa sobre esses dois (eu nunca usei o emacs antes, mas ainda uso o vi para a tarefa mais banal) é o fato de que eles não interrompem sua linha de pensamento , você não precisa tirar as mãos das mãos. o teclado para pegar o mouse e procurar no menu arquivo a opção correta. Você apenas continua escrevendo. Dentro de sua mente, você diz algo como: "Substitua todas as ocorrências desta palavra por isso", pressione enter e continue com seu trabalho.
Além disso, não acho que eles usem o emacs é sua única ferramenta.
Isso faria de você um programador melhor? Provavelmente não. Mas quando você tiver esse nível de especialização, provavelmente gostará da rapidez com que consegue codificar usando essas ferramentas.
fonte
Não.
Disciplina, pensamento crítico e desejo de auto-aperfeiçoamento farão de você um programador melhor. Seu conjunto de ferramentas, embora seja um fator importante em sua produtividade, não criará genialidade.
Se você não gosta do emacs ou vi, não os use. Ao fazer a escolha consciente de não fazê-lo, você está moldando seu ambiente de desenvolvimento para atender às suas próprias necessidades e práticas de trabalho. De qualquer forma, você pode usar o que quiser - e ignorar qualquer um que seja tolo o suficiente para repreendê-lo pela ferramenta usada para gravar bits no disco - são os bits que importam.
Nota: "Conjunto de ferramentas" aqui significa, literalmente, a "marca" de ferramentas - editores específicos, compiladores, etc. Conjuntos de ferramentas conceituais, por exemplo, o uso de controle de versão, teste de unidade - todos em geral - fazem parte do auto- processo de melhoria.
fonte
Uma das grandes características do emacs é que ele pode lidar com praticamente qualquer tipo de arquivo, de qualquer tamanho. É certo que, se você estiver abrindo um arquivo criptografado enorme e louco, ele não será necessariamente útil, mas será aberto. A maioria dos editores (e IDEs) causará muita dor de cabeça se você entregar um arquivo muito grande e / ou não um dos formatos esperados.
Tente abrir um arquivo de 1 gig no bloco de notas, por exemplo.
Comecei a usar o Emacs em algum lugar por volta de 1980 e sempre foi uma ferramenta na minha caixa de ferramentas. Não é a única ferramenta, mas é sempre algo a que posso recorrer e saber que poderei realizar algum trabalho útil.
Comentário inflamatório obrigatório : por outro lado, não tenho nada de bom a dizer sobre vi. Eu sempre achei que vi me mataria feliz e venderia meus órgãos apenas por maldade ...
Na vida real, uso o Netbeans para quase todas as formas de desenvolvimento e uso o emacs de vez em quando para fazer uma edição rápida. Não há quase nada lá fora que seja tão conveniente quanto o emacs (para mim) quando se trata de fazer algo maluco agora.
Alguém mais tem que editar seqüências de caracteres estáticas em executáveis binários compilados? Existe uma ferramenta melhor para esse tipo de coisa do que o emacs? Certamente funciona para mim.
fonte
Eu sei que você não perguntou isso, mas uma coisa que aprendeu emacs (inesperadamente) melhorou para mim foi manipular uma linha de comando. Antes de aprender as combinações de teclas do emacs, movia o cursor e navegava no histórico usando as teclas do cursor, porque não conhecia melhor. Foi um momento de bulbo em que eu percebi que poderia usar
backward-word
,move-beginning-of-line
ebackward-kill-word
(ao qual sempre me vinculeiC-w
, como Stevey sugere ) embash
(M-t
geralmente é útil também, e mais impressionante para quem nunca viu isso antes).Eu trabalho bastante no Solaris, onde o shell raiz é "o posix shell" e, por padrão, não possui ligações do emacs. Acho que meus dedos agora são do tipo que
exec bash
eles querem, toda vez que faço login, me sinto muito mais rápido com os agora familiares comandos de edição sob meus dedos.Devo admitir, no entanto, ainda acho os livros de Knuth difíceis (embora valham a pena) - então não acho que tenha melhorado magicamente minha programação.
fonte
O Emacs me tornou mais eficiente na manipulação de texto e na navegação do sistema de arquivos. E como essas duas coisas estão envolvidas quando eu programa, isso me tornou um programador mais eficiente (portanto melhor).
fonte
Eu acho que o Emacs pode torná-lo um programador melhor, embora indiretamente. Acho que o Emacs me levou a escrever em uma linguagem funcional ( Elisp ), que me interessou em outras linguagens funcionais ( Clojure ), que me disseram que me farão um programador melhor. Dito isto, suponho que o tempo dirá.
fonte
Ser capaz de usar algum editor personalizável permite que você faça coisas bacanas, mas o emacs em particular não é necessariamente o melhor possível. Eu também sou usuário do SlickEdit, faço as mesmas coisas meio automatizadas e estranhas pelas quais o emacs é famoso. Eu já vi pessoas fazerem coisas semelhantes com o vi e vários editores baseados no Windows.
Então, sim, os conjuntos de soquetes são bons, mas argumentar que o Craftsman cria o conjunto de soquetes verdadeiros é meio idiota.
fonte
O domínio das ligações de teclas do Emacs e de suas funções integradas permitirá que você manipule o texto mais rapidamente do que os IDE, como Eclipse ou Visual Studio.
Não aceite minha palavra, confira estes vídeos de profissionais usando o Emacs .
Depois de chegar a um nível decente no Emacs, você pode efetivamente editar qualquer linguagem: Java Script, Java, Ruby, Python, HTML, C, C ++, etc.
Começar com o Emacs é uma dor de cabeça, a experiência imediata é pior do que ruim. A configuração padrão do Emacs não expõe o novato do Emacs aos recursos mais poderosos (expansão hippie, etags, yasnippets etc.) do Emacs. Sugiro começar com os arquivos de ponto do Emacs Starter Kit .
Outra razão pela qual Steve Yegge afirma que os melhores programadores do mundo usam o Emacs é o elisp. Elisp permite ao programador experiente o poder de expandir facilmente o Emacs. Escrever uma extensão no Eclipse ou Visual Studio é significativamente mais difícil do que escrever uma função rápida ou até mesmo um novo modo secundário no elisp.
fonte
Eu acredito que é um grande equívoco que o uso desses editores baseados em texto, como VI e Emacs, seja altamente considerado ou necessário para se tornar um "grande programador". Eu sempre achei que os IDE são mais poderosos do que costumavam ser, e realmente se resume a uma preferência e estilo.
fonte
Eu usei emacs na faculdade. isso foi cerca de 16 anos atrás. Eu não olhei para trás. Embora eu ainda queira me sentir confortável com o emacs, a verdade é que sou bastante produtivo com meu MS IDE.
o texto que você postou é apenas um troll. Sim. Nenhuma outra razão para isso além de iniciar uma guerra religiosa.
fonte
Comecei com o emacs, mas mudei para o vi, que para mim é mais elegante por causa da simplicidade. Além disso, se você estiver preso no modo de usuário único, os comandos ed serão um subconjunto dos comandos vi. Não sei se o emacs pode lidar com isso.
Então, nesse aspecto, acho que o vi faz de você um programador melhor.
fonte