Por que (não) programação lógica?


13

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?

Respostas:


8

Fora da academia ... eu ouvi falar disso mais usado em IA, às vezes em jogos (ouvi dizer que ele dirigia a IA na série Black & White). Também ouvi falar de variações usadas para executar mecanismos de regras para certos negócios e simulações econômicas.

Minhas suposições por falta de adoção generalizada são:

  • É estranho - a maioria das pessoas não está acostumada a programar nele e pode fazer o que precisa em outros idiomas.
  • Falta de suporte do fornecedor - se a Microsoft de repente começar a pressionar o Prolog # (com todo o peso da biblioteca e conjunto de ferramentas .NET e suporte formal por trás) como The Next Big Thing - e a IBM e a Oracle apareceram com algo para competir, aposto que você veria pegar!
  • Falta de integração - não sei quais bibliotecas estão disponíveis para o Prolog - por último, verifiquei que não havia muitas bibliotecas gráficas ou de rede, o que significa que um "aplicativo" do Prolog precisa ser empacotado em outro aplicativo que interaja com o restante do mundo.

"um aplicativo" Prolog "precisa ser agrupado em outro aplicativo que interaja com o resto do mundo". Isso foi realmente um recurso para nós. Poderíamos isolar mais facilmente os bits de prólogo porque a interface era muito simples.
31511 S.Lott

@ S.Lott: Ok, posso ver que isso também é positivo, embora quando eu estava na escola e queria realmente fazer uma inscrição no Prolog, achei o encanamento e a fiação entre as peças um grande desafio e obstáculo.
FrustratedWithFormsDesigner

5

Nós o usamos para criar analisadores. Era mais fácil trabalhar com o que lex / yacc.

Por que não está recebendo nenhum uso detectável do setor?

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.

b = a + 1
if a > b: # always False

Esse tipo de pensamento obscuro coloca você em problemas no prólogo.


2

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 ++.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.