Aracele Garcia de Oliveira aracele.garcia@gmail.com Universidade Federal de Santa Catarina Florianpolis SC Brasil Agosto de 2008 1 Resumo Este trabalho baseia-se em uma pesquisa bibliogrfica que serviu como fundamentao terica de um estudo sobre a contribuio da programao em lgica para a construo de arquiteturas de hardware e software, denominadas Mquinas Lgicas ou Mquinas Prolog 1 . A grande vantagem de utilizao da lgica na representao e transformao do conhecimento a sua forte formalizao matemtica, o que tambm pode ser melhorado atravs do uso de tcnicas de processamento paralelo, tanto a nvel de hardware quanto de software, o que uma boa alternativa para obter performance. Um projeto financiado pelo governo japons entre 1982 e 1992, que iniciou este pensamento e deu origem aos chamados "Computadores de Quinta Gerao, no atingiu os objetivos esperados mas serviu para impulsionar o uso do Prolog e outros conceitos associados lgica. As sees a seguir esto organizadas na ordem cronolgica nas quais os assuntos e tecnologias ocorreram ou foram desenvolvidos. 2 Paradigma Lgico A lgica a cincia e Arte do raciocnio [Buchsbaum 2006] e a cincia do pensamento correto [Palazzo 1997]. necessrio esta premissa inicial para entender como a lgica pode ser empregada na programao de computadores e como resumir vrias coisas ao seu conceito formal. O objetivo principal do Paradigma Lgico trazer para a programao o estilo da lgica matemtica. 2.1 Razes As razes da lgica podem ser atribudas a Aristteles, que sistematizou e codificou o assunto de tal modo que no foi significativamente ultrapassado por mais de dois milnios [Nolt and Rohatyn 1991]. Estudos de Boole(1815-1864) e de De Morgan(1806-1871) remontam o uso da lgica na representao do raciocnio, mas estavam mais prximos da matemtica do que da lgica propriamente dita. O relacionamento entre lgica e matemtica foi tambm investigado por Alfred North Whitehead e Georg Cantor, que tambm produziu a teoria dos nmeros transfinitos e que em "Principia Mathematica (1910) demonstrou ser a lgica um instrumento adequado para a representao formal de grande parte da matemtica. A lgica moderna provm, em grande parte, do trabalho do filsofo alemo Gottlob Fregue no sculo XIX, com o que hoje denomina-se clculo dos predicados. Embora a lgica se desenvolvesse como um ramo da filosofia, o seu progresso explosivo desde Fregue, produziu aplicaes em lingustica, matemtica e cincia da computao. Diversos estudos posteriores foram de grande importncia para sua evoluo, com destaque para as investigaes de Herbrand, Gdel, Tarski, Prawitz, Robinson, Green, Turing e Church. No incio da segunda guerra mundial, por volta de 1939, toda a fundamentao terica bsica da lgica computacional estava pronta. Mas faltava o meio prtico para se realizar os procedimentos de prova. E a partir da metade dos anos 50, o desenvolvimento dos computadores conseguiu oferecer aos pesquisadores o potencial computacional necessrio para a realizao de experincias mais significativas com o clculo de predicados [Palazzo 1997]. 2.2 Programao em Lgica Esta expresso, originria de "Logic programming em ingls, devida a Robert Kowalski (1974) e sugere o uso da lgica como linguagem de programao em computadores. Ele identificou que a prova de teoremas poderia ser computada, permitindo assim uma interpretao procedimental da lgica e estabelecendo as condies que nos permitissem entend-la como linguagem de Programao de uso geral. Neste paradigma, no se descreve o algoritmo para chegar ao resultado. Descreve-se a informao base (fatos) e as regras de inferncia(regras) sobre certo domnio, para se poder deduzir 1 O Termo Parallel Prolog Machine tambm foi utilizado para designar o paralelismo nestas mquinas. o resultado atravs de perguntas que so feitas esta base. Um procedimento de inferncia a estratgia para a escolha das derivaes possveis em cada estado. O principal interesse nesse modelo de programao estava na sua capacidade de tratar problemas de alta complexidade computacional e na simplicidade da sua estrutura e principalmente ao rigoroso suporte matemtico ao qual a lgica est associada. 2.! Programao em Lgica " #rquitetura de $on %ewmann Programao em lgica uma teoria que representa um modelo abstrato de computao sem relao direta com o modelo de mquina Von Neumann [Valente 1993]. O paradigma da programao em lgica abandona totalmente o conceito de Von Neumann por no fornecer instrues explcitas para operaes e seu seqenciamento, adotando o modelo dos axiomas lgicos, isto , proposies verdadeiras que representam o conhecimento que se possui a respeito do problema e regras que permitem deduzir novos conhecimentos. A programao lgica diferencia-se da programao procedimental, fundamentalmente, por requerer a descrio da estrutura lgica do problema ao invs da maneira pela qual o computador deve solucion-lo [Price and Lisba 2003]. 2.& Prolog O primeiro interpretador experimental foi desenvolvido por um grupo de pesquisadores na Universidade de Aix-Marseille(1972) com o nome de Prolog (acrnimo para Programming in Logic). Implementaes mais prticas foram desenvolvidas por David H.D. Warren e outros, na Universidade de Edimburgo (U.K), que definiram o chamado "Prolog de Edimburgo, utilizado como referncia na maioria das implementaes atuais da linguagem Prolog [Palazzo 1997]. Warren tambm especificou a chamada "Warren Abstract Machine, um modelo formal utilizado na pesquisa de arquiteturas computacionais baseadas ou orientadas programao em Lgica. Foi uma tentativa de fazer uma linguagem de programao que permitisse a expresso de lgica de um programa ao invs de cuidadosamente especificar cada instruo que o computador deveria executar. Algumas das principais caractersticas do Prolog so descritas abaixo: Orientada ao processamento Simblico Representa uma implementao da Lgica como Linguagem de Programao Permite a obteno de respostas alternativas Representa programas e dados atravs do mesmo formalismo A caracterstica que d ao Prolog vantagens sobre linguagens procedurais 2 a separao entre componentes lgicos e de controle. As caractersticas herdadas da Lgica o levou a tornar-se uma das duas principais linguagens na rea de Inteligencia Artificial, juntamente com o LISP(LISt Processor). Segue abaixo um quadro comparativo entre caractersticas de Programas Convencionais e de Programas em Lgica: PR'(R#)#* +'%$,%+-'%#-* PR'(R#)#* +'%$,%+-'%#-* Processamento Numrico Processamento Simblico Solues Algortmicas Solues Heursticas Estruturas de Controle e Conhecimento Integradas Estruturas de Controle e Conhecimento Separadas Difcil Modificao Fcil Modificao Somente Respostas Totalmente Corretas Incluem Respostas Parcialmente Corretas Somente a Melhor Soluo Possvel Incluem Todas as Solues Possveis .a/ela 10 Programas +onvencionais " Programas em Lgica 2.4.1 Conceitos essenciais da Linguagem Prolog Em Prolog, o que se define so objetos e relaes entre objetos. Para se referir a objetos usamos "termos. Termos: constante, varivel ou estrutura; tomos: Valores simblicos; Varivel: Inicia-se com uma letra maiscula; Estrutura: meio de especificar fatos em Prolog. 2 Linguagem de programao na qual o elemento bsico a procedure (uma seqncia de instrues - rotina, sub-rotina ou funo - associadas a um nome prprio). As linguagens de alto nvel (C, Pascal, Basic, Fortran, Cobol, Ada) so todas linguagens procedurais. Um programa Prolog consiste basicamente de: declarao de fatos sobre objetos e suas relaes; definies de regras sobre os objetos e suas relaes; questes que so feitas sobre os objetos e suas relaes. Fatos so estruturas usadas para construir o banco de dados de informaes presumidas. Eles so descritos na forma de Horn 3 sem "cabea. Exemplo: homem(Joo). Regras so clusulas Horn com "cabea usadas para descrever condies similares a if-them. Exemplo: pais(Maria, Joo):- me(Maria, Joo). Metas so clusulas de Horn sem "cabea que so avaliadas pelo sistema de inferncia do Prolog. Cada meta decomposta em submetas. O processo de inferncia tenta encontrar o encadeamento de regras e fatos que ligam a meta a um ou mais fatos do Banco de Dados ? pais (X, Joo). X=Maria Yes 2.4.2 A explorao do Paralelismo no Prolog A busca de regras realizada atravs de uma rvore de pesquisa, e feita, primeiro, em profundidade, implementada por uma mquina de pilha, onde se guardam os objetivos da resolvente. A execuo de Regras assim descrita: o sistema executa todos os sub-objetivos ou submetas sequencialmente da esquerda para a direita e considera clusulas candidatas sequencialmente na ordem textual definida no programa, para uma definio precisa da semntica sequencial do Prolog [Beer 1987]. Uma vez que a semntica declarativa do Prolog no impe qualquer ordem de execuo para as metas ou ordem de pesquisa das clausulas, imediatamente bvio que programas lgicos podem fazer uso de um inerente paralelismo. O Processamento paralelo uma alternativa muito importante para se obter bons resultados no desempenho de programas. O Paralelismo pode ser explorado implcita ou explicitamente. Os mais conhecidos sistemas paralelos so baseados na programao imperativa e o paralelismo explorado explicitamente, tornando a programao uma tarefa difcil. Contrastando com o programao imperativa, est a programao declarativa de alto-nvel, um modelo onde o programador s se preocupa com o que deve resolver, e no com a forma de resolver um problema. Devido a esta caracterstica declarativa, a lgica de programao oferece algumas oportunidades para explorar o paralelismo implcito. Este claramente reduz o custo do desenvolvimento de software, como o usurio escreve s uma aplicao que ir executar em apenas um processador, assim como em vrios[Dutra et al. 1999]. Parcialmente iniciado pelo FGCS, a ser descrito na seo 4, esforos foram considerveis para definir uma investigao do paralelismo no Prolog e seus dialetos e mquinas paralelas adequadas para execuo paralela de grandes projetos Prolog. As principais formas de paralelismo, a nvel de software, que podem ser identificadas so: Paralelismo-OR: percorre em paralelo ou simultaneamente, todos os ramos da rvore de pesquisa capazes de resolver um objetivo ou meta corrente. Paralelismo-AND: a execuo paralela de todos os sub-objetivos ou submetas no mbito do corpo da clusula. Paralelismo-Unificao: a unificao concomitante de todos os argumentos de um dado objetivo e a clusula original Implementaes iniciais neste sentido foram: Concurrent Prolog, GHC (Guarded Horn Clauses), Parlog e Andorra. ! # )1quina #/strata de 2arren 32#)4 Como foi dito na seo 2.4, David Warren especificou a chamada "Warren Abstract Machine, que consistia de uma arquitetura de memria e conjunto de instrues adaptados ao Prolog. A WAM foi apresentada por ele em uma memorvel palestra em U.C. Berkeley em Outubro de 1983. Seria uma mquina abstrata prolog, conhecida como Mquina Abstrada de Warren, e este modelo se tornaria um padro para a implementao de compiladores e interpretadores prolog [Hassan 1990]. A execuo de um programa Prolog feito em duas etapas, em uma implementao baseada na WAM: [Hanus 1988] Compilao do Programa em uma sequncia de instrues WAM 3 Um programa lgico uma coleo de clusulas de Horn do tipo A0 if A1 and ... and An Execuo do programa WAM por um interpretador ou compilao para uma outra linguagem, por exemplo, linguagem de mquina. Os principais objetivos do autor quando criou a WAM foram a forma fcil de mapear cdigo Prolog para cdigo WAM e a arquitetura ser baixo-nvel suficiente para poder ser implementada/emulada sobre outras arquiteturas. Alguns nomes de instrues eram put, get, unify, variable, value, execute, proceed, try, retry, and trust. WAM era simples por fora (um pequeno e limpo conjunto de instrues) e complexa por dentro (suas instrues faziam coisas complexas) Objetos de Dados: Em WAM um objeto Prolog representado por uma palavra contendo uma tag e um valor. A Tag distingue o tipo do objeto. Os principais tipos so variveis no-ligadas(unbound), variveis referenciadas, constantes, estruturas e listas. reas de Memria: A WAM contm cinco reas de memrias divididas entre o cdigo e o espao de dados. O espao de cdigo contm instrues e outras informaes representando o programa. As quatro reas de espao de dados so acessadas como pilhas. O processo de inferncia em Prolog inicia com uma consulta, essa consulta particionada em suas submetas e ento o fluxo de execuo tenta encontrar o encadeamento de regras e/ou fatos que ligam a meta aos fatos na base de conhecimentos. Essa forma de resoluo capaz de resolver problemas em domnios finitos. Na figura 1 possvel ver a organizao de memria da WAM que composta por reas de dados lgicos: heap onde so alocadas as estruturas complexas em Prolog (listas e termos compostos) Pilha local que armazena o environment (semelhante a um registro de ativao em uma mquina von-Neumann) e as variveis locais, a clusula objeto de resoluo. Pilha de pontos de escolha (ou choicepoint-stack) guarda as informaes para realizar o backtracking. Pilha de rastro (trail-stack) guarda as informaes necessrias para desfazer as alteraes nos dados em caso de backtracking. Alm disto essa mquina tem alguns registradores globais definidos para o controle das pilhas e da execuo. A execuo realizada da seguinte forma: Argumentos da chamada so preparados e carregados nos registradores temporrios atravs da instruo input. Clusulas que "casam com a submeta so detectados e se existe mais de um, ento um ponto de escolha alocado (try). A primeira clusula iniciada depois de criar o "ambiente (allocate), a execuo tenta a "unificao de cabea usando as instrues get/unify. E ento o corpo da clusula executado. Caso falhe a unificao, ser necessrio backtraking, que envolve retorno a um ponto de escolha superior e escolha de uma nova instanciao e execuo da submeta. 5igura 1 0 'rganizao da )emria em 2#)6 )emria e registradores O sistema completo mostrado na figura a seguir, quando "pass1 a implementao do compilador Prolog e o "pass2 a traduz toda instruo Wam para uma sequencia de instrues de Mquina. Neste caso a especificao baseada no implementao WAM 68000 [Hanus 1988]. 5igura 2 0 ,squema de funcionamento do )odelo 2#) & ' 7ro8eto de com7utadores de 9uinta (erao &.1 ' momento Ao longo de vrias geraes, desde a dcada de 80, o Japo era um seguidor dos EUA e dos pases britnicos no que se refere aos termos de avano da informtica e construo de computadores. Foi ento que o Ministrio de Comrcio Internacional e Indstria (MITI) decidiu a tentativa de quebrar esta situao de "siga o lder. Em meados de 1970 comeou a estudar, em pequena escala, o futuro da computao. Eles pediram ao Centro de Processamento e Desenvolvimento de Informaes do Japo (JIPDEC) para indicar rumos futuros para serem aprofundados, juntamente com a indstria e a universidade. Foi durante este perodo que o termo "Quinta gerao de computadores comeou a ser utilizado. Os campos primrios da investigao eram: Tecnologias de Inferncia de computador para processamento do Conhecimento Tecnologias de computador para processamento de bases de dados e conhecimento em larga escala. Estaes de alta performance Super-computadores para clculo cientfico &.2 ' 7ro8eto Na evoluo do computador, as mudanas entre uma gerao e outra, aconteceram atravs do aperfeioamento e desenvolvimento dos elementos que o compem. A primeira gerao usava vlvulas, a segunda usou transistores, a caracterstica principal da terceira foram os circuitos intergrados, chamados de "chips, e a quarta gerao possui chips de densidade de integrao maior, os VLSI, ou Very Large Scale Integration. Em 1979 o governo japons iniciou estudos para o "Projeto da Quinta Gerao" para desenvolver, hardware e software de elevado desempenho (caracterizando assim uma nova gerao de computadores) e usando variantes do Prolog e o prprio Prolog como linguagem bsica do projeto (assim como o Assembly para as mquinas convencionais) comandando diretamente o hardware. O motivo do uso do prolog porque se acreditava ser uma verdadeira linguagem paralelizvel. Esse projeto, iniciou em 1982 e foi oficialmente concludo em 1992. O FGCS(Fifth Generation Computer Systems) abrangiu o maior projeto de arquitetura dentro da comunidade de programao em lgica. O objetivo maior do projeto, que era o de produzir e disponibilizar microcomputadores pessoais baseados nestas novas tecnologias desenvolvidas, no foi atingido. Mas os computadores, sistema operacional e os programas produzidos pelo projeto so interessantes e importantes para o nvel acadmico. Diversos prottipos do computador de quinta gerao foram construdos e chamados genericamente de PIMs Parallel Inference Machines e isso serviu para difundir e estimular o uso do Prolog. A idia principal desse projeto, que foi considerado um dos mais ambiciosos projetos da histria da computao, era construir uma mquina paralela utilizando programao lgica e tcnicas de Inteligncia Artificial [Rosa 1995]. &.! Linha de .em7o do Pro8eto 1:;2 O FGCS inicia e recebe financiamento para 5 anos. 1:;< conhecido o primeiro Hardware denominado como Mquina Pessoal de Inferncia Sequencial PSI (Personal Sequential Inference Machine) e a primeira verso do Sistema Operacional para a mesma, o SIMPOS. Ele foi programado em Kernel Language 0 (KL0-Kernel Language Zero), uma variante do prolog com extenses orientadas a objeto. 1:;= Um prottipo do verdadeiro hardware paralelo chamado Mquina de Inferncia Paralela ou Parallel Inference Machine (PIM) construdo utilizando vrios PSIs conectados como uma rede. O projeto recebe financiamento para mais 5 anos. Uma nova verso da Linguagem do Kernel, o Kernel Language 1(KL1-Kernel Language 1), criado, influenciado pela evoluo do prolog. O sistema operacional escrito em KL1 recebe um novo nome: Parallel Inference Machine Operating System ou PIMOS. 1::1 produzida a primeira mquina de inferncia Paralela-PIM que funciona realmente. 1::2 O programa FCGS cancelado ou finalizado.O cdigo-fonte do PIMOS tornado domnio pblico, mas podendo ser executado somente em Maquinas PIM. Um financiamento adicional dado para produzir um emulador de UNIX chamado KL1 compilador C (KLIC). &.& )1quina de -nfer>ncia Paralela 3P-)4 Parte das atividades do projeto de quinta gerao foi desenvolver prottipos de mquinas paralelas para servir como uma ferramenta de desenvolvimento dos sistemas dos computadores de quinta gerao[Galante 2004]. Cinco mquinas de inferncia paralela foram criadas: PIM/m, PIM/p, PIM/i, PIM/k, PIM/c. Nestas novas mquinas o papel da linguagem assembly ser desempenhado por um dialeto do Prolog orientado ao processamento paralelo. O KL1 foi um deles. Uma PIM uma mquina MIMD 4 de propsito geral que executava o KL1 eficientemente. Tais mquinas possuiam arquitetura massivamente paralela e tinham velocidade de processamento calculada em MLIPS (milhes de inferncias lgicas por segundo). A medida MLIPS anloga quela usada para os processadores tradicionais (MIPS Milhes de instrues por segundo) As principais caractersticas foram: Computador paralelo Bases de Dados em lugar de sistemas de arquivo Linguagem de Programao lgica para acessar bases de dados Teria entre 100MLIPS(100 megalips) e 1GLIPS (1 gigalips ou 1 bilho de inferncias lgicas por segundo) As realizaes do projeto incluem uma hierarquia de linguagens de programao lgica, o desenvolvimento de programao lgica para sistemas operacionais, e o desenvolvimento de uma famlia de mquinas de programao em lgica. Tambem serviu para incentivar projetos similares nos Estados Unidos e a criao do interesse em programao lgica ao redor do mundo. De um modo geral, entretanto, considera-se que o projeto demonstrou ser a tecnologia PIM bem sucedida em novas aplicaes envolvendo paralelismo em diversas reas, especialmente computao no-numrica e inteligncia artificial. 5igura ! ? Uma modelo de Rede Paralela0P-) de 1@A1@ elementos de 7rocessador 3P,4 interligados Esta foi a primeira mquina de inferncia prtica. Seu sistema operacional PIMOS provia um ambiente altamente sofisticado para a programao paralela. A terceira mquina PIM/m possuia o 4 MIMD (Multiple Instruction Multiple Data) so arquiteturas caracterizadas pela execuo simultnea de mltiplos fluxos de instrues. Essa capacidade deve-se ao fato de que so construdas a partir de vrios processadores operando de forma cooperativa ou concorrente, na execuo de um ou vrios aplicativos. aumento de performance como grande diferencial, devido ao aumento de elementos de processador para 256. A PIM consistia de 8 partes, cada uma com 32 elementos de processador e com quatro discos de 670MB de armazenamento secundrio. O que consistia em um total aproximado de 20 GB. Cada disco ligado com os elementos de processador e os FEP atravs de 32 portas SCSI. O FEP uma estao de trabalho IA que provm ambiente de programao para usurios PIM/m. Em cada elemento de processador existem 3 chips VLSI, Unidade de Cache, Unidade de controle de rede e unidade de processamento:[Soler 2006] 5igura & 0 ,lementos de Processador A unidade de cache contm 1K-Word de instrues e 4K-word de cache de dados. O buffer de translao e endereamento para instrues e dados tambm instalado na unidade de cache. A troca de mensagens entre unidades de processador feita atravs de uma tabela RAM chamada de Path Table(PT). A unidade de rede transmite um pacotes de dados independendo da localizao fsica do Elemento de Processador adjacente. Este mecanismo utiliza o mecanismo de comunicao assncrona usando FIFO buffers de sada. Ainda segundo [Soler 2006], os principais registradores da unidade de processamento so: PC (program counter), AP (Alternate clause pointer), HP (Heap pointer), An/Xn so implementados como registrador de arquivo. Cada registrador tem o tamanho de 40 bits, incluindo 8 bits para representao de tipo de dados e garbage collection. Na implementao KL1 da PIM/m, foi tomado cuidado com o mecanismo de garbage collection, para isso um garbage collection incremental usando Multiple Reference Bit(MRB) foi introduzido. &.< Linguagem 7ara o *istema '7eracional P-)'* Baseados no Parlog e no Concurrent Prolog, uma equipe de pesquisadores desenvolveu a linguagem GHC(Guarden Horn Clauses), que originou a KL0(Kernel Language Zero). Um refinamento desta, produziu em 1987 a linguagem KL1 [Palazzo 1997]. A linguagem denominada KL1 foi utilizada para desenvolver o sistema operacional PIMOS (Parallel Inference Machine Operating System) em 1988. Ela uma linguagem de alto nvel mas, ao mesmo tempo, uma linguagem de mquina, isto significa ser adequada programao a nvel de registradores, posies de memria e portas lgicas Outras linguagens de programao em lgica foram e ainda so pesquisadas, por exemplo a linguagem de programao em lgica com restries denominada GDCC. Uma outra, denominada "Quixote" foi produzida para lidar com bases de dados dedutivas e orientadas a objetos. Para o gerenciamento de sistemas paralelos distribudos foi especificada a linguagem Kappa-P 5 . 5 Knowledge Application-Oriented Advanced Database Management como um sistema paralelo gerenciador de banco de dados para execuo em Mquinas PIM. 4.5.1 A linguagem paralela Kernel Language 1 KL1 A linguagem KL1 possui as seguintes caractersticas: Shoen 6 : representa um grupo de objetivos. O grupo utilizado como unidades de controle de execuo, nomeados como inicializao, interrupo, recomeo e aborto de execuo. Prioridade: um objetivo de um programa KL1 uma unidade de controle prioritrio. Cada objetivo tem uma prioridade de valor inteiro associado a mesma. Cada Shoen mantm o mximo e o mnimo de prioridades permitidas para os objetivos descritos acima. A linguagem permite um grande nmero de nveis prioritrios lgicos, os quais so traduzidos para prioridades disponveis fisicamente, para cada implementao. Especificao de Processador: cada objetivo pode ter uma especificao de processador, a qual designa o nmero de processadores para executar o objetivo. Sem isto, um objetivo executado no mesmo processador como um objetivo pai. A mquina de inferncia paralela experimental tinha 64 processadores PSI-II conectados em grid, alcanando o pico de desempenho de cerca de 10 MRPS 7 em listas de concatenao. O sistema operacional PIMOS para Multi-PSI e PIM foi o primeiro desenvolvido utilizando uma implementao KL1. 4.5.2 O sistema Operacional PIMOS Estruturas baseadas em conhecimento tm como caracterstica a existncia de uma base de conhecimento, a partir da qual se prope a criao de um suporte mais inteligente para as aplicaes e de melhores ambientes para o usurio. A idia de sistemas operacionais baseados em conhecimento no nova. Segundo [Li et al. 1995] eles eram chamados de Sistemas Operacionais Inteligentes e Sistemas Operacionais Baseados em Conhecimento. O sistema operacional PIMOS propunha uma mquina de inferncia paralela no sentido de implementar mecanismos de gerenciamento inteligente de sistemas distribudos. &.@ Resultados do Pro8eto Cinco execues de Mquinas de Inferncia Paralela PIM (parallel inference machines) foram eventualmente desenvolvidas: PIM/m , PIM/p , PIM/i, PIM/k , PIM/c. O projeto tambm produziu aplicaes para executar nestas mquinas, tais como o Sistema de Gerenciamento de Banco de Dados Kappa, o sistema de raciocnio HELIC-II e o provador de teoremas chamado MGTP. < +oncluso Inicialmente acreditava-se que o formalismo matemtico poderia ser a soluo para o desenvolvimento de mquinas potentes. A mquina abstrata de Warren estimulou os estudos para o desenvolvimento de compiladores prolog que poderiam ser testados em uma mquina lgica abstrata que simulava um hardware construdo para melhor se adaptar a realidade da programao em lgica. Utilizar a lgica no desenvolvimento de hardware e software era o principal objetivo das pesquisas do Projeto de computadores de quinta gerao iniciado no Japo e que durou aproximadamente uma dcada. O projeto no atingiu seus objetivos iniciais, que era comercializar potentes "mquinas lgicas ou "mquinas prolog. Este potencial seria obtido atravs do paralelismo que foi aplicado a nvel de software utilizando recursos paralelos do prolog e tambm a nvel de hardware atravs da criao de redes que executavam em paralelo mas que eram formados por elementos de processador que executavam sequencialmente. Mas, apesar disso, vrias idias seguintes as que foram lanadas neste projeto hoje so realidade, por exemplo a programao lgica distribuda sobre bases de dados usado em OWL 8
Web Ontology Language e a Computao Paralela 9 . Alm dos vrios estudos multidisciplinares: Lgica Jurdica, Linguagem natural, Lgicas Paraconsistentes, redes neurais artificiais paraconsistentes, Lgica aplicada Engenharia de Software, dentre outros. 6 Shoen a palavra Japonese correspondente a "manor em Ingls. 7 MRPS significa Mega redues por segundo o que corresponde a aproximadamente ao MPLIS (mega inferencias lgicas por segundo) do Prolog 8 OWL uma linguagem para definir e instanciar ontologias na Web. uma tecnologia importante para a futura implementao da Web Semntica. Lgica descritiva e lgica menos expressiva so as mais utilizadas. 9
Computao paralela caracterizada pelo uso de vrias unidades de processamento ou processadores para executar uma computao de forma mais rpida. @ Bi/liografia Beer, J. (1987). Concepts, Design and Performance Analysis of a Parallel Prolog Machine, Ph.D. Thesis, Tech. Uni. of Berlin, W. Germany. Buchsbaum, A. (2006). Lgica Geral. Disponvel em http://wwww.inf.ufsc.br/~athur/index.php?page=material_didatico&lang=pt. Acesso em 10/07/2008 Dutra, I.C., Geyer C.F.R., Vargas,P.K.(1999). Parallelism in Logic Programming, Intl. School on Advanced Techniques for Parallel Computation with Applications, Natal, RN, Brasil, Sep, 35 pages. Galante,G. (2004). Programao em Lgica: Prolog. Programa de Ps-Graduao em Computao. UFRGS, Porto Alegre. Hanus, M. (1988). Formal Specification of a Prolog Compiler. In Proc.Int.Workshop on Programming Language Implementation and Logic Programming, Orlans, May. Springer LNCS 348, pp.273-282 Hassan At-Kaci. (1990). "Warren's Abstract Machine -- A Tutorial Reconstruction", MIT Press, Cambridge, Mass. Beer, J., Giloi, W.K. (1987). POPE - a parallel-operating prolog engine. In Future Generation Computer Systems. Volume 3, Issue 2, May, Pages 83-92. Kowalski, R. (1973). Predicate Logic as a Programming Language Memo 70, Department of Artificial Intelligence, Edinburgh University. LI,X., Xing, D., Jun, C., Yuhua, Z., Zhongxus, S. (1995). An Introduction to Intelligent Operating System KZ2. ACM Operating Systems Review, Vol.29 no.1. Nolt, J., Rohatyn, D. (1991). Lgica. McGraw & Makron Books. So Paulo Palazzo, L.A.M. (1997). Introduo a programao prolog. EDUCAR Editora da Universidade Catlica de Pelotas. Pelotas-RS. Price, A.M., Lisba, M.L. (2003). Linguagens de programao em Lgica. Notas de Aula. Disponvel em http://allanedgard.sites.uol.com.br/MAT052/LOGICAN.pdf Rosa, J. L. G. (1995). A Quinta Gerao, aderno de Informtica, !ornal "irio do Po#o, Campinas, SP, 25/05. Schultz,M.R.O.(2003). Metodologias para o ensino de lgica de programao de computadores. Dissertao apresentada Universidade Federal de Santa Catarina, Novembro. Acesso em 11 de Agosto de 2008. Silva, A.C.S., Silveira, C. Prolog. Disponvel em http://anacarol.blog.br/old/aulas/artigos_uteis/prolog.pdf Soler,L. (2006). Arquitetura PIM/m. Instituto de informtica, Universidade Federal do Rio Grande do Sul-UFRGS, Rio Grande do Sul. Disponvel em http://www.inf.ufrgs.br/procpar/disc/cmp135/trabs/soler/pim.pdf. Acesso em 21 de Agosto de 2008. Ueda,K. Chikayama, T. (1990). Design of the Kernel Language for the Parallel Inference Machine. The Computer Journal, Vol.33, No.6(Dec), pp. 494-500) Vargas, Patrcia Kayser. (1997). Explorao de Paralelismo OU em uma Linguagem em Lgica com Restries. In: SEMANA ACADMICA DO CPGC, Porto Alegre, RS. Anais. Porto Alegre: CPGCC/UFRGS. p.31-34 Valente, J.A.(1993). Computadores e Conhecimento: Repensando a educao. UNICAMP, SP: Ed. NIED.