Eu tenho aprendido o Lisp a expandir meus horizontes porque ouvi dizer que ele é usado na programação de IA. Depois de explorar um pouco, ainda não encontrei exemplos de IA ou qualquer coisa na linguagem que a tornasse mais inclinada a isso.
O Lisp foi usado no passado porque estava disponível ou há algo que estou perdendo?
lisp
artificial-intelligence
Cristián Romo
fonte
fonte
Respostas:
O Lisp foi usado na IA até o final dos anos 80. Nos anos 80, porém, o Common Lisp foi vendido em excesso ao mundo dos negócios como a "linguagem da IA"; a reação forçou a maioria dos programadores de IA a C ++ por alguns anos. Atualmente, os protótipos geralmente são escritos em uma linguagem dinâmica mais jovem (Perl, Python, Ruby, etc) e as implementações de pesquisas bem-sucedidas geralmente são em C ou C ++ (às vezes Java).
Se você está curioso sobre os anos 70 ... bem, eu não estava lá. Mas acho que o Lisp foi bem-sucedido na pesquisa de IA por três razões (em ordem de importância):
Eu não tenho o antigo livro de IA de Peter Norvig , mas é uma boa maneira de aprender a programar algoritmos de IA no Lisp.
Disclaimer: Eu sou um estudante de graduação em linguística computacional. Conheço o subcampo do processamento de linguagem natural muito melhor do que os outros campos. Talvez o Lisp seja usado mais em outros subcampos.
fonte
Artificial Intelligence by Patrick Henry Winston
. Na 2ª edição, os capítulos de programação desse livro se ramificaram em seu próprio livro sincronizado -Lisp
. Como o nome indica, a programação é totalmente inLisp
. people.csail.mit.edu/phw/Books/LISPBACK.HTMLO Lisp é usado para IA porque suporta a implementação de software que calcula muito bem com símbolos. Símbolos, expressões simbólicas e computação com elas estão no cerne do Lisp.
As áreas típicas de IA para computação com símbolos foram: álgebra computacional, prova de teoremas, sistemas de planejamento, diagnóstico, sistemas de reescrita, representação e raciocínio de conhecimento, linguagens lógicas, tradução automática, sistemas especializados e muito mais.
Não é de surpreender que muitos aplicativos de IA famosos nesses domínios tenham sido escritos no Lisp:
Existem milhares de aplicativos nessas áreas escritos em Lisp. Muito comum para eles é que eles precisam de recursos especiais na área de processamento simbólico. Um implementa linguagens especiais que têm intérpretes / compiladores especiais nesses domínios sobre o Lisp. O Lisp permite criar representações para dados e programas simbólicos e pode implementar todos os tipos de máquinas para manipular essas expressões (fórmulas matemáticas, fórmulas lógicas, planos, ...).
(Observe que muitas outras linguagens de programação de uso geral também são usadas na AI. Tentei responder por que especialmente o Lisp é usado na AI.)
fonte
Um dos motivos é que ele permite estender o idioma com construções específicas para o seu domínio, tornando-o efetivamente um idioma específico do domínio. Essa técnica é incrivelmente poderosa, pois permite que você raciocine sobre o problema que está resolvendo, em vez de embaralhar bits.
fonte
Meu palpite sempre foi que, sendo uma linguagem funcional, ela não diferencia entre código e dados. Tudo, incluindo definições de funções e chamadas de funções, pode ser tratado como lista e modificado como qualquer outro dado.
Portanto, códigos auto-inspecionantes e auto-modificáveis podem ser escritos facilmente.
fonte
Uma resposta possível é que a IA é uma coleção de problemas muito difíceis, e o Lisp é uma boa linguagem para resolver problemas difíceis, não apenas a IA.
Quanto ao motivo: macros, funções genéricas e rica introspecção permitem código conciso e fácil introdução de abstrações de domínio - é uma linguagem que você pode tornar mais poderosa. Para muitos problemas, isso é desnecessário e tem seus próprios custos, mas para outros problemas essa energia é necessária para avançar.
fonte
Eu acho errado pensar nisso apenas em termos de IA. Coisas como o inverno da IA e os efeitos comerciais no ceceio comum são perturbadores se você está perguntando por que foi usado para a IA, não por que não é usado com frequência agora ...
Enfim, acho que é porque a maior parte do código de IA era essencialmente de pesquisa. O Lisp é uma ótima linguagem para programação exploratória, para implementação de algoritmos difíceis, para código auto-modificado e frequentemente modificado. Em outras palavras, para código de pesquisa.
Hoje, uso o lisp para alguns dos meus códigos de pesquisa (matemática, processamento de sinais) porque é mais flexível e poderoso que a maioria das linguagens, enquanto gera um código mais eficiente que a maioria das linguagens. Normalmente, posso obter desempenho com um fator de +/- 2 da velocidade c ++, mas posso implementar as coisas muito mais rapidamente e lidar com a complexidade que levaria muito mais tempo do que eu usaria c ++, java, c #.
Isso está vagando fora do tópico. Eu acho que o código de IA foi escrito principalmente em linguagem comum por um tempo, porque é uma abordagem poderosa para pesquisar código. Ainda é; mas, à medida que os algoritmos de IA se tornaram mais compreendidos e explorados, algumas partes eram muito mais fáceis de ensinar e usar; portanto, eles apareceram nos idiomas de sabor do ano nos cursos de graduação. A partir daí, torna-se uma questão do que as pessoas já sabem, quais bibliotecas estão disponíveis e o que funciona bem para grandes grupos.
fonte
Eu acho que um grande motivo foi a flexibilidade das listas como uma estrutura básica de dados.
na época, ser capaz de transformá-los em todos os tipos de objetos compostos e em coisas novas como passagens de mensagens e polimorfismo, tornou a linguagem da escolha; não especificamente para IA, mas para tarefas grandes e complexas. especialmente quando eles estavam experimentando conceitos.
fonte
Eu acho que você está certo: o Lisp foi uma ferramenta útil para invadir as coisas. Isso ocorre porque não distinguiu muito entre programa e dados. Isso permitiu que hackers manipulassem funções com muita facilidade, assim como dados.
Mas o ceceio é bastante difícil para os humanos lerem, com seus aparelhos e a não distinção entre dados e programa. Hoje, não usarei lisp para nenhum código de IA de produção (ou talvez até prototipagem), mas preferiria muito o python para scripts.
Outra coisa a considerar são as bibliotecas / ferramentas existentes em / relacionadas ao idioma. Não estou em condições de comparar bibliotecas lisp com bibliotecas python, mas acho que bibliotecas e código aberto importam muito mais agora do que antes.
Esta resposta foi inspirada na seguinte comparação entre lisp e python: http://amitp.blogspot.com/2007/04/lisp-vs-python-syntax.html
fonte
Lembro-me de ouvir que, sendo uma linguagem funcional, o Lisp foi uma ótima opção para implementar algoritmos recursivos. Ser capaz de rastrear uma árvore e voltar ao trabalho é essencial ao considerar os processos de tomada de decisão (transversal) e o resultado final (nó da folha).
Isso me foi dito durante um curso de IA na universidade onde estudamos o Lisp.
fonte
Uma resposta mais cínica pode ser "porque perdeu uma guerra política de IA entre o Japão e os EUA na década de 1980". Há uma postagem divertida no blog que especula sobre o impacto do fim do sistema de computadores de quinta geração no Prolog .
fonte