Eu acidentalmente um esquema
Uma postagem de blog brincalhona sobre “criar acidentalmente” uma linguagem parecida com Scheme provoca trocas sobre o que realmente conta como Scheme, abordando a regra de Greenspun e as origens do JavaScript como um Scheme que teria sido executado no navegador, limitado por decisões de marketing e sintaxe. Os comentaristas desvendam o título baseado em meme e sem verbo para leitores não familiarizados com gíria da internet, além de compartilhar recursos, anedotas e opiniões sobre aprender e usar vários dialetos Lisp, como Common Lisp, Scheme, Clojure, Janet e Racket. O fio destaca tanto o poder conceitual quanto as peculiaridades culturais das linguagens da família Lisp, de sistemas de macros e coleta de lixo ao prazer (e à dor ocasional) de escrever compiladores e interpretadores por diversão.
Título, Memes e Gramática Ruim Deliberada
- Muitos comentários perguntam sobre o verbo ausente em “I accidentally a scheme.”
- Outros explicam isso como um velho meme da internet (“I accidentally [verbo ausente] X”) e o conectam a memes semelhantes (“one does not simply…”, estilo LOLcat).
- Vários falantes de ESL acham esse uso confuso ou irritante; outros argumentam que ele sinaliza um tom brincalhão e informal e é trocadilho intencional, não um erro.
- Alguns o dissecam linguisticamente (verbo omitido, piada de advérbio-como-verbo, efeito de caminho de jardim).
O que Conta como um Scheme (e a Relação do JavaScript com Ele)
- Debate sobre se JavaScript é “um Scheme”, “influenciado por Scheme” ou nem sequer Scheme.
- Um lado diz que Scheme é bem definido (pelos seus relatórios), então o JS inicial não se qualifica.
- Outros observam que designers de linguagens respeitados chamaram JS de um Scheme, e argumentam que a taxonomia é nebulosa e um tanto vazia.
- Anedotas históricas: o JS foi inicialmente pensado como Scheme no navegador, depois alterado por gestão e marketing; descrito como “Lisp em roupa de Java”.
- A regra de Greenspun é invocada: sistemas complexos/DSLs tendem a “accidentally a Scheme” com o tempo.
S-Types e S-Expressions
- Um comentarista lembra de obscuros “S-types” de um estágio de pesquisa: essencialmente S-expressions bem especificadas usadas como formato de intercâmbio de dados.
- Outro relaciona isso à sintaxe padronizada de S-expression para sistemas criptográficos (SPKI/SDSI); surpreendido que a especificação tenha sido revivida.
Aprender e Usar Lisp
- Forte entusiasmo por aprender um Lisp; muitos dizem que programadores Lisp parecem se divertir mais.
- Recomendações:
- Common Lisp: rápido, maduro, ferramentas poderosas.
- Clojure: boas perspectivas de emprego; ensina imutabilidade e composição elegante; sites de quebra-cabeça são elogiados.
- Racket: citado como especialmente agradável.
- Janet: leve, embutível; comunidade divertida, mas sem cons cells tradicionais, o que a faz parecer menos “lispy” para ზოგიuns.
- Várias pessoas recomendam SICP e suas aulas.
- Projetos “write your own Lisp” (como MAL) são sugeridos como caminho de aprendizado, mas outros alertam que inventar seu próprio dialeto em isolamento pode limitar a compreensão da cultura e dos conceitos mainstream de Lisp.
Detalhes de Implementação, GC e Estruturas de Dados
- Discussão sobre REPLs, desenvolvimento orientado a imagens e restarts como partes centrais da experiência Lisp “divertida”.
- Alguns não gostam do modelo de imagem/distribuição do Common Lisp; outros contornam isso com fluxos de trabalho orientados a source.
- O foco de Janet em arrays/tuplas provoca um debate de desempenho entre listas encadeadas e arrays; alguns argumentam que listas encadeadas raramente são a resposta certa, outros enfatizam trade-offs dependentes do problema.
- Coletores de lixo são brevemente discutidos: um comentarista é amplamente hostil ao GC, outros mencionam interesse em GCs alternativos (por exemplo, Whiffle) e em testar GCs em outros projetos.
Estilo de Escrita do Artigo Vinculado
- Vários elogiam a prosa do ensaio como brincalhona, densa e “pomposa no bom sentido”.
- Alguns observam que esse estilo é delicioso para blogs, mas seria ruim para documentação técnica.