Melhor resposta
Emacs até o fim!
Para um desenvolvimento sério do Prolog, eu recomendo o GNU Emacs com o modo Prolog que é mantido por Stefan Bruda. A página inicial do SWI-Prolog explica como configurá-lo e também inclui dicas para materiais adicionais:
Usando o SWI-Prolog com GNU Emacs
Na verdade, o SWI-Prolog ainda vem com seu próprio clone do Emacs, que é útil para tarefas de edição menores. Você pode invocá-lo com? – emacs.
Para algumas sugestões alternativas, verifique esta discussão:
O que é bom Prolog IDE para Linux?
Resposta
O Prolog não está morrendo. Geralmente, ele é ensinado a todos os alunos de Comp Sci que buscam um PhD! No entanto, sua dúvida pode estar em parte devido ao fato de que você percebeu que, apesar de todos serem forçados a aprendê-lo, a quantidade de código Prolog recém-escrito está aquém das linguagens menos “testadas e verdadeiras”? Nos últimos dois anos, avalie quantos novos projetos ou postagens de blog existem: Clojure, F #, Brain4uck, Go, Cobra, miniKanren e Scala. Infelizmente, mesmo o menor deles excedeu o número de bibliotecas e projetos Prolog recém-iniciados combinados nos últimos 10 anos! (Desculpe se algumas dessas línguas não são muito jovens .. mas pense em quanta tração cada uma tem ganho em tão curtos períodos de tempo)
Eu acho que os próximos dois anos Prolog excederão pelo menos dois ou três de as linguagens acima em postagens de blog e novos projetos.
Mais ideias
Estou escrevendo um compilador lisp comum no Prolog .. parece um projeto de 2 meses. Ele funciona fazendo com que o compilador converta o código-fonte lisp em Prolog e, em seguida, otimize o código do prólogo em vez de deixar o backend compilar o prólogo. Esse fluxo de dados já parece difícil para Haskell ou Idris. Acho que a verdadeira questão fundamental é que as duas últimas linguagens não são expressivas o suficiente para descrever o que acabei de dizer declarativamente no nível de detalhe para que isso aconteça.
Aqui está um exemplo de “detalhes descritivos” (para o sistema de pacotes) https://github.com/TeamSPoon/wam\_common\_lisp/blob/master/prolog/wam\_cl/package.pl
Ou o otimizador: https://github.com/TeamSPoon/wam\_common\_lisp/blob/master/prolog/wam\_cl/mizepro.pl
É fácil fazer o Haskell otimizar seu código-fonte antes de rodar? Também espero que em Haskell seja necessário algum tipo de representação Haskell intermediária que possa interpretar. Provavelmente, não seria muito difícil escrever um intérprete Lisp em Haskell .. o compilador é muito mais trabalhoso?
Os níveis de doutrinação de Haskell são adequados para propósitos acadêmicos e, como resultado, Haskell tem mais Ph.D. Esposas de troféu do que Prolog. Há muito mais complexidade e manuais sobre como agradar seus maridos (o programador Haskell lê o livro HoTT após o livro HoTT) Mas acho que eles podem não perceber que estão em um relacionamento abusivo: o que é perverso é que eles pensam (esperam) que seus marido, chamado Haskell, concederá a eles os mesmos privilégios que as esposas do Prolog (levá-los nas mesmas férias) (eles não estão cientes da existência real das esposas do prólogo ou estão sujeitos à propaganda de seus maridos (como visto neste tópico) ) …. Só obterão privilégios se tiverem um desempenho muito bom. Eu acho que tal casamento seria adequado apenas para os núbeis … o que eles não sabem é que nunca serão “bons o suficiente” para obter as mesmas férias (recursos do programa). Eles dizem que tais desejos são errados e feitos para esfriar assistindo a outro vídeo de Wadler.
Não me interpretem mal, Prolog to tem doutrinação. . “não use cortes .. não” use setarg / ou asserta / “Mas em Haskell, se você refinar sua metodologia, descobrirá que sua intenção está errada. Em Prolog, se você refinar sua metodologia, descobrirá que sua intenção nunca estava errado.
Mais aspectos da relação disfuncional:
Ambos Haskell e Prolog são sistemas declarativos para descrever a atenuação de estados. Ambas as linguagens, o programador parece ter que desenvolver uma linguagem em torno de transições de dados. No Prolog, isso é expresso por meio de proposições. (Mas em Haskell essas proposições devem ser em tipos)
Ambos constroem tediosamente uma pista de obstáculos para roedores usando rolos de papel higiênico … A batalha intelectualmente é fazendo aquele roedor se mover de maneiras ultra-inteligentes. No Prolog, você constrói os rolos de papel higiênico, em seguida, você faz geradores de rolos de papel higiênico chamados meta-predicados em vez do cálculo de construtores.
Para mim, vejo que Haskell tinha um extra de minhas proposições lógicas de prólogo tem que se tornar tipos (um por cla usar). Parece que pode ser muito tedioso (os rolos de papel higiênico têm nomes exclusivos) (seria difícil tipificar algumas das minhas cláusulas do prólogo), pois a maioria dos meus programas de prólogo que fazem coisas incríveis contém milhares de cláusulas. A única razão para tornar isso difícil para mim seria tornar as coisas mais fáceis para o verificador de tipo?Não tenho certeza se essas voltas extras em meio ao desânimo iriam me ajudar. Além disso, não preciso fazer com que cada cláusula (proposição) se encaixe em algum sistema de tipos (em um tipo)!
No Prolog, de improviso, eu projeto meu sistema de tipos dinamicamente .. não terminável termos. (termos ilimitados infinitos como eu uso na implementação do ambiente Lisp) Haskell gostaria que eu perdesse isso. No entanto, o que isso oferece em troca? Alguma consistência? Por que um programador Prolog se inscreveria para microgerenciamento filosófico?
Tudo o que Haskell quer é que eu perca capacidades? Isso parece pior caso de casamento, se eu fosse um programador núbil, não teria conhecido melhor.
Haskell tem um “culto” de doutrinação. Talvez para a maioria dos programadores OO, pois eles ainda veriam Haskell como um movimento ascendente em direção a genéricos reais.