O Prolog é profissionalmente útil?

15

Eu aprendi Prolog há muitos anos na Universidade. Durante minha vida profissional, nunca precisei usar o Prolog. Perdi algo especial?

Tanto quanto me lembro, o Prolog requer uma mentalidade completamente diferente em comparação com linguagens de programação importantes.

O Prolog é realmente usado para implementar algo profissionalmente útil?

Gursel Koca
fonte
3
Prolog (e poplog) são muito bons para codificação de IA. Se você não está fazendo coisas relacionadas à IA profissionalmente / seriamente, não pode usá-lo. Por exemplo, como um não-engenheiro nunca pode usar o MATLAB a sério.
glasnt
1
Boa pergunta. O Prolog é a primeira linguagem de programação ensinada em linguística computacional na Uni Potsdam, mas depois disso não a usamos muito, mesmo se formos muito bons nisso. É uma pena. Toda vez que vejo uma pergunta como "Como uso um acumulador" ou "Como obtenho todas as respostas possíveis" no StackOverflow, isso me faz pensar onde estão os usuários profissionais reais - a maioria das coisas parece lição de casa. Ou talvez a proficiência em Prolog o transforme em um robô que nunca tenha perguntas.
Felix Dombek 11/03/11
Uma vez ouvi falar de um sistema de detecção de falhas escrito em Prolog e implementado em algum lugar da Áustria (Klagenfurt?) Segundo o que me foi dito, o produto era muito bom e era vendido aos clientes. Se você considera isso "profissionalmente útil", a resposta é "sim".
Giorgio

Respostas:

12

Na minha opinião, aprender o básico do Prolog vale muito a pena, independentemente de você usá-lo no mundo real. Também vale a pena entender as idéias básicas subjacentes à unificação e como uma implementação (trivial e ineficiente) pode ser tratada.

Se você tiver um problema que seria melhor resolvido usando lógica declarativa, idealmente deveria reconhecer isso e saber (se tiver a opção) de usar as ferramentas certas para esse trabalho.

No entanto, concordo que o Prolog precisa de uma mentalidade muito diferente das linguagens imperativas convencionais e também de uma mentalidade muito diferente das linguagens funcionais. Além de um certo ponto, parece exigir muita experiência (assim como com qualquer coisa), e há ainda muito conhecimento em "livros didáticos" que faz meu cérebro escorrer pelos meus ouvidos.

Minha impressão é ... estamos provavelmente tanto especial algo que falta a um grau, mas não seria prático para dedicar o tempo a aprender até mesmo um conhecimento de nível livro razoavelmente completo para Prolog, muito menos tentando desenvolver experiência no mundo real , a menos que você esteja considerando uma possível carreira em programação lógica.

Recentemente, li um livro sobre IA e sistemas especializados publicado em 1989 - um achado de sorte em uma livraria de segunda mão. Em parte significativa, é um tutorial especializado sobre Lisp e Prolog. É verdade que a maior parte do que ele cobre não é tão impressionante há algum tempo (pesquisa, heurística etc.), mas ainda é muito interessante, e a IMO é uma coisa interessante para se investir um pouco de tempo.

Livros mais recentes que descrevem especificamente o Prolog seriam melhores para aprender o idioma, mas o risco é que seu cérebro escorra dos ouvidos em algum lugar do material intermediário ao avançado.

Steve314
fonte
AI / prólogo novato aqui. Você recomendaria algum recurso online?
yati sagade 14/09/11
@yati - Tente amzi.com/AdventureInProlog/advtop.php - Certa vez, lembrei -me de um tutorial no site Amzi que parecia bom, tanto quanto me lembro, mas isso foi há muito tempo. Tudo o que olhei recentemente (provavelmente nos últimos 5 anos) para o Prolog é o livro de IA que mencionei nesta resposta. Você deve procurar / fazer uma pergunta aqui em vez de postar comentários, especialmente comentários adicionados a respostas escritas por alguém que é basicamente um novato a longo prazo. Prolog é algo que eu olho raramente e com muito pouca profundidade - ou então eu teria deixado de ser um novato há uma década ou mais atrás.
precisa saber é o seguinte
10

Não fui eu, mas assumindo que a pergunta poderia ser "alguém implementou algo sério com prólogo?" isso pode contar:

http://asmarterplanet.com/blog/2011/02/the-watson-research-team-answers-your-questions.html

O Watson é alimentado por 10 racks de servidores IBM Power 750 executando Linux e usa 15 terabytes de RAM, 2.880 núcleos de processador e é capaz de operar em 80 teraflops. O Watson foi escrito principalmente em Java, mas também pedaços de código significativos são escritos em C ++ e Prolog, todos os componentes são implementados e integrados usando o UIMA.

Kate Gregory
fonte
7

Eu sei que os programadores de IA o usam ... porque fiz um curso de Prolog na minha aula de IA, mas, além disso, não vi muita coisa a dizer sobre isso. Aqui está uma pergunta semelhante com muitas respostas! /programming/130097/real-world-prolog-usage

Comunidade
fonte
6

Prolog é ótimo para uma prototipagem rápida. Por exemplo, em http://www.cri.ensmp.fr/classement/doc/A-381.pdf, uma transformação SSA para GCC é implementada primeiro no Prolog e depois em C.

Estou usando o Prolog dentro de compiladores para uma implementação rápida e suja de sistemas de tipos, certas otimizações e verificações semânticas e reescrevo esse código do Prolog em algo imperativo apenas se seu desempenho não for aceitável.

SK-logic
fonte
2

Você respondeu rapidamente, mas eu usei o Prolog em meados dos anos 90 para projetar calculadoras de taxas de seguros que determinariam para nós determinados segmentos de clientes (risco de leitura) que se encaixariam nas taxas premium. É algo que você não necessariamente vê no dia-a-dia, mas certamente afetou seus prêmios de P&C ao longo dos anos.

Jé Queue
fonte
2

De acordo com (Esta FAQ) 1 Partes do Watson, a máquina IBM que tocava o Jeopardy, foram escritas em prólogo. (veja a pergunta 6)

GSto
fonte
1

Eu usei o Prolog profissionalmente em várias ocasiões (significativas) (sistema especialista em diagnóstico; transformação HTML; associação de conjuntos). Tenho uma profunda afeição pelo idioma. Sim, existe um viés aqui, mas é fácil ser objetivo sobre quando o Prolog é (mais ou menos) adequado - você realmente precisa processar estruturas recursivas ; o melhor exemplo que posso dar é uma tabela de banco de dados relacional, mas existem inúmeros outros exemplos (provavelmente é mais fácil enumerar contra-exemplos, como entrada aleatória do usuário ou (a maioria) funções matemáticas (no entanto, muitas funções matemáticas têm uma estrutura recursiva e, portanto, são perfeitamente apropriados (transformação rápida e discreta de Fourier, por exemplo)).

Mas, é claro, pouquíssimos 'sistemas de ponta a ponta' podem ser definidos apenas em termos do processamento de estruturas recursivas (exceção: prova do teorema - mas este é um exercício bastante acadêmico *), portanto, é uma sorte que um processo de prólogo pode ser enxertado em um 'processo imperativo mais padrão' usando todo tipo de técnicas diferentes (dificilmente importa o que, mas uma interface de serviço da web provavelmente é geralmente adequada); para que você possa lidar com a interface do usuário, com o processamento de eventos aleatórios, etc., e então entregar quando necessário (para fazer consultas complexas ao banco de dados ou qualquer número de coisas que você queira fazer com suas estruturas recursivas). Acho que funciona lindamente - melhor do que, por exemplo, LINQ.

Então, agarre suas estruturas recursivas pelos bits sensíveis e escreva um Prolog adorável, limpo, elegante e sustentável! :)

PS quando não estou usando o Prolog, volto ao c #

  • Embora anseie pelo dia em que, pelo menos alguns aspectos de, programas comerciais se provem corretos como uma prática padrão.
Chrissy Flangé Allen
fonte
1

Tente escrever um solucionador de sudoku no seu idioma favorito e verifique como isso é feito no Prolog. Em geral, qualquer problema de CLP combina bem com uma linguagem declarativa como o Prolog.

Também é usado extensivamente na verificação formal de hardware e software (academicamente e provavelmente profissionalmente, mas não tenho nenhuma referência a empresas).

Finalmente, Erlang é profundamente influenciado pelo Prolog, com tolerância a falhas e simultaneidade em mente.

sakisk
fonte
0

O software que lê e classifica grande parte do correio nos EUA e em vários outros países é escrito em Prolog, usando um compilador altamente otimizado. A sintaxe dos endereços de correio é escrita em gramáticas de cláusulas definidas, o que facilita a manutenção e simplifica a adaptação do leitor às convenções de vários países e usuários industriais. Os serviços postais geralmente possuem conjuntos de regras complicados sobre coisas como endereços de encaminhamento, caixas postais e endereços, etc., e essas regras também são formuladas no Prolog para facilitar a manutenção.

ComputationalBruno
fonte