Ainda não ouvi falar sobre nenhum uso de uma linguagem de programação lógica (como o Prolog) na indústria de software, nem sei sobre o uso dela em programas de hobby ou projetos de código aberto. Ele (Prolog) é usado como uma linguagem acadêmica até certo ponto (por que é usado na academia?).
Isso me faz pensar, por que você deveria usar a programação lógica e por que não? Por que não está recebendo nenhum uso detectável do setor?
Nós o usamos para criar analisadores. Era mais fácil trabalhar com o que lex / yacc.
Isso não pode ser respondido. O que significa "detectável"? Quem precisa receber o memorando de detecção?
http://www.meridiansystems.com/landing/ppc/prolog/getvideo.asp
Pergunte à Meridian Software sobre a oferta de prólogo, se você quiser fatos.
No entanto, existem algumas barreiras à entrada que experimentei.
Primeiro, o prólogo pode ser lento. Quando existem muitas regras candidatas e nenhuma operação simples de corte para restringir o espaço de pesquisa, pode demorar um pouco para que algo seja feito.
Segundo, o prólogo não é processual ou funcional; muitos programadores se recusam a usá-lo. (Curiosamente, alguns programadores também se recusam a usar o SQL. Por outro lado, alguns programadores usam relutantemente o SQL e fazem coisas estranhas como evitar operações de junção ou alegar que
COUNT(*)
é magicamente ineficiente.)Terceiro, o prólogo requer um pensamento bem claro sobre quais são os vários casos. A programação processual pode ser desleixada e ainda funcionar de maneira confiável. Instruções não executáveis são aceitáveis.
O seguinte é aceitável na maioria dos círculos.
Esse tipo de pensamento obscuro coloca você em problemas no prólogo.
fonte
Uma questão é que o Prolog não está realmente programando na lógica de predicados de primeira ordem, que é computacionalmente intratável (não me lembro até que ponto, mas não está no NP, e se você adicionar aritmética a ele, é formalmente indecidível). Portanto, é uma simplificação.
Na lógica, uma proposição pode ser provada verdadeira, provada falsa ou não provada de qualquer maneira. O Prolog apenas provou e não provou, "não provado" normalmente significa falso. Além disso, a ordem das cláusulas do Prolog pode afetar a execução, o que não é o caso das cláusulas lógicas. No curso em que o usei, comecei a pensar no Prolog como uma linguagem de correspondência de padrões mais do que uma linguagem lógica.
Portanto, a programação do Prolog depende não tanto da correção lógica quanto da própria linguagem do Prolog. É uma linguagem útil em alguns aspectos, mas não está nem perto do mainstream e não teve os benefícios da ferramenta e da comunidade de uma linguagem como C ++.
fonte