Loading...

Paradigma Lógico/Historia e evoluçao do Prolog

hands typing on a laptop

Paradigma lógico

Além do paradigma imperativo e declarativo, também há o paradigma lógico, um paradigma de programação que usa a lógica matemática para resolver problemas. Em vez de focar em sequências de comandos ou funções, como em outros paradigmas, o paradigma lógico utiliza regras lógicas para definir as relações entre os elementos do problema. Isso significa que o programador especifica as condições e relações que devem ser verdadeiras para obter o resultado desejado, e o sistema deduz a solução com base nessas regras. Prolog é uma das linguagens de programação que segue esse paradigma, e é amplamente usada em áreas como inteligência artificial e processamento de linguagem natural.

História do Prolog

O nome Prolog foi escolhido por Philippe Roussel, por sugestão de sua esposa, como uma abreviação de programmation en logique ( francês para programação em lógica ). [ 76 ] Foi criado por volta de 1972 por Alain Colmerauer com Philippe Roussel, com base na interpretação procedural de cláusulas de Horn de Robert Kowalski . Foi motivado em parte pelo desejo de reconciliar o uso da lógica como uma linguagem de representação de conhecimento declarativa com a representação procedural do conhecimento que era popular na América do Norte no final dos anos 1960 e início dos anos 1970. De acordo com Robert Kowalski , o primeiro sistema Prolog foi desenvolvido em 1972 por Colmerauer e Phillipe Roussel. [ 77 ] [ 78 ] [ 79 ] A primeira implementação do Prolog foi um interpretador escrito em Fortran por Gerard Battani e Henri Meloni. David HD Warren levou esse interpretador para a Universidade de Edimburgo , e lá implementou um front-end alternativo, que veio a definir a sintaxe "Edinburgh Prolog" usada pela maioria das implementações modernas. Warren também implementou o primeiro compilador para Prolog, criando o influente DEC-10 Prolog em colaboração com Fernando Pereira. Warren mais tarde generalizou as ideias por trás do DEC-10 Prologo, para criar a Warren Abstract Machine .


Linha do tempo dos primeiros desenvolvimentos no Prolog
Linha do tempo dos primeiros desenvolvimentos no Prolog

PLNde linguagem natural (PLN) é uma vertente da inteligência artificial que ajuda computadores a entender, interpretar e manipular a linguagem humana. O PLN resulta de diversas disciplinas, incluindo ciência da computação e linguística computacional, que buscam preencher a lacuna entre a comunicação humana e o entendimento dos computadores.


Aplicações Do Prolog

As principais aplicações do Prolog se dão na área de computação simbólica: Em resumo Sistemas de Computação Simbólica são softwares matemáticos que permitem lidar com símbolos e obter respostas exatas para muitos problemas matemáticos, como a fatoração de números inteiros e polinômios, operações com matrizes, resolução de sistemas lineares e não lineares de equações, operações com números complexos, simplificações de expressões, cálculo de limites, derivadas e integrais, resolução de equações diferenciais e etc.

  • lógica matemática, prova automática de teoremas e semântica
  • Solução de equações simbólicas;
  • Bancos de dados relacionais;
  • Linguagem Natural;
  • Sistemas Especialistas;
  • Planejamento Automático de Atividades;
  • Análise Bioquímica e projetos de novas drogas.
  • Aplicações de “General Problem Solving”, em jogos como (Xadrez, Damas, Jogo da Velha, etc.);

  • O General Problem Solver (GPS), ou Solucionador de problemas gerais, foi um programa de computador criado em 1957 por Herbert Alexander Simon, J. C. Shaw e Allen Newell destinado a funcionar como uma máquina universal de solucionar problemas. Qualquer problema simbólico formalizado poderia ser resolvido, em princípio, pelo GPS. Por exemplo: provas de teoremas, problemas em geometria e o jogo de xadrez.


    Implementação em hardware

    Durante o projeto de Sistemas de Computadores de Quinta Geração houve tentativas de implementar o Prolog em hardware com o objetivo de obter uma execução mais rápida com arquiteturas dedicadas. Além disso, o Prolog tem uma série de propriedades que podem permitir aceleração por meio da execução paralela Uma abordagem mais recente foi compilar programas Prolog restritos em um conjunto de portas programáveis em campo No entanto, o rápido progresso em hardware de uso geral tem ultrapassado consistentemente arquiteturas mais especializadas.


    A Sega implementou o Prolog para uso com o Sega AI Computer, lançado para o mercado japonês em 1986. O Prolog foi usado para ler entradas ' de linguagem natural , no idioma japonês , por meio de um touchpad . [ 50 ]

    Tipos de Dados

    O uníco tipo de dado do Prolog é o "termo" são átomos números,variáveis ou termos compostos

  • Um átomo é um nome de símbolo que começa com uma letra minúscula ou é guardado por aspas.Exemplos de átomos incluem x, red, 'Taco', 'some atom', e 'p(a)'.
  • Os números podem ser floats ou inteiros . A maioria dos principais sistemas Prolog suporta números inteiros de comprimento arbitrário.
  • Variáveis são denotadas por uma sequência de caracteres consistindo de letras, números e caracteres de sublinhado, e começando com uma letra maiúscula ou sublinhado. Variáveis se assemelham muito a variáveis em lógica, pois são marcadores de posição para termos arbitrários.
  • Um termo composto é composto de um átomo chamado "functor" e um número de "argumentos", que são novamente termos. Termos compostos são normalmente escritos como um functor seguido por uma lista separada por vírgulas de termos de argumento, que está contida entre parênteses. O número de argumentos é chamado de aridade do termo . Um átomo pode ser considerado um termo composto com aridade zero. Um exemplo de um termo composto é person_friends(zelda,[tom,jim]).

  • Prolog /O que é Prolog

    Prolog é uma linguagem de programação declarativa . Isso significa que em Prolog, você não escreve o que o computador deve fazer linha por linha, como em linguagens procedurais como C e Java. A ideia geral por trás de linguagens declarativas é que você descreve uma situação. Com base nesse código, o interpretador ou compilador lhe dirá uma solução. No caso de Prolog, ele lhe dirá se uma sentença de Prolog é verdadeira ou não e, se contiver variáveis, quais devem ser os valores das variáveis.

    Isso pode soar como uma dádiva para programadores, mas a verdade é que o Prolog raramente é usado puramente dessa forma. Embora a ideia declarativa seja a espinha dorsal do Prolog, é possível ver o código Prolog como procedural. Um programador Prolog geralmente fará as duas coisas, dependendo da parte do código que está lendo ou escrevendo. Ao aprender Prolog, no entanto, a experiência em programação procedural não é de forma alguma útil. (costuma-se dizer que é mais fácil aprender Prolog para alguém que não tem experiência em programação procedural do que para alguém que tem) Template:Whom

    Como Prolog funciona?

    Um programa Prolog constitui-se de uma coleção de fatos (base de dados) e regras (relações lógicas), esses ítens descrevem o domínio de um determinado problema. Esta descrição do problema é avaliada por um interpretador, o qual utilizando um motor de inferência realiza deduções em busca de conclusões válidas para consultas realizadas pelos usuários. Assim, pode-se armar que a computação destes programas é equivalente a prova de um teorema em lógica.

    Os fatos de Prolog permitem a de nição de predicados por meio da declaração de quais ítens pertencentes ao universo (ou domínio) satisfazem os predicados. Por exemplo, pode-se de nir o predicado homem(x) e utilizar este para de nir quais elementos do universo possuem tal predicado, no caso x é homem.

  • homem(pedro).
  • homem(joao).
  • mulher(maria).
  • mulher(teresa).
  • O usuário pode realizar a consulta homem(X). e receber as seguintes respostas X=pedro; X=joao; No, signicando que pedro e joao são homens, o No indica que não existem mais respostas que satisfaçam a consulta.

    As computações em Prolog utilizam os conceitos de cláusulas de horn, resolução e encadeamento para trás (backtracking), com estes é possível realizar a computação de maneira equivalente a uma dedução em Lógica de 1° ordem.


    Implementações de Prolog

    Diversas implementações da linguagem Prolog podem ser encontradas, o que para muitos constitui um problema, pois estas nem sempre são totalmente compatíveis. Atualmente, existem versões livres e comerciais criadas para os principais sistemas operacionais. Algumas das implementações mais conhecidas são:

  • B-Prolog
    http://www.picat-lang.org/bprolog/
    Um compilador Prolog para Prolog padrão com recursos estendidos, como tabulação e resolução de restrições. Suporta muitas plataformas.

  • SWI Prolog (recomendado para uso com este livro)
    https://www.swi-prolog.org/
    Uma implementação pequena e robusta de código aberto que é compatível com ambos os padrões Prolog (ISO e Edinburgh) e tem muitas bibliotecas extras e predicados integrados. Há até mesmo um kit de ferramentas separado para criar janelas e gráficos, chamado XPCE. Suporta muitas plataformas.

  • GNU Prolog
    http://www.gprolog.org/
    Uma implementação de código aberto relativamente nova. Tem suporte para Constraint Logic Programming, uma extensão do prolog.

  • Prólogo Visual
    http://www.visual-prolog.com/
    Um ambiente de desenvolvimento completo para uma extensão orientada a objetos do Prolog. Inclui compilador, vinculador, editor de texto, editores de diálogo gráfico, sistema de construção, depurador, grande biblioteca e muito mais

  • As seguintes implementações não são gratuitas:


  • Prólogo SICSTUS
    http://www.sics.se/
    Provavelmente o mais conhecido conjunto de implementação e desenvolvimento profissional de prolog. Compatível com ISO, muitas bibliotecas e suporte para programação de lógica de restrição. Gratuito para avaliação.

  • Quintus Prólogo
    http://www.sics.se/quintus/
    Uma implementação especialmente robusta e confiável, destinada ao uso comercial e projetos de pesquisa pela mesma empresa que faz o SICSTUS. Gratuito para avaliação. A implementação utilizada ao longo dessa aprensatação é a SWI-Prolog, todo código utilizado nos exemplos e exercícios apresentados aqui foram desenvolvidos nesta versão de Prolog.

  • Os comandos write e read

    O comando write exibe o valor do parâmetro no dispositivo de saída corrente. O dispositivo padrão é o monitor, assim, o comando write(`Teste de impressão.'). irá exibir a mensagem Teste de impressão. na tela do monitor. O mesmo comando pode ser utilizado para imprimir o valor de qualquer variável. No entanto, não existe um comando padrão Prolog para escrita de expressões formatadas. Devido a isso, o SWI-Prolog utiliza comandos de extensão, um deste é o comando writef do C-Prolog de Edinburgo. Este comando possui a seguinte sintaxe writef(Formato, Argumentos).


    O comando read lê um valor no dispositivo de entrada corrente e uni ca (atribui) o valor uma variável. O dispositivo de entrada padrão é o teclado, assim, o comando read(X). irá ler um valor do teclado e uni car este valor com a variável X.


    Referências


    1. 1. << O que são paradigmas de programação e quais os principais tipos?>>
    1. 2. << Prolog (Programação Lógica)>>
    1. 3. << Implementação em hardware -Wikipidia>>

    Leitura Adicional


    1. 1. << Blackburn, Patrick; Bos, Johan; Striegnitz, Kristina (2006). Aprenda Prolog agora! . Publicações universitárias.ISBN 978-1-904987-17-8 Arquivado do original em 26/08/2007 . Recuperado em 02/12/2008 .>>
    1. 2. << Robert Smith, John Gibson, Aaron Sloman : 'Suporte de máquina virtual de dois níveis do POPLOG para linguagens interativas' , em Research Directions in Cognitive Science Volume 5: Artificial Intelligence , Eds D. Sleeman e N. Bernsen, Lawrence Erlbaum Associates, pp 203–231, 1992.>>
    1. 3. << William F. Clocksin, Christopher S. Mellish: Programming in Prolog: Using the ISO Standard . Springer, 5ª ed., 2003, ISBN 978-3-540-00678-7 . (Esta edição é atualizada para o ISO Prolog. Edições anteriores descreviam o Edinburgh Prolog.)>>