Você concorda que algumas linguagens de programação são melhores que outras? Se sim, então uma delas deve ser a melhor. E na verdade é Common Lisp, especialmente agora que LLMs podem escrever código. LLMs escrevem código realmente rápido, e isso muda muito, porque escrever código costumava ser a parte lenta.
Agora a parte lenta é descobrir se seu programa realmente funciona, e antes de poder fazer isso você precisa reconstruí-lo, o que pode levar alguns minutos. Quando humanos escreviam o código, isso não importava muito, porque escrever levava muito mais tempo do que esperar para compilar e começar a executar. Mas agora importa, então quanto tempo seu loop de feedback leva determina quão rápido você pode construir.
Em Common Lisp esse loop quase não existe porque não há uma distinção real entre tempo de leitura, tempo de compilação e tempo de execução (Graham). Common Lisp é baseado em imagem, o que significa que seu programa é uma imagem viva na memória, então uma nova versão de uma função substitui a antiga imediatamente sem precisar reiniciar nada. Além disso, na maioria das linguagens um erro fará seu programa travar.
Então, se você estiver escrevendo código com um LLM, ele terá que ler seus logs de travamento para fazer algumas alterações e executar seu programa novamente. Em Common Lisp seu programa não travará, ele vai parar e abrir um depurador com toda a pilha e todas as variáveis. Você pode simplesmente apontar seu LLM para o depurador, e ele fará sua correção e retomará o programa.
Para o meu conhecimento, Common Lisp é a única linguagem de uso geral que faz tudo isso. Lisp significa "Processamento de Listas". Em Common Lisp, o código é escrito como listas.
Por exemplo, (+ 1 2) é um programa que soma dois números, mas também é apenas uma lista de três coisas: o símbolo +, e os números 1 e 2. O que é interessante é que esse é o mesmo tipo de lista que Common Lisp usa para armazenar dados, e como a linguagem é construída em torno do processamento de listas, todas as suas ferramentas para trabalhar com dados também funcionam no código. Então um programa pode pegar outro programa e modificá-lo, por exemplo ele pode transformar (+ 1 2) em (* 1 2), e executar o resultado imediatamente.
Isso é o que torna os macros possíveis. Um macro é uma função que pega seu código e retorna novo código no lugar dele, o que significa que você pode adicionar novas construções à linguagem mesma. Uma vez que você pode adicionar à linguagem, você pode construí-la em direção ao seu problema.
Então em Lisp você não apenas escreve um programa, você escreve uma linguagem para seu domínio e depois escreve o programa nessa linguagem. Isso importa muito mais agora, porque o que torna um programa valioso são as opiniões por trás dele. E estamos caminhando para um mundo onde empresas de software deixam seus usuários alterarem o produto por conta própria, já que com um LLM isso é fácil.
Então, se uma empresa constrói uma boa linguagem de domínio opinada para seu produto, tudo o que seus usuários construírem em cima dela será muito melhor, porque eles começam com as opiniões da empresa e não do zero. Pegue um ERP. Cada empresa o executa um pouco diferente, então quase todo mundo acaba precisando alterá-lo.
Mas se o ERP for escrito em sua própria linguagem de domínio, você pode simplesmente pedir a um LLM para fazer a mudança nessa linguagem. A mudança seguirá naturalmente as opiniões subjacentes da linguagem de domínio, então ela se encaixará no produto em vez de quebrá-lo. E não é apenas melhor, também é mais barato.
Programas Lisp geralmente são muito mais concisos porque macros permitem que você abstraia padrões recorrentes e os torne parte da linguagem mesma. Então, quanto maior o programa ficar, maior será a diferença. Na minha experiência, os apps que eu construí em Common Lisp terminam sendo cerca de seis a sete vezes mais curtos que as versões em Python.
Para LLMs, menos código significa menos tokens, e tokens são o que você paga, então você gasta menos no desenvolvimento. Também significa que uma parte maior do seu programa pode caber na janela de contexto do LLM. Se seu LLM tiver todo o seu programa na janela de contexto, então ele terá uma visão completa da sua intenção, o que o leva a tomar melhores decisões.
Na minha experiência, muitos bugs de LLM surgem porque ele muda uma parte do meu programa sem ver o resto. Então, com Common Lisp isso acontece com menos frequência. Common Lisp é a única linguagem de uso geral que faz tudo isso.
Fonte: Hacker News · Resumido por HeadlinesBriefing