문제

AI 프로그래밍에 사용된다고 들었 기 때문에 LISP를 배우고 있습니다. 약간의 탐험을 한 후에, 나는 아직도 AI 예제 나 언어로 더 기울어 질 수있는 언어를 찾지 못했습니다.

LISP는 과거에 사용할 수 있었기 때문에 사용 되었습니까, 아니면 내가 놓친 것이 있습니까?

도움이 되었습니까?

해결책

LISP는 1980 년대 말까지 AI에서 사용되었습니다. 그러나 80 년대에는 Common LISP가 "AI 언어"로서 비즈니스 세계에 과매도가 높았습니다. 백래시는 대부분의 AI 프로그래머를 몇 년 동안 C ++로 강요했습니다. 요즘 프로토 타입은 일반적으로 더 젊은 동적 언어 (Perl, Python, Ruby 등)로 작성되며 성공적인 연구의 구현은 일반적으로 C 또는 C ++ (때로는 Java)입니다.

당신이 70 년대에 대해 궁금하다면 ... 글쎄, 나는 거기에 없었습니다. 그러나 나는 LISP가 AI 연구에서 세 가지 이유로 (중요한 순서로) 성공했다고 생각합니다.

  1. LISP는 우수한 프로토 타이핑 도구입니다. 그것은 최고 아주 오랫동안. LISP는 여전히 해결 방법을 모르는 문제를 해결하는 데 여전히 좋습니다. 이 설명은 AI를 완벽하게 특징으로합니다.
  2. LISP는 기호 프로그래밍을 잘 지원합니다. 오래된 AI도 상징적이었습니다. 이 점에서 오랫동안 독특했습니다.
  3. LISP는 매우 강력합니다. 코드/데이터 차이가 약하기 때문에 약합니다 느낌 기능과 매크로가 내장 된 것들처럼 보이기 때문에 다른 언어보다 확장 가능합니다.

난 없어 Peter Norvig의 오래된 AI 책, 그러나 LISP에서 AI 알고리즘을 프로그래밍하는 법을 배우는 좋은 방법입니다.

면책 조항 : 저는 계산 언어학 분야의 대학원생입니다. 나는 자연 언어 처리의 하위 필드가 다른 분야보다 훨씬 더 잘 알고 있습니다. 어쩌면 LISP는 다른 서브 필드에서 더 많이 사용될 수 있습니다.

다른 팁

LISP는 AI에 사용됩니다. 기호로 잘 계산하는 소프트웨어의 구현을 지원하기 때문입니다. 기호, 상징적 표현 및 그것들과의 컴퓨팅은 LISP의 핵심에 있습니다.

기호로 컴퓨팅을위한 일반적인 AI 영역은 컴퓨터 대수, 정리 증명, 계획 시스템, 진단, 재 작성 시스템, 지식 표현 및 추론, 논리 언어, 기계 번역, 전문가 시스템 등입니다.

이 도메인의 많은 유명한 AI 응용 프로그램이 LISP로 작성된 것은 놀라운 일이 아닙니다.

  • 최초의 대형 컴퓨터 대수 시스템으로서의 macsyma.
  • AMD에 의해 사용되는 널리 사용되는 정리 속담으로서의 ACL2.
  • 미군이 첫 걸프 전쟁 중에 사용한 물류 플래너로서 다트. 이 LISP 응용 프로그램만으로도 당시 AI 연구에 대한 모든 미국 투자에 대한 상환을 받았다고합니다.
  • 스파이크, 허블 우주 망원경의 계획 및 일정 응용 프로그램. 다른 여러 대형 망원경에서도 사용됩니다.
  • 작성된 가장 큰 소프트웨어 시스템 중 하나 인 CYC. 인간 상식 지식의 영역에서 표현과 추론.
  • 최초의 상업적으로 사용되는 자연 언어 번역 시스템 중 하나 인 Metal.
  • 신용 카드 거래를 확인하는 American Express 'Authorizer의 조수.

이 분야에는 LISP로 작성된 수천 개의 응용 프로그램이 있습니다. 그것들에 매우 일반적입니다. 그들은 상징적 처리 영역에서 특별한 기능이 필요하다는 것입니다. LISP 위에이 도메인에 특수 통역/컴파일러가있는 특수 언어를 구현합니다. LISP를 사용하면 상징적 인 데이터 및 프로그램에 대한 표현을 만들 수 있으며 이러한 표현을 조작하기 위해 모든 종류의 기계를 구현할 수 있습니다 (수학 공식, 논리 공식, 계획, ...).

(다른 범용 프로그래밍 언어는 AI에서도 많이 사용됩니다. 특히 LISP가 AI에서 사용되는 이유에 대답하려고 노력했습니다.)

한 가지 이유는 도메인에 따라 구성된 구성으로 언어를 확장하여 효과적으로 도메인 특정 언어를 만들 수 있기 때문입니다. 이 기술은 문제 당신은 셔플 링 비트보다는 해결하고 있습니다.

내 생각에 항상 기능적 언어이기 때문에 코드와 데이터를 구별하지는 않습니다. 기능 정의 및 기능 호출을 포함한 모든 것은 목록으로 취급되고 다른 데이터와 마찬가지로 수정 될 수 있습니다.

따라서 자체 정보, 자체 수정 코드를 쉽게 작성할 수 있습니다.

가능한 대답 중 하나는 AI가 매우 어려운 문제의 모음이며 LISP는 AI뿐만 아니라 어려운 문제를 해결하기위한 좋은 언어라는 것입니다.

왜 마크로, 일반 기능 및 풍부한 내성은 간결한 코드와 도메인 추상화의 쉽게 도입 할 수 있습니다. 이는 더 강력하게 만들 수있는 언어입니다. 불필요한 많은 문제의 경우 자체 비용이 발생하지만 다른 문제는 전원이 필요합니다.

AI만으로도 이것에 대해 생각하는 것이 잘못이라고 생각합니다. AI-Winter와 같은 것들과 공통 LISP에 대한 상업적 효과와 같은 것들이 AI에 사용 된 이유를 묻는다면 산만 해지고 있습니다.

어쨌든, 나는 대부분의 AI 코드가 본질적으로 연구 코드 였기 때문이라고 생각합니다. LISP는 탐색 적 프로그래밍, 어려운 알고리즘 구현, 자체 수정 및 종종 수정 된 코드를위한 훌륭한 언어입니다. 다시 말해, 연구 코드의 경우.

나는 오늘날 대부분의 언어보다 더 효율적인 코드를 생성하면서 대부분의 언어보다 유연하고 강력하기 때문에 오늘 연구 코드 (수학, 신호 처리)에 LISP를 사용합니다. 일반적으로 C ++ 속도의 +/- 2의 요소 내에서 성능을 얻을 수 있지만, C ++, Java, C#을 사용하는 것보다 훨씬 더 많은 시간이 걸리는 복잡성을 훨씬 더 빨리 구현할 수 있습니다.

그래도 주제를 방황하고 있습니다. AI 코드는 연구 코드에 대한 강력한 접근 방식이기 때문에 AI 코드는 주로 Common LISP에서 한동안 작성되었다고 생각합니다. 여전히 그렇습니다. 그러나 'AI'알고리즘이 더 잘 이해되고 탐구되면서 그 일부는 가르치고 사용하기가 훨씬 쉬워서 학부 과정에서 연중 언어로 나타났습니다. 거기서부터 사람들이 이미 알고있는 것, 어떤 도서관을 이용할 수 있는지, 그리고 대규모 그룹에 적합한 문제가됩니다.

큰 이유는 기본 데이터 구조로서 목록의 유연성이라고 생각합니다.

당시에는 모든 종류의 복합 물체로 바꿀 수 있었고 메시지 전달과 다름적으로 새로운 것들이 선택한 언어로 만들었습니다. AI를위한 것이 아니라 크고 복잡한 작업에 대해 구체적으로. 특히 개념을 실험 할 때.

나는 당신이 옳다고 생각합니다 : LISP는 물건을 해킹하기위한 편리한 도구였습니다. 프로그램과 데이터를 많이 구별하지 않았기 때문입니다. 이를 통해 해커는 데이터와 마찬가지로 기능을 매우 쉽게 조작 할 수있었습니다.

그러나 LISP는 인간이 읽기가 매우 어렵습니다. 오늘은 프로덕션 AI 코드 (또는 아마도 프로토 타이핑)에 LISP를 사용하지는 않지만 스크립팅을 위해 Python을 선호합니다.

고려해야 할 또 다른 것은 언어와 관련된 기존 라이브러리/도구입니다. LISP 라이브러리를 Python 라이브러리와 비교할 수있는 위치에 있지 않지만 라이브러리와 오픈 소스가 이전보다 훨씬 더 중요하다고 생각합니다.

이 답변은 LISP와 Python의 다음과 비교에서 영감을 얻었습니다. http://amitp.blogspot.com/2007/04/lisp-vs-python-syntax.html

LISP는 기능적 언어 인 LISP가 재귀 알고리즘을 구현하기에 매우 좋은 선택이라는 것을 기억합니다. 의사 결정 프로세스 (Traversal) 및 최종 결과 (잎 노드)를 고려할 때 트리를 추적하고 돌아갈 수있는 것이 필수적입니다.

이것은 우리가 LISP를 공부 한 대학에서 AI 과정에서 나에게 들었습니다.

더 냉소적 인 대답은 "1980 년대 일본과 미국 사이의 정치 AI 전쟁을 잃었 기 때문"일 수있다. 재미가 있습니다 5 세대 컴퓨터 시스템의 영향에 대해 추측하는 블로그 게시물.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top