Recursos quase mágicos da linguagem de programação Picat
- Picat é uma linguagem de pesquisa que busca combinar programação lógica, programação imperativa e resolução de restrições.
- O módulo
planner do Picat é um dos modelos de programação mais interessantes existentes.
Explicação rápida sobre programação lógica
- Em programação imperativa e funcional, escreve-se um algoritmo que recebe uma entrada e gera uma saída.
- Em programação lógica e resolução de restrições, fornece-se um conjunto de equações e busca-se uma atribuição que satisfaça essas relações.
Definição do problema
- O problema consiste em mover um marcador em uma grade do ponto inicial (origem) até uma coordenada de destino.
- Em cada passo, pode-se mover uma célula para cima, baixo, esquerda ou direita, sem sair dos limites da grade.
- O programa tem sucesso quando o marcador está na coordenada de destino.
Primeira implementação
- Você deve fornecer um estado inicial
Start, uma sequência de funções action que representam transições de estado e uma função final(S) que determina os estados finais.
- Ao chamar
best_plan(Start, Plan), a sequência de menor número de etapas necessária para alcançar um estado final é atribuída a Plan.
Adicionando vários objetivos
- O planejador precisa atingir todos os objetivos em ordem.
- Adiciona-se uma nova função
action que remove o objetivo atingido da fila.
Minimização de custo
- Visitar os objetivos na ordem em que aparecem nem sempre significa o menor caminho total.
- Se você quiser encontrar o menor caminho independentemente da ordem dos objetivos, altere
action para que o planejador escolha o próximo objetivo minimizando o comprimento total do caminho.
Outras variações
- Picat oferece muitas variações de planejamento.
best_plan(S, Limit, Plan) impõe um custo máximo igual a Limit.
sequence(P, Action) limita as ações possíveis com base no plano parcial atual.
Vale a pena usar Picat?
- Picat é uma linguagem de pesquisa e carece de conveniência, como boa documentação ou mensagens de erro claras.
- Picat é mais útil como uma linguagem de "ferramenta" para resolver problemas computacionais específicos.
Apêndice: outras linguagens de planejamento
- O planejamento foi desenvolvido para robótica e IA, mas hoje é usado principalmente em IA de videogames como
Goal-Oriented Action Planning (GOAP).
- PDDL é uma linguagem de descrição de planejamento usada como entrada por um planejador independente.
Opinião da GN⁺
- Inovação no modelo de programação: O módulo
planner de Picat adiciona uma nova dimensão à programação. Isso é especialmente poderoso ao lidar com problemas como busca de caminhos complexos.
- Valor educacional: Picat é importante do ponto de vista educacional de programação. Ele pode ajudar a aprender conceitos de programação lógica e resolução de restrições.
- Resolução de problemas específicos: Picat é útil como linguagem-ferramenta para resolver problemas computacionais específicos. Ele oferece uma nova abordagem para problemas que são difíceis de resolver com linguagens de programação tradicionais.
1 comentários
Discussão no Hacker News
Caso real de uso do modo de planejamento do Picat no trabalho
Informações sobre recursos e exemplos de Picat
Recomendação de Prolog e MiniZinc
Comentário relacionado à entrevista técnica da Firebase
Comparação entre tipos e linguagens de programação
Menção ao GOAP (Goal-Oriented Action Planning)
Avaliação da função planner do Picat
O sonho de informar ao computador o estado final e deixá-lo resolver
Comentário adicional sobre sintaxe parecida com Prolog
true.como uma solução mais elegante do quecomma firstEste resumo reflete opiniões de pessoas diferentes e transmite cada ponto de vista de forma neutra. O conteúdo técnico relacionado a linguagens de programação foi explicado de forma concisa para que engenheiros de software júnior possam entender com facilidade.