Olá, sou um desenvolvedor front-end com 8 anos de experiência.
Organizei em texto a experiência de ter projetado um compilador de DSL com a ajuda da IA e até publicado um artigo no arXiv.
- Tudo começou da intuição, adquirida ao criar vários SaaS, de que “a mesma estrutura se repete em cada domínio”
- Usei a IA não como assistente de programação, mas como uma ferramenta para tomar emprestado o modo de pensar de especialistas de cada área
- Como o custo do fracasso diminuiu estruturalmente, consegui levar o projeto adiante mesmo depois de refazer a arquitetura quatro vezes
- Ao mesmo tempo, também senti na prática a importância dos 20% restantes que a IA não consegue preencher — a intuição de que “você está fazendo a pergunta errada agora”
É um relato honesto de uma experiência em que senti, ao mesmo tempo, as possibilidades e os limites do uso de IA.
11 comentários
Não sei exatamente o que é linguagem formal, mas
stateecomputedparecem variáveis, eactionparece função — qual é a diferença entre eles? Lendo o texto, às vezes parece que ele desenhou um diagrama de estados, mas também não entendo qual é a relação disso com a parte sobre o domínio se repetir. As palavras que aparecem no texto não são desconhecidas para mim, mas ainda assim ele não flui bem na leitura.Por exemplo, vamos imaginar que estamos criando um formulário de cadastro.
Digamos que, nesse formulário, recebemos nome, gênero, idade e se a pessoa já serviu ao exército, esses 4 itens.
E vamos supor que surja mais uma regra:
"se o gênero for masculino, mostrar uma caixa de seleção e perguntar se já serviu ao exército"
E, se houver um botão de envio, isso pode ser considerado o que normalmente chamamos de modelo de domínio para cadastro de usuário.
Então, nesse caso, nome, gênero, idade e serviço militar são os 4
statedo domínio,a
visibilityda caixa de seleção que pergunta sobre serviço militar é umcomputedderivado do gêneroE o botão de cadastro é onde uma
actioné mapeada.Como eu não escrevo tão bem, acho que não consegui redigir isso de uma forma tão fácil de ler.
Mas podem entender que o conceito em si é parecido com o que expliquei acima.
Não entendi exatamente, mas acho que mais ou menos consigo captar a sensação.
Obrigado.
Gostei muito da leitura. Também do que você escreveu no blog. Não sei se a analogia é adequada, mas fico pensando se isso não segue a mesma linha do motivo de
Hello World!ser o primeiro tutorial de tantas linguagens e, no passado, do processo de aprender desenvolvimento web construindo fóruns e lojas virtuais. Antigamente eu pensava assim: se você tiver técnica suficiente para criar um fórum e uma loja virtual, consegue implementar a maior parte da web. E, no fim das contas, programação é, em última instância, apenas input e output.Acho que a analogia é adequada. Meu projeto também é, na prática, composto apenas por duas coisas: o intent da pessoa e o snapshot.
No fim das contas, eu já pensava que o caminho que meu projeto deve seguir é como calcular a intenção humana (por exemplo, pressionamentos de tecla e cliques do mouse) e fazer com que ela adquira algum significado.
Resumindo, isso quer dizer que foi criada uma mini linguagem que desenha diagramas de estado?
Não, o que mostrei foi um
state diagram, que é uma das formas de visualizar as transições de estado internas do Manifesto.Criamos a máquina de estados determinística como um framework.
Os cálculos dentro do Manifesto Core foram projetados para sempre produzir o mesmo resultado para o mesmo estado e o mesmo comando.
Entendi que você criou uma DSL, mas não ficou muito claro para mim o que seria uma máquina de estados determinística. Fiquei até pensando se também existe máquina de estados não determinística... Enfim, gostei da leitura. Espero que você continue desenvolvendo isso muito bem.
Ah, professor, sua observação está correta. A máquina de estados em si é, de fato, determinística. O que introduzi no manifesto é baseado em algo não Turing-completo, então não existem laços de repetição dentro da DSL. Graças a isso, é possível calcular como o programa vai funcionar antes mesmo de executá-lo, e explicar por que aquele resultado foi produzido.
Obrigado pela observação!
Li com interesse. Há muitos pontos com os quais me identifico. Empolgante e, ao mesmo tempo, assustador.
Obrigado por ler com interesse.
Ultimamente, tenho pensado muito sobre como devemos viver em meio ao ritmo desta era em rápida transformação.
São tempos que trazem muitas reflexões.