A primeira vez que comecei a ouvir falar de inteligência artificial foi no início dos anos 80, e a linguagem mais famosa na época chamava-se Prolog. Nessa época, dividiam-se os sistemas de inteligência artificial em dois grandes grupos. Os expert systems ou sistemas peritos, e as redes neurais. O sistema perito é um software que utiliza conhecimento e regras baseadas em especialização humana para tomar decisões ou realizar tarefas complexas em um determinado domínio. Já a rede neural é um método que se inspira no funcionamento do cérebro humano, usando nós interconectados (neurônios artificiais) para processar e analisar dados, permitindo que um sistema aprenda a reconhecer padrões e fazer previsões. Nessa década os micro-computadores estavam muito no início, e tinham um tamanho considerável com uma capacidade de processamento e armazenamento muito pequena. Com isso as redes neurais ainda eram coisa do futuro, porque não havia capacidade de armazenamento ou processamento para alavancar as novidades. Então destacou-se o Prolog, uma linguagem declaratória que implementava um programa de regras de produção. Ou seja toda a lógica era definida através de regras do tipo SE-ENTÃO.
A linguagem de programação Prolog nasceu de um projeto que não tinha por foco a implementação de uma linguagem de programação, mas o processamento de linguagens naturais. Na Universidade de Marselha, Alain Colmerauer e Robert Pasero trabalhavam na parte de linguagem natural e Jean Trudel e Philippe Roussel trabalhavam na parte de dedução do projeto. Interessado pelo método de resolução SL, Trudel persuadiu um dos seus inventores, Robert Kowalski, que se uniu ao projeto. O projeto resultou em uma versão preliminar da linguagem Prolog em fins de 1971 sendo que a versão definitiva apareceu em fins de 1972.
Há vários tipos de aplicações onde os sistemas peritos são utilizados. Por exemplo, sistemas médicos, onde o programa vai fazendo perguntas para o paciente até chegar a uma conclusão final. Aplicações financeiras também usam esse tipo de linguagem, como análise de crédito, risco de seguros, etc.
Características
O Prolog é uma linguagem declarativa, significando que em vez de o programa estipular a maneira de chegar à solução, passo a passo, (como nas linguagens procedimentais ou imperativas), limita-se a fornecer uma descrição do problema que se pretende computar. Usa uma base de dados de fatos e de relações lógicas (regras) que exprimem o domínio relacional do problema a resolver.
Um programa pode rodar num modo interativo, a partir de consultas (queries) formuladas pelo usuário, usando a base de dados (os 'fatos') e as regras relacionais (essencialmente implicações lógicas: se.. então). O mecanismo de unificação irá produzir através de uma cadeia de deduções lógicas a solução.
O Prolog é baseado num subconjunto do cálculo de predicados de primeira ordem, o que é definido por cláusulas de Horn. A execução de um programa em Prolog é efetivamente a prova de um teorema por resolução de primeira ordem. Alguns conceitos fundamentais são unificação, recursão, e backtracking.
Programando em Prolog
Programar em Prolog é bem diferente de programar em uma linguagem procedimental. Em Prolog se fornece fatos e regras para uma base de dados; então se executam consultas ou (queries) a essa base de dados. A unidade básica do Prolog é o predicado, que é postulado verdadeiro. Um predicado consiste de uma cabeça e um número de argumentos. Por exemplo:
gato(tom).
Isso informa à base de dados o fato que 'tom' é um 'gato'. Formalmente, 'gato' é a cabeça e 'tom' é o único argumento do predicado. Alguns exemplos de consultas que podem ser feitas ao interpretador Prolog baseado nesse fato:
tom é um gato?
?- gato(tom).yes.
O segundo tipo de predicado no Prolog é a regra, também chamada de "cláusula". Um exemplo de uma regra é:
luz(acesa) :- interruptor(ligado).
O ":-" significa "se"; essa regra significa que luz(acesa) é verdadeiro se interruptor(ligado) é verdadeiro. Regras podem também fazer uso de variáveis, como por exemplo:
avo(X,Z) :- pai(X,Y), pai(Y,Z).
(X é avô de Z se X é pai de Y e Y é pai de Z)
Então todo esse conjunto de fatos e regras definidos forma um programa Prolog.
E afinal, por onde anda o Prolog ?
Nos anos 80 havia vários compiladores para o Prolog. E um que se destacou muito, em função da empresa desenvolvedora, foi o Turbo Prolog, oferecido pela Borland. A Borland é uma empresa americana fundada em 1983 e famosa por grandes softwares de sucesso, como o Turbo Pascal e o compilador C na época, e até hoje o Delphi. Em 2009, a Micro Focus adquiriu a Borland e, posteriormente, a OpenText comprou a Micro Focus em 2023. Fiz uma breve pesquisa na Internet e vi que há alguns sites que oferecem interpretadores Prolog, incluindo o Turbo Prolog, mas para funcionamento em DOS. Não encontrei uma versão moderna adaptada ao Windows e com integrações com os softwares expoentes de hoje em dia.
Conclusões
O Prolog nos anos 80 deu sua contribuição para o crescimento da inteligência artificial, e hoje há softwares modernos que possuem mecanismos semelhantes e são usados para o desenvolvimento dos sistemas peritos. Mas uma peculiaridade que vejo nas matérias e publicações relacionadas a inteligência artificial, é que IA virou sinônimo de redes neurais. Ou seja, todos os softwares sempre fazem menção ao treinamento das redes com grandes volumes de dados. É claro que isso é fundamental para uma vasta gama de aplicações. Então, como não sou especialista no assunto, fico na dúvida, se as redes neurais atuais com seus dados e treinamento também implementam os antigos sistemas peritos, ou não os vemos muito na mídia por pertencerem a uma gama menor de aplicações.
Comentários