왜 논리 프로그래밍이 아닌가?


13

소프트웨어 산업에서 논리 프로그래밍 언어 (예 : Prolog)의 사용에 대해 아직 들어 본 적이 없으며, 취미 프로그래밍이나 오픈 소스 프로젝트에서이 언어의 사용법을 알지 못합니다. 그래도 (Prolog)는 어느 정도 학문적 언어로 사용됩니다 (왜 학계에서 사용됩니까?).

이것은 왜 논리 프로그래밍을 사용해야하는지, 왜 안합니까? 왜 산업 사용량이 감지되지 않습니까?

답변:


8

학계 밖에서는 ... AI에서, 때로는 게임에서 더 많이 사용한다고 들었습니다. (Black & White 시리즈에서 AI를 주도했다고 들었습니다). 또한 특정 비즈니스 및 경제 시뮬레이션을위한 규칙 엔진을 실행하는 데 사용되는 변형에 대해서도 들었습니다.

널리 채택되지 않은 것에 대한 나의 추측은 다음과 같습니다.

  • 이상합니다-대부분의 사람들은 프로그래밍에 익숙하지 않으며 다른 언어로 필요한 것을 할 수 있습니다.
  • 공급 업체 지원 부족-Microsoft가 갑자기 Next Big Thing으로 Prolog # (. NET 라이브러리 및 툴셋의 전체 가중치 및 그 뒤에 공식 지원)를 푸시하기 시작한 경우 IBM과 Oracle이 경쟁 할 무언가를 내놓았습니다. 그것이 픽업 참조하십시오!
  • 통합 부족-Prolog에 사용할 수있는 라이브러리가 무엇인지 모르겠습니다. 마지막으로 그래픽 또는 네트워킹 라이브러리가 많지 않은지 확인했습니다. 즉, Prolog "응용 프로그램"이 나머지 응용 프로그램과 상호 작용하는 다른 응용 프로그램에 포함되어 있어야합니다. 세계.

"프롤로그"응용 프로그램 "은 다른 세계와 상호 작용하는 다른 응용 프로그램으로 랩핑되어야합니다." 그것은 실제로 우리를위한 기능이었습니다. 프롤로그 비트에 대한 인터페이스가 너무 단순하여 프롤로그 비트를 더 쉽게 분리 할 수있었습니다.
S.Lott

@ S.Lott : 좋습니다. 학교에있을 때 실제로 Prolog로 응용 프로그램을 만들고 싶었을 때 조각 사이의 배관 및 배선이 주요 도전과 장애물이라는 것을 알았습니다.
FrustratedWithFormsDesigner

5

우리는 그것을 파서 (parser)를 구축하는데 사용했다. lex / yacc보다 작업하기가 더 쉬웠습니다.

왜 산업 사용량이 감지되지 않습니까?

이것은 대답 할 수 없습니다. "감지 가능"은 무엇을 의미합니까? 누가 탐지 메모를 받아야합니까?

http://www.meridiansystems.com/landing/ppc/prolog/getvideo.asp

사실을 원한다면 Meridian Software에 프롤로그 제공에 대해 문의하십시오.

그러나 내가 경험 한 몇 가지 장벽이 있습니다.

첫째, 프롤로그가 느려질 수 있습니다. 후보 규칙이 많고 검색 공간을 제한하는 간단한 절단 작업이없는 경우 무언가를 수행하는 데 시간이 걸릴 수 있습니다.

둘째, 프롤로그는 절차 적이거나 기능적이지 않으므로 많은 프로그래머가이를 사용합니다. (재미있게, 일부 프로그래머도 SQL을 사용합니다. 그 문제로 인해 일부 프로그래머는 SQL을 꺼리게 사용하고 조인 작업을 피하거나 COUNT(*)마술처럼 비효율적 인 주장과 같은 이상한 일을 합니다.)

셋째, 프롤로그는 다양한 사례가 무엇인지에 대한 명확한 생각이 필요합니다. 절차 적 프로그래밍은 느슨 할 수 있으며 여전히 안정적으로 작동합니다. 실행 불가능한 명령문은 허용됩니다.

대부분의 서클에서 다음이 허용됩니다.

b = a + 1
if a > b: # always False

이런 종류의 어리석은 사고는 프롤로그에 어려움을 겪습니다.


2

한 가지 문제는 Prolog가 실제로 계산하기 어려운 1 차 술어 논리로 프로그래밍되지 않는다는 것입니다. 따라서 단순화입니다.

논리적으로, 제안은 사실로 입증되거나, 거짓으로 입증되거나, 어느 쪽이든 입증되지 않을 수 있습니다. 프롤로그는 단지 입증되고 입증되지 않았으며, "검증되지 않음"은 일반적으로 거짓을 의미합니다. 또한 Prolog 절의 순서는 실행에 영향을 줄 수 있으며 이는 논리 절의 경우에는 해당되지 않습니다. 필자가 사용한 과정에서 Prolog를 논리적 언어 이상의 패턴 일치 언어로 생각하기 시작했습니다.

따라서 프롤로그 프로그래밍은 프롤로그 언어 자체만큼 논리적 정확성에 크게 의존하지 않습니다. 몇 가지면에서 유용한 언어이지만 주류와는 거리가 멀고 C ++과 같은 언어의 도구 및 커뮤니티 이점을 얻지 못했습니다.

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