Prolog가 전문적으로 유용합니까?


15

몇 년 전에 대학에서 프롤로그를 배웠습니다. 직업 생활 중에는 Prolog를 사용할 필요가 없었습니다. 내가 특별한 것을 놓친 적이 있습니까?

내가 기억하는 한, Prolog는 저명한 프로그래밍 언어와 비교할 때 완전히 다른 사고 방식이 필요합니다.

Prolog가 실제로 전문적으로 유용한 것을 구현하는 데 사용 되었습니까?


3
프롤로그 (및 팝 로그)는 AI 코딩에 매우 좋습니다. AI 관련 작업을 전문적으로 / 진실하게 수행하지 않으면 전혀 사용하지 못할 수 있습니다. 비 엔지니어가 MATLAB을 심각하게 사용하지 않는 방법과 같습니다.
glasnt

1
좋은 질문. 프롤로그는 Uni Potsdam의 전산 언어학에서 가르치는 첫 번째 프로그래밍 언어이지만, 그 후에는 능숙하더라도 실제로 그다지 많이 사용하지는 않습니다. 불쌍해. StackOverflow에서 "누산기를 사용하는 방법"또는 "가능한 모든 답변을 얻는 방법"과 같은 질문을 볼 때마다 실제 전문 사용자가 어디에 있는지 궁금해합니다. 대부분은 숙제처럼 보입니다. 또는 Prolog 숙련도는 질문이없는 로봇으로 변할 것입니다.
Felix Dombek

한때 프롤로그로 작성된 고장 감지 시스템에 대해 들어 본 후 오스트리아 어딘가에서 구현했습니다 (Klagenfurt?). 이 "전문적으로 유용하다"고 생각하면 대답은 "예"입니다.
Giorgio

답변:


12

제 생각에, 실제 세계에서 그것을 사용할 것인지에 관계없이 Prolog의 기초를 배우는 것은 매우 가치가 있습니다. 통일의 기본 아이디어와 (사소하고 비효율적 인) 구현을 처리하는 방법을 이해하는 것도 매우 가치가 있습니다.

선언적 논리를 사용하여 가장 잘 해결할 수있는 문제가있는 경우 이상적으로이를 인식하고 해당 작업에 적합한 도구를 사용하도록 선택해야합니다.

그러나 Prolog에는 기존의 명령형 언어와는 매우 다른 사고 방식과 기능적 언어와는 매우 다른 사고 방식이 필요하다는 데 동의합니다. 특정 시점을 넘어 서면, 많은 경험이 필요한 것 같습니다 (무엇이든 마찬가지입니다). 그리고 뇌가 내 귀에서 빠져 나가게하는 많은 "교과서"지식도 있습니다.

내 인상은 ... 우리 둘 다 어느 정도 특별한 것을 놓치고 있을지 모르지만, 실제 경험을 개발하는 것은 물론, Prolog에 대해 합리적으로 완전한 교과서 수준의 지식조차 배우는 데 시간을 투자하는 것은 실용적이지 않을 것입니다. 가능한 논리 프로그래밍 경력을 고려하지 않는 한

저는 최근 1989 년에 출판 된 AI 및 전문가 시스템에 관한 책을 읽었습니다. 중고 서점에서 운이 좋은 곳입니다. 중요한 부분은 Lisp 및 Prolog에 대한 전문 자습서입니다. 사실, 그것이 다루는 것의 대부분은 꽤 오랫동안 인상적이지 않았지만 (검색, 휴리스틱 등) 여전히 흥미 롭습니다 .IMO는 약간의 시간을 투자 할 가치가 있습니다.

Prolog를 구체적으로 설명하는 최신 책은 언어를 배우는 데 더 좋을 것입니다. 그러나 위험은 뇌가 중급에서 고급까지 어딘가에 귀에서 빠져 나오는 것입니다.


AI / 프롤로그 초보자입니다. 추천 할 온라인 자료가 있습니까?
yati sagade

@yati-amzi.com/AdventureInProlog/advtop.php- Amzi 사이트에서 내가 기억하는 한 괜찮은 것처럼 보였지만 아주 오래 전에 튜토리얼을 실행했습니다 . Prolog에 대해 최근에 (아마도 지난 5 년간) 살펴본 것은이 답변에서 언급 한 AI 서적입니다. 의견을 게시하는 대신 여기에서 질문을 검색 / 질문해야합니다. 특히 기본적으로 장기 초보자 인 사람이 작성한 답변에 추가 된 의견입니다. 프롤로그는 거의 볼 수없고 깊이가 아주 적습니다. 그렇지 않으면 10 년 이상 전에 초보자가되지 않았습니다.
Steve314

10

이것은 내가 아니었지만 질문이 "누군가 프롤로그에 심각한 것을 구현 했습니까?" 이것은 계산할 수 있습니다 :

http://asmarterplanet.com/blog/2011/02/the-watson-research-team-answers-your-questions.html

Watson은 Linux를 실행하는 10 개의 IBM Power 750 서버 랙으로 구동되며 15 테라 바이트의 RAM, 2,880 개의 프로세서 코어를 사용하며 80 테라 플롭에서 작동 할 수 있습니다. Watson은 대부분 Java로 작성되었지만 C ++ 및 Prolog로 작성된 상당량의 코드가 작성되었으며 모든 구성 요소는 UIMA를 사용하여 배포 및 통합됩니다.



6

프롤로그는 빠른 프로토 타이핑에 좋습니다. 예를 들어, http://www.cri.ensmp.fr/classement/doc/A-381.pdf 에서 GCC에 대한 SSA 변환은 먼저 Prolog에서 구현 된 다음 C에서 구현됩니다.

형식 시스템의 빠르고 더러운 구현, 특정 최적화 및 의미 검사를 위해 컴파일러 내부에서 Prolog를 사용하고 있으며 성능이 만족스럽지 않은 경우에만 해당 Prolog 코드를 중요한 것으로 다시 작성합니다.


2

당신은 매우 빨리 대답했지만 90 년대 중반에 Prolog를 사용하여 보험료율 계산기를 설계하여 보험료율에 맞는 특정 고객 세그먼트 (읽기 위험)를 결정했습니다. 반드시 매일 볼 필요는 없지만 수년간 P & C 보험료에 영향을 미쳤습니다.


2

(본 FAQ)에 의하면 1 개 왓슨 부분의 위험을 연주 IBM 머신은 도입부에 기록 하였다. (질문 # 6 참조)


1

나는 (중요한) 소수의 경우 (진단 전문가 시스템; HTML 변환; 멤버십 설정)에서 Prolog를 전문적으로 사용했습니다. 내가 예, 바이어스가 여기에있다, 그래서 언어에 대한 깊은 애정을 가지고 있지만 프롤로그 인 경우에 대한 객관적 쉽게 (더 / 마찬가지로) 당신이 정말로 처리 할 필요가 suitable- 순환 구조를 ; 내가 줄 수있는 가장 좋은 예는 관계형 데이터베이스 테이블이지만 무수히 많은 다른 예가 있습니다 (아마도 사용자 입력 또는 (대부분) 수학 함수와 같은 카운터 예를 열거하는 것이 더 쉽습니다 (그러나 많은 수학 함수는 재귀 구조를 가지고 있으므로 따라서) 완벽하게 적합합니다 (예 : 이산 고속 푸리에 변환).

그러나 물론 재귀 구조의 처리 측면에서만 '엔드-투-엔드 시스템'을 정의 할 수있는 것은 거의 없습니다 (예외 : 이론 증명-하지만 이것은 다소 학문적 인 연습 *). 따라서 프롤로그 프로세스는 운이 좋습니다. 모든 종류의 서로 다른 기술을 사용하여 '표준 표준 프로세스'에 접목 할 수 있습니다 (웹 서비스 인터페이스가 아닌 일반적으로 적합한 것은 거의 중요하지 않습니다). 따라서 UI, 임의 이벤트 처리 등을 처리 한 다음 필요한 경우 핸드 오버 할 수 있습니다 (복잡한 데이터베이스 쿼리 또는 재귀 구조로 수행 할 수있는 여러 작업 수행). 예를 들어 LINQ보다 아름답게 작동합니다.

민감한 비트로 재귀 구조를 파악하고 아름답고 깨끗하며 우아하고 유지 보수가 가능한 프롤로그를 작성하십시오! :)

PS를 Prolog를 사용하지 않을 때 C #으로 넘어갑니다.

  • 그러나 상업 프로그램의 적어도 일부 측면이 표준 관행으로 올바른 것으로 판명 된 날은 그리 오래 갈 것입니다.

1

좋아하는 언어로 스도쿠 솔버를 작성하고 프롤로그에서 어떻게 수행되는지 확인하십시오. 일반적으로 모든 CLP 문제는 Prolog와 같은 선언적 언어에 적합합니다.

또한 하드웨어 및 소프트웨어의 공식 검증에 광범위하게 사용됩니다 (비정상적으로는 전문적으로도 회사에 대한 언급은 없습니다).

마지막으로 Erlang은 내결함성과 동시성을 염두에두고 Prolog의 영향을 크게받습니다.


0

미국 및 다른 여러 국가에서 많은 메일을 읽고 분류하는 소프트웨어는 고도로 최적화 된 컴파일러를 사용하여 Prolog로 작성됩니다. 메일 주소의 구문은 명확한 구문 문법으로 작성되어 유지 관리가 쉽고 여러 국가 및 산업 사용자의 규칙에 따라 독자를 쉽게 적응시킬 수 있습니다. 우편 서비스는 종종 전달 주소, 우체국 상자 대 거리 주소 등과 같은 것들에 대한 복잡한 규칙을 가지고 있으며, 이러한 규칙은 쉬운 유지 보수를 위해 Prolog에도 공식화되어 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.