Estou numa Graduação em tecnologia, e esse semestre pegue a matéria de Inteligência Artificial e a abordagem para aprendizado de IA é utilizando PROLOG.
Quais métodos, linguagens, abordagens vocês acham melhor para o aprendizado de IA?
Acredito que 100% da turma não está curtindo aprender sintaxe, semântica e etc de PROLOG para aprender conceitos de IA. Queria saber a opinião de vocês. 
Seu professor chegou a discutir o porquê do uso de Prolog? Até onde entendo, Prolog é algo histórico na computação, mas a sintaxe e estrutura realmente são bem mais distantes de linguagens mais populares, o que gera desconforto, principalmente pra quem está iniciando. Às vezes, embora seja uma linguagem considerada poderosa na área de IA, é ensinada simplesmente por tradição, não porque leva a um entendimento melhor dos algoritmos.
IA, no fim das contas, envolve algoritmos que, em teoria, podem ser implementados em qualquer linguagem de programação. Obviamente, certas linguagens tornam as coisas menos complicadas (como em qualquer algoritmo). Atualmente, não vejo motivo para não usar linguagens como Python e Lua no ensino de algoritmos, mesmo de IA. Mas não sou professor nem acadêmico, portanto minha visão pode não ser coerente com a realidade. Se todos estão incomodados, recomendo discutir com seu professor os motivos do uso de Prolog, e se há a possibilidade de alternativas.
Abraço.
1 curtida
Acho que a abordagem com PROLOG é uma alternativa interessante. No paradigma lógico, ao invés de definir de forma procedural como chegar à solução de um problema, a gente descreve como o mundo funciona usando uma série de regras e a linguagem é responsável por encontrar a solução (ou descobrir que não existe solução).
Dá pra fazer programação lógica em qualquer linguagem, você só precisa de um solver decente. O bom de usar PROLOG é que já vem tudo pronto e a linguagem te permite se expressar de forma mais natural, mas tem bibliotecas prontas para as linguagens populares. Por exemplo: java, python, clojure. Tem pra tudo, só pesquisar.
No livro do Russel tem bastante material sobre essas duas formas, e também o básico de lógica proposicional e lógica de primeira ordem. Na seção 4.4 do SICP tem a implementação (e toda a explicação) em LISP de uma linguagem de programação lógica (vale muito a pena ler).
Algo que ajuda bastante é resolver os mesmos problemas usando algoritmos de busca e algoritmos de inferência, para sentir como as duas abordagens funcionam e entender as diferenças de modelagem na prática.
Existe um mundo de possibilidades, tudo depende do quanto você está interessado no assunto
Boa sorte!
1 curtida
Mas em um curso de graduação, vc acha que o paradigma lógico seja uma boa forma de se ensinar Inteligência Artificial?
Até por que sei que provavelmente só vão ser passados conceitos, tenho ciência que IA é um mundo de coisas…
E se fosse de forma “conceitual-prático”? Faria mais sentido para os alunos?
Na verdade eu não tenho nenhuma base de ementa de disciplina em outras universidades, posso até postar aqui a deste semestre.
Qual graduação você está fazendo?
Como disse, em teoria, qualquer paradigma ou linguagem serve, por isso falei pra você discutir com seu professor os motivos de se usar Prolog. Ele possivelmente deseja que vocês tenham contato com linguagens além das mais famosas, e Prolog é clássico nesse sentido, por isso o uso. Mas se está realmente prejudicando o aprendizado, é algo que vale a pena ser discutido.
Note, porém, que os alunos terem dificuldade por conta da linguagem ser diferente não é desculpa para não ser ensinada. Às vezes, é importante sair da zona de conforto. Se não for assim, todo mundo aprenderia 1 linguagem só pra tudo.
O que você quer dizer com conceitual-prático?
Quando estudei IA na graduação, foi com Java, mas bastante conceitual, focando em explicar os algoritmos. Tive contato com outras linguagens (Smalltalk, Scheme, Lisp), mas em outras disciplinas.
Abraço.
1 curtida
Depende. Uma linguagem de programação que te permite se expressar de forma simples sobre o problema que está tentando resolver é muito útil. No pior dos casos, você aprende uma forma nova de modelar, mesmo que use só para resolver os problemas da disciplina. Se assuntos como agentes lógicos/dedutivos, inferência, lógica proposicional ou lógica de primeira ordem estiverem na ementa, por exemplo, prolog é uma ótima alternativa. Se esses assuntos não estiverem na ementa e o professor quiser implementar qualquer outra coisa em prolog, a linguagem vai passar a ser um empecilho e uma perda de tempo.
Eu preferiria muito mais aprender prolog e programar assuntos de lógica no computador para resolver problemas do que ficar aplicando regras de forma mecânica só no papel e na imaginação.
Tive essa experiência na universidade. Fiz duas matérias onde aprendi lógica de forma mais profunda. Na primeira foi só regras de inferência, exercícios no papel e prova. Acabei esquecendo muita coisa. Na segunda, pude programar pra aplicar os conceitos que estava aprendendo em problemas. No segundo caso fixou muito mais a matéria.
Aprender com propósito é muito melhor.
1 curtida