Estou pesquisando linguagens de programação usadas para programação de IA. Eu sei que o LISP é ensinado como uma linguagem de programação de IA na minha universidade, mas o Prolog raramente é. Eu gosto de Prolog, mas não sou um programador de IA, então não acho que estou qualificado para julgar por que o Prolog é melhor que o LISP / Scheme. Fiquei me perguntando se os programadores tinham alguma entrada sobre este tópico.
Como você poderia argumentar que o Prolog seria mais útil para a programação de IA?
Eu tenho pesquisado um pouco, e o argumento básico que eu tenho visto repetidamente é que, como os pensamentos são apresentados na lógica, e o Prolog é uma linguagem de programação lógica, o Prolog pode construir máquinas de decisão facilmente, ou algo nesse sentido.
Há mais alguma coisa que possa ser dita sobre o Prolog na IA?
Respostas:
Do prefácio à Prolog Programming for Artificial Intelligence :
Basicamente, é uma ótima linguagem para expressar vários relacionamentos e objetivos de maneira sucinta, (principalmente) legível e (semi) natural. Um código equivalente, digamos, no Lisps tende a ser mais detalhado e ofuscado em sua intenção, porque você passa muito tempo na coragem e no encanamento de gerenciar e raciocinar sobre relacionamentos.
fonte
Fiz uma introdução ao curso de IA na minha graduação que usava o Prolog para implementar um sistema especialista.
Um sistema especialista é um software usado para resolver um problema muito específico cuja solução depende de um grande número de regras e variáveis.
Por exemplo, você pode imaginar um sistema especialista que diga se você deve levar um guarda-chuva com você quando sai ou não; você forneceria um conjunto de dados (nublado, chovido no dia anterior, em que estação é etc.) e o sistema especialista passaria por regras para fornecer uma resposta (se estiver nublado e chovido) um dia antes, você deve levar um guarda-chuva).
A natureza do Prolog torna muito simples a implementação de regras e fatos (no Prolog, tudo é uma regra ou um fato) e, em seguida, "consulta o banco de dados" (obtenha uma resposta para sua pergunta), mesmo quando você tem milhares dessas regras e fatos .
Se você estiver interessado no tópico, eu recomendo que você instale um intérprete Prolog e tente implementar um sistema especialista muito básico para ter uma idéia dele - ele pode ajudar a entender por que é uma ferramenta tão poderosa para essas tarefas.
fonte
A diferença é um pouco como usar o SQL para consultas ao banco de dados, em vez de escrever um programa, digamos, C. No SQL, você diz o que deseja - mas não precisa (diretamente) especificar o algoritmo usado para derivá-lo.
Às vezes, um programa Prolog é chamado de banco de dados, mas é realmente um conjunto de instruções lógicas predicadas. O mecanismo de avaliação pega a consulta e executa substituições com base nas instruções lógicas de predicado, fazendo uma pesquisa para encontrar soluções corretas. Todos os algoritmos de pesquisa necessários (muito mais envolvidos do que uma consulta SQL) são incorporados ao compilador Prolog.
Uma consulta SQL, se você implementasse a mesma lógica ingenuamente em C, não precisaria muito mais do que loop e condicionais if / else.
Uma consulta Prolog, implementada em C, precisaria (pelo menos) de uma pesquisa de retorno usando a técnica de união. E isso, novamente, é uma solução ingênua.
Um certo tipo de programação de IA envolve muito do tipo de pesquisa que o Prolog faz. Sem surpresa, realmente - originalmente que a programação de IA foi feita no Lisp ou em alguma outra linguagem, mas o Prolog foi escrito especificamente para fazer o trabalho.
A lógica de predicados é a abordagem natural para definir esse estilo de problema de IA e, no Prolog, depois de ter essa definição, você pode executá-la diretamente, sem ter que implementar todos esses algoritmos de pesquisa desajeitados.
fonte
Tomei 2 módulos de Prolog na Universidade e gostei muito de desenvolver o idioma.
É particularmente bom para sistemas especialistas, escrevi um diagnóstico médico de sintomas.
A maneira como me foi explicado foi que o Lisp tende a ser mais usado em alguns países e o Prolog em outros.
Em termos do que é melhor, eu cobri o Lisp brevemente quando fiz o cálculo lambda em um módulo de Ciência da Computação Teórica, por isso sou inclinado a Prolog.
Se você estiver desenvolvendo um aplicativo para lidar com regras e fatos para obter respostas, o Prolog é muito bom e, naturalmente, suporta o retorno.
fonte