Usuários de Emacs São Como os Igors de Terry Pratchett
1 Texto
Dentro das limitações do ambiente Emacs, não há limites. Emacs é feito em cima desse princípio, o Princípio Lisp. Construa um núcleo pequeno de caracaterísticas. Um substrato. Cuide para que esse substrato seja programável (em qualquer linguagem, Emacs escolheu Lisp), e então construa um sistemna em cima. Deixe os usuários se preocuparem com as características futuras. Umas 359.000 linhas de código C compreendem seu núcleo, e 1.637.000 linhas de Emacs Lisp tomam o restante 1.
Semelhantemente, a natureza da Maldição Lisp é que o que pode ser escrito para expressar qualquer problema dado é tão arbitrário e livre que você é estragado pela escolha, e todo programador reinventa soluçõs para os mesmos problemas, sem se preocupar em compartilhar uma linguagem comum com o mundo lá fora. O problema central é que Lisp torna os programadores egoístas. Dar aos programadores tamanha flexibilidade é convidar à alienação dos outros programadores; Lispeiros pensam "Como eu posso expressar este problema para da melhor maneira para mim?".
este fenômeno não é um problema para o Emacs. Ambientes de trabaçho são uma coisa bastante pessoal. Eles existem para servir uma única pessoa: você. Eu-eu-eu é uma atitude vencedora quando lidando com seu ambiente. Talvez no mundo real, lá fora, onde você tem que compartilhar programas com outras pessoas, onde outras pessoas verão ou mesmo utilizarão seus esforços, você tem que preocupar-se ou tomar consideração sobre outras pessoas. Não em seu ambiente. Não em seu Emacs. Ele é sua casa virtual por pelo menos nove horas do dia, todos os dias.
Meu caminho para o amor pelo Emacs desenvolveu-se lentamente. Eu primeiramente cheguei a ele em razão de Common Lisp. Eu sabia Lisp o suficiente para me virar, copiando pedacinhos de exemplo, configurando o suficiente para editar meu ambiente. Parecia um tanto rudimentar comparado às IDEs que eu usava antes. Mal sabia eu do mundo de funcionalidade ew configuração esperando debaixo de meus pés.
Eventualmente eu comecei emendando algumas coisas aqui e ali, escrevendo meus
próprios ganchos 2, coisinhas assim. Eu
usava Emacs por muito tempo, tornando-me proficiente como usuário com as
sequ~encias de teclas e o gerenciamento de janelas, antes de eu escrever
qualquer Elisp. Não me ocorreu que escrever qualquer Elisp seria de interesse
para mim. Eu geralmente bagunçava minha configuração .emacs e tudo falhava,
e eu não sabia bem por quê.
Finalmente, eu escrevi meu primeiro modo. Eu acho que era para ASP. Não era muito bom, e eu não entendia perfeitamente o que estava acontecendo. mas me deu algumas iluminações-chave. Esta coisa não é um mero editor, é na realidade um ambiente até o tutano. Eu posso configurar tudo sobre esse modo. E o modo consistia de um punhado de funções e variáveis. É tudo código.
Depois disso, foi um verdadeiro foguete de produtividade. Eventualmente eu escrevia Elisp casualmente entre as programações de projetos de trabalho. Eu notava que uma forma de trabalho era repetitiva, oi que o Emacs agia de uma maneira que eu simplesmente não gostava, ou eu simplesmente pensei numa coisa legal que poderia acrescentar. Eu alegremente gastava qualquer coisa entre trinta segundos e meia hora escrevendo alguma funcionalidade para estender minhas instalações de edição.
E estendia para sempre. Isto me maravilhava, e ainda me maravilha. Meus problemas só são problemas enquanto eu não os noto. Uma vez que os noto, eu escrevo algum código Elisp para resolvê-lo, e então ele deixa de ser um problema. Em editores e IDEs típicos, eu simplesmente nem pensaria em consertar tais coisas, quanto mais realmente colocar meu trabalho de lado por um minuto, resolvê-lo, e daí voltar ao trabalho.
Eu agora tenho esrito um monte de Elisp para suportar meu desenvolvimento, especialmente acerca de Haskell. Muitas vezes, por muitos meses uma vez, ao longo dos anos, eu tenho trabalhado em uma característica experimental, ou conjunto de características, modo, seja lá o que, e tem sido bem irregular. Maior parte do tempo trabalhando, mas quuebrando muito, interrompendo meu trabalho, mas comigo perseverando, avançando, até o trabalho tornar-se estável e bastante robusto ao longo do uso bruto e teste em batalha.
Quuando tabalhava recentemente me ocorreu que um monte de funcionalidade que eu dependia presentemente no Emacs para o trabalho era feita em meu próprio trabalho. Eu uso o trabalho de modo sessão/interativo para interagir com Cabal e GHCi, eu uso structured-haskell-mode em conjunção com este, e então em cima disso eu uso god-modemeu próprio método de inserão no Emacs. Uma vez ou outra no passado eles eram todos inutilizáveis, ou quebrados como o diabo. Balançando a cabeça, ainda tenho algumas dores crecentes, mas basicamente está tudo aí.
Isto realmente me lembra do clã Igor de Terry Pratchett. Eu descobri esta amável raça em The Fifth Elephant. Igors são um povo inspirado no típico arquétipo de Igor corcunda, mas em Discworld eles também são auto-modificadores. Seus corpos consistem de partes corporais misturadas e casadas e emendadas e trocadas entre outros membros de seu clã, de cicatrizes e ajustes próprios. Eles estão infinitamente se auto-melhorando, auto-experimentando. Eles podem acabar com um serviço estragado e ter que manquejar por alguns dias, mas ao fim sempre dá para consertar.
E eles lispam 3.
2 META
- Autor: Chris Done
- Link: https://chrisdone.com/posts/emacs-users-are-like-igor/
- Arquivo: http://archive.fo/ZCOaz
Footnotes:
Apesar disso, enquanto Elisp é a linguagem de programabilidade escolhida para o Emacs, a linguagem em particular não importa muito. Poderia ser Python, JavaScript, Haskell, o que seja. A chave é: se a maior parte do conjunto de características é escrita na linguagem de programação do teu editor, então este editor é bem programável.
hook é uma variável Elisp que mantém uma lista de funções, as quais são invocadas em um momento específico
"Lispar" aqui é uma falha da fala, chamada ciciar, em que a pessoa balbucia e pronuncia com erros característicos. Um exemplo típico é o do personagem Dustin, interpretado por Gaten Matarazzo no show Stranger Things.