AI 프로그래밍에 사용된다고 들었 기 때문에 Lisp를 배우면서 내 지평을 넓히고 있습니다. 몇 가지 탐구를 한 후에도 AI 예제 또는 언어로 더 기울어 진 언어로 된 것을 찾지 못했습니다.
과거에 Lisp을 사용할 수 있었거나 방금 놓친 것이 있습니까?
AI 프로그래밍에 사용된다고 들었 기 때문에 Lisp를 배우면서 내 지평을 넓히고 있습니다. 몇 가지 탐구를 한 후에도 AI 예제 또는 언어로 더 기울어 진 언어로 된 것을 찾지 못했습니다.
과거에 Lisp을 사용할 수 있었거나 방금 놓친 것이 있습니까?
답변:
Lisp WAS는 1980 년대 말까지 AI에서 사용되었습니다. 그러나 80 년대에 Common Lisp는 "AI 언어"로서 비즈니스 세계에 과매도되었습니다. 백래시는 대부분의 AI 프로그래머가 몇 년 동안 C ++을 사용하도록 강요했습니다. 오늘날 프로토 타입은 일반적으로 젊은 동적 언어 (Perl, Python, Ruby 등)로 작성되며 성공적인 연구의 구현은 일반적으로 C 또는 C ++ (때로는 Java)입니다.
70 년대가 궁금하다면 ... 그러나 나는 Lisp가 AI 연구에서 세 가지 이유로 (중요한 순서로) 성공했다고 생각합니다.
나는이없는 피터 노르 빅의 옛 AI 책을 있지만 리스프에서 AI 알고리즘을 프로그래밍을 배울 수있는 좋은 방법이 될 예정이다.
면책 조항 : 저는 컴퓨터 언어학을 전공하는 대학원생입니다. 나는 자연어 처리의 서브 필드가 다른 필드보다 훨씬 더 잘 알고 있습니다. 아마도 Lisp는 다른 서브 필드에서 더 많이 사용될 것입니다.
Artificial Intelligence by Patrick Henry Winston
입니다. 제 2 판에 의해 그 책의 프로그래밍 장들은 그들 자신의 동기화 된 책으로 나뉘어졌다 Lisp
. 이름에서 알 수 있듯이 프로그래밍은 전적으로 에 Lisp
있습니다. people.csail.mit.edu/phw/Books/LISPBACK.HTML
Lisp는 AI를 사용하여 심볼로 잘 계산하는 소프트웨어의 구현을 지원하므로 AI에 사용됩니다. Lisp의 핵심은 기호, 기호 표현 및 이들을 사용한 컴퓨팅입니다.
기호로 계산하는 일반적인 AI 영역은 컴퓨터 대수, 정리 증명, 계획 시스템, 진단, 재 작성 시스템, 지식 표현 및 추론, 논리 언어, 기계 번역, 전문가 시스템 등입니다.
이 도메인에서 유명한 AI 응용 프로그램이 Lisp로 작성된 것은 놀라운 일이 아닙니다.
이 영역에는 Lisp로 작성된 수천 개의 응용 프로그램이 있습니다. 이들에게는 매우 일반적으로 심볼 처리 영역에서 특별한 기능이 필요하다는 것입니다. 하나는 이러한 영역에서 Lisp 위에 특수 인터프리터 / 컴파일러가있는 특수 언어를 구현합니다. Lisp을 사용하면 기호 데이터 및 프로그램에 대한 표현을 작성할 수 있으며 이러한 표현 (수학 공식, 논리 공식, 계획 등)을 조작하기 위해 모든 종류의 기계를 구현할 수 있습니다.
(AI에는 많은 다른 범용 프로그래밍 언어도 사용됩니다. AI에서 특히 Lisp가 사용되는 이유에 답하려고 노력했습니다.)
한 가지 이유는 도메인에 특정한 구문을 사용하여 언어를 확장하여 효과적으로 도메인 특정 언어로 만들 수 있기 때문입니다. 이 기술은 비트를 섞는 것이 아니라 해결 하려는 문제 에 대해 추론 할 수 있으므로 매우 강력합니다 .
필자는 항상 기능 언어이기 때문에 코드와 데이터를 구분하지 않는다고 생각합니다. 함수 정의 및 함수 호출을 포함한 모든 것을 목록으로 취급하고 다른 데이터와 같이 수정할 수 있습니다.
따라서 자체 검사, 자체 수정 코드를 쉽게 작성할 수 있습니다.
AI에 대해서만 생각하는 것은 잘못이라고 생각합니다. AI 겨울철 및 일반적인 lisp에 대한 상업적 효과와 같은 것들이 AI에 사용 된 이유를 묻는다면 산만하지 않습니다.
어쨌든 AI 코드의 대부분은 본질적으로 연구 코드이기 때문이라고 생각합니다. Lisp는 탐색 알고리즘, 어려운 알고리즘 구현, 자체 수정 및 종종 수정 된 코드를위한 훌륭한 언어입니다. 다시 말해, 연구 코드의 경우입니다.
대부분의 언어보다 더 유연하고 강력하면서도 대부분의 언어보다 효율적인 코드를 생성하기 때문에 일부 연구 코드 (수학, 신호 처리)에 lisp를 사용합니다. 나는 일반적으로 c ++ 속도의 +/- 2 요소 내에서 성능을 얻을 수 있지만 훨씬 더 빠르게 구현할 수 있으며 c ++, java, c #을 사용하는 경우보다 훨씬 많은 시간이 걸리는 복잡성을 처리합니다.
그래도 주제를 방황하고 있습니다. AI 코드는 연구 코드에 대한 강력한 접근 방식이기 때문에 주로 일반적인 lisp로 작성되었다고 생각합니다. 여전히 그렇습니다. 그러나 'AI'알고리즘이 더 잘 이해되고 탐색됨에 따라 일부는 가르치고 사용하기가 훨씬 쉬워 학부 과정에서 올해의 풍미가있는 언어로 나타났습니다. 거기에서 사람들이 이미 알고있는 것이 무엇인지, 어떤 라이브러리를 사용할 수 있는지, 그리고 큰 그룹에 적합한 것이 무엇인지가 문제가됩니다.
당신이 옳다고 생각합니다 : Lisp는 해킹을위한 편리한 도구였습니다. 프로그램과 데이터를 크게 구분하지 않았기 때문입니다. 이를 통해 해커는 데이터처럼 기능을 매우 쉽게 조작 할 수있었습니다.
그러나 lisp는 데이터와 프로그램 사이에 중괄호와 구별이 없으므로 인간이 읽기가 매우 어렵습니다. 오늘은 프로덕션 AI 코드 (또는 프로토 타이핑)에 lisp를 사용하지 않지만 스크립팅에는 파이썬을 선호합니다.
고려해야 할 또 다른 사항은 언어와 관련된 기존 라이브러리 / 도구입니다. 나는 lisp 라이브러리와 파이썬 라이브러리를 비교할 수는 없지만 라이브러리와 오픈 소스가 이전보다 훨씬 더 중요하다고 생각합니다.
이 답변은 lisp와 python의 다음 비교에서 영감을 얻었습니다. http://amitp.blogspot.com/2007/04/lisp-vs-python-syntax.html
Lisp는 기능적 언어이기 때문에 재귀 알고리즘을 구현하는 데 매우 적합하다고 들었습니다. 의사 결정 프로세스 (순회) 및 최종 결과 (리프 노드)를 고려할 때 나무를 추적하고 되돌아 갈 수있는 능력이 필수적입니다.
이것은 우리가 Lisp를 공부 한 대학의 AI 과정에서 내게 들었습니다.
보다 냉소적 인 대답은 "1980 년대 일본과 미국 간의 정치적 AI 전쟁이 없어 졌기 때문"일 수 있습니다. 5 세대 컴퓨터 시스템의 소멸이 Prolog에 미치는 영향을 추측 하는 재미있는 블로그 게시물이 있습니다.