Por que os mecanismos de regras não estão escritos em Prolog? [fechadas]


16

Pelo que vi do Prolog, parece que seria ideal para criar um mecanismo de regras para um aplicativo. No entanto, acredito que nunca vi um mecanismo de regras escrito em Prolog. Existe alguma limitação inerente no Prolog (por exemplo, algoritmo de coleta de lixo ruim) que impediria que ele fosse usado para criar um mecanismo de regras?


7
A escada. (quase) ninguém conhece prólogo e ainda mais desenvolvedores não querem saber nada que não faça seu trabalho diário para que possam ir para casa. Infelizmente, Prolog é bem legal.
21713 Jimmy Jimmy -offoff

3
Prolog faz um ótimo edsl embora. Incorporação prólogo em uma linguagem como Haskell ou Scheme é a abordagem que normalmente levam
Daniel Gratzer

3
@JimmyHoffa Isso está diminuindo. Algumas pessoas aprendem prólogo e tentam esquecê-lo proativamente pelo resto de sua vida profissional.
ZJR 16/07

5
Vejo três votos próximos - alguém se importa em me dizer o que há de errado com a pergunta para que eu possa corrigi-la ou retirá-la?
Onorio Catenacci 16/07/2013

2
Votei em fechar como "principalmente baseado em opiniões". Se você pode me convencer do contrário, retrairei meu voto. Pessoalmente, achei o Prolog opaco; Eu esperaria que um mecanismo de regras tivesse uma sintaxe mais intuitiva para definir regras. E é uma linguagem de programação, não um protótipo de sintaxe para um mecanismo de regras em si.
Robert Harvey

Respostas:


15

Os mecanismos de regras em sua infância foram escritos quase exclusivamente em Prolog - era a linguagem lógica. Para um pequeno conjunto de regras, eles funcionaram muito bem. Porém, eles não foram muito bem dimensionados. Não tenho uma referência definitiva, mas meu entendimento é de que a maneira como o Prolog lida com o encadeamento de regras é ineficiente - o modelo recursivo criado para criar pilhas muito grandes que o levaram a um rastreamento.

O desenvolvimento do algoritmo RETE e seus sucessores permitiu uma maneira mais eficiente de processar grandes quantidades de regras, e assim assumiu.

Talvez o prólogo moderno seja mais eficiente do que nos anos 80, quando a maior parte do trabalho inicial foi realizada.



1
Outro artigo lidar com esta: haleyai.com/wordpress/2013/06/22/...
Matthew Flynn

Pergunta maluca. As pessoas não implementaram o RETE no prólogo, obtendo o melhor das duas palavras? (muito o RETE não faz o prólogo).
user48956

14

Resposta direta: porque se os criadores do Rules Engines soubessem sobre o Prolog (ou Mercury ou PLANNER ou ...) eles não estariam escrevendo o Rules Engines, eles estariam usando o Prolog.


5

Geralmente, o objetivo de um mecanismo de regras é que ele faz parte de outro aplicativo. É bastante raro ver aplicativos escritos no Prolog, e não há uma interface disponível para conectar o Prolog a aplicativos escritos em outros idiomas.

Uma ferramenta baseada em regras para mecanismos de regras, que é gravada para ser adicionada a outros aplicativos, é o CLIPS . O CLIPS foi baseado no OPS5 e usa o algoritmo Rete para regras de remoção.


não é inteiramente verdade, existem algumas interfaces de programas externos para o código Prolog. SWI-Prolog tem uma interface C ++ e uma maneira de conectar-se a R.
Rudolf Olah

3
Na verdade, todos os mecanismos de prólogo que já vi funcionar com C ou C ++, como "ninguém" usam o Proolog para aplicativos completos, mas "todo mundo" tem maneiras de chamar funções C para chamar bibliotecas especializadas. ou seja, GNU Prolog gprolog.univ-paris1.fr/manual/html_node/gprolog065.html
johannes

Obrigado por esse ponteiro @johannes. Eu não conhecia o GNU Prolog; muito menos o fato de que ele pode ser chamado de C.
Onorio Catenacci

Veja também: swi-prolog.org
user48956
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.