AI의 대부분의 언어보다 lisp가 더 낫다는 오랜 믿음이 있습니다 (주로리스 퍼가 아닌).
이 믿음은 어디에서 시작 되었습니까? 그리고 실제로 어떤 근거가 있습니까?
AI의 대부분의 언어보다 lisp가 더 낫다는 오랜 믿음이 있습니다 (주로리스 퍼가 아닌).
이 믿음은 어디에서 시작 되었습니까? 그리고 실제로 어떤 근거가 있습니까?
답변:
LISP와 유사한 언어와 다른 언어의 주요 차이점 중 하나는 LISP에서 코드와 데이터가 동일하다는 것입니다. 이를 통해 프로그램이 언어의 기본 부분으로 새로운 것을 "학습"할 때 런타임 중에 알고리즘의 일부를 수정하는 등의 작업을 수행 할 수 있습니다.
LISP는 매크로를 통해 새로운 언어 의미를 쉽게 추가 할 수있는 능력이 있습니다. 이를 통해 AI가 작동하는 동안 해당 언어가 성장하고 자체 교정되며 발전 할 수있는 가능성을 가지고 AI와 함께 작동하고 진화 할 수있는 DSL을 실제로 정의하고 정의 할 수 있습니다.
Quadrescence에 동의하면 LISP의 사용 내역은 AI에 적합한 LISP 이미지를 향한 먼 길을갔습니다. AI에 LISP가 사용되는 이유가 훨씬 더 역사를 다룹니다.
lisp의 첫 번째 프로그램 중 일부는 정리 프로 버, 상징적 수학, 고전적인 ELIZA 등이었습니다. Peter Norvig의 PAIP와 같은 책뿐만 아니라 lips가 MIT AI 실험실에서 시작되었다는 사실과 같은 이미지는 일종의 이미지를 얻었습니다. 그 lisp는 AI에 좋습니다.
DARPA는 또한 AI 연구를 위해 대학에 자금을 지원했으며 Symbolics에서 상당량의 하드웨어를 구입했습니다. 자금 부족은 결국 소위 "AI winter"로 이어졌습니다.
마지막으로, 포트란과 같은 원래 언어 (또는 ASM과 같은 "언어")가 수치 계산에 기본적으로 사용되었습니다. 당신은 그것들의 숫자와 배열로 작업했습니다. 요즘 우리는 대부분의 현대 언어로 상징이나 원하는 거의 모든 물건을 만들 수 있습니다.
따라서 인공 지능이 AI에 더 좋은 이유는 더 이상 사실이 아닙니다. 그러나 "작은 인공 지능에 좋다"는 생각은 여전히 남아있다.
lisp가 그 특징과 구조 때문에 더 나은 언어인지 아닌지는 전적으로 다른 경우입니다 (실제로 이런 종류의 것은 AI 이외의 많은 다른 영역에 적용되기 때문에 일반적으로 오래된 화염 전쟁으로 이어질 것입니다).
현재 AI 프로그램에 대해 살펴 보겠습니다 : (1) 로봇 (예 :자가 운전 차량). DARPA 그랜드 챌린지에서 탁월한 자동차 주행 소프트웨어는 Lisp가 아닙니다. 오히려 C ++ 또는 Java와 같은 절차 적 언어였습니다. (2) 자연어의 기계 번역. Lisp는 널리 사용되는 생산 시스템에서이 목적으로 사용되지 않습니다. (3) 체스 게임과 같은 게임. Fritz와 같이 널리 사용되는 우수한 체스 프로그램에서는 Lisp를이 목적으로 사용하지 않습니다.
Lisp는 기본 AISP 데이터 구조가 필요한 기호 추상화 수준에 맞는 기호 논리 프로그램을 신속하게 프로토 타이핑하기 위해 1960 년대 미국 AI 연구소에서 발명하고 개발했습니다. 연산자 및 피연산자 목록으로 표시됩니다.
그러나 프로덕션 프로그램의 경우 정적 유형 언어 및 다양한 타사 라이브러리의 소프트웨어 엔지니어링 이점은 AI 작업을 수행하는 최신 현대 시스템에는 Lisp가 고려되지 않음을 의미합니다.
@Stephen Reed는 매우 잘 말했습니다. 70 년대 MIT AI 연구소에 있었다는 것만 추가 할 수 있습니다. 그때 Lisp의 기원에 관한 이야기를 들었습니다. 맹세 할 수는 없지만 다음과 같이 진행됩니다.
존 맥카시 (John McCarthy)는 50 년대에 MIT에 있었고, 프로그램의 속성을 증명하기 위해 노력하고 있었고,이를 위해 람다 미적분학 (Lamda Calculus)과 유사한 간단한 구문을 사용하고있었습니다.
이야기는 대학원생 중 한 명이 프로젝트 (해석, 정리 증명, 또는 상징적 수학, 어느 것을 기억하지 못하는지)를하고 싶었고 McCarthy에게 어떤 언어를 사용할 것인지 물었습니다. 대답은-물론 포트란. (다른 것은 많지 않았으며, 목록 처리 자체는 상당히 잘 알려졌지만 언어가 아닌 서브 루틴 패키지로만 알려져있었습니다.) 어쨌든 중첩 된 목록 구조에서 기호를 처리하는 프로그램이 만들어졌습니다. 그것들을 읽고 인쇄하는 방법과 eval
기능, 그리고 언어 인 Voila '와 함께. LIST 처리 언어. 거기에서 벗어났습니다.
우리가 당시에했던 알고리즘 (그리고 여전히 소수의 사람들이하고있는 알고리즘)의 경우, 상징적 표현을 쉽게 조작 할 수있는 언어가 필요했습니다. 이것이 Lisp이 잘한 일입니다. 기본 개념에는 Prolog, Scheme 등과 같은 다른 이름으로 많은 변형이있었습니다.
인공 지능은 많은 사람들에게 많은 것을 의미하며, 다른 언어는 다른 것들에 대해 좋지만 기호 조작으로 설명 될 수있는 문제에 대해서는 어떻게 든 Lisp의 후손이 아닌 유용한 언어를 찾기가 어렵습니다.
Lisp는 AI라고 불리는 것들, 적어도 90 년 대경까지 AI의 대부분이었던 로직, 검색 및 파싱 관련 것들에 이점이 있습니다.
Lisp의 주요 장점은 매크로, 데이터 코드, 메타 프로그래밍 지원입니다.
표준 ML (SML)은 예를 들어 80 년대 이후 AI에서 널리 사용 된 또 다른 언어입니다. 목표 CAML과 F #은 SML의 진화입니다.
ML 제품군 (및 Haskell 등)의 주요 장점은 패턴 일치입니다. 이것은 아마도 Lisp에서도 가능하지만 언어에 내장 된 것이 아니라 메타 프로그래밍 라이브러리를 통해 가능합니다. Haskell에서도 사용할 수 있지만, 현재로서는 최소한 함수형 프로그래밍 언어 외에는 패턴 일치가 일반적이지 않습니다.
LISP는 기본적으로 확장 유형이없는 람다 미적분학이고 ML은 기본적으로 확장 유형 람다 미적분학이라고 주장했습니다. 나는 람다 미적분학에 대한 지식이 확실하지 않습니다.
AI는 또한 수년에 걸쳐 훨씬 더 광범위한 주제가되었으며 거의 완전히 사라졌습니다. 데이터 마이닝은 AI의 한 하위 필드로 간주 될 수 있습니다. 많은 인공 지능 (OCR, 음성 인식)은 인공 지능이되는 것을 거의 중단했습니다. 그것들은 다른 애플리케이션과 마찬가지로 응용 프로그램 일뿐입니다. 그리고 AI는 신호 처리 및 다른 종류의 숫자 처리에 훨씬 의존합니다.
OCR 및 음성 인식의 경우 AI는 항상 신호 처리 및 수 크 런칭에 의존했습니다. 네, 이것에는 약간의 모순이 있습니다. ;-) 나는 정말로 알지 못하는 것에 대한 가중치를 줄 수 없습니다.
어쨌든 현대 AI 응용 프로그램 전체에 적합한 단일 언어가 없을 수도 있습니다. 현대 AI에는 다국어 개발이 많이 있다고 생각합니다. 그리고 나는 일부 프로젝트에서 C와 C ++를 찾을 수 있다는 것을 거의 보증 할 수 있습니다. 비슷한 이유로 많은 파이썬이 있다면 놀라지 않을 것입니다. 좋은 숫자 라이브러리를 사용하면 파이썬은 숫자 처리 작업을 쉽게 처리 할 수 있습니다.
자율 주행 자동차 중 하나에서 비전 시스템이 경로 계획 시스템과 다른 언어로 작성되고 다른 하드웨어에서 실행된다고 생각합니다.