문제

논리 프로그래밍에 의해 나는 선언적인 프로그래밍 언어의 하위 파리그임을 의미합니다. 이 질문을 "if-then-else로 어떤 문제를 해결할 수 있습니까?"와 혼동하지 마십시오.

Prolog와 같은 언어는 매우 매력적이며 학습을 위해 학습 할 가치가 있지만, 그러한 언어로 어떤 종류의 실제 문제가 가장 잘 표현되고 해결되는지 궁금해해야합니다. 더 나은 언어가 있습니까? 로직 프로그래밍은보다 트렌디 한 프로그래밍 언어로 다른 이름으로 존재합니까? 답의 냉소적 인 버전은 변형입니다. 파이썬 역설?

도움이 되었습니까?

해결책

프로토 타이핑.

Prolog는 역동적이며 50 년이되었습니다. 컴파일러는 자유주의적이고 구문 미니멀리스트이며 "일을하는 것"은 쉽고 재미 있고 효율적입니다. Swi-Prolog에는 내장되어 있습니다 트레이서 (디버거!), 심지어 a 그래픽 트레이서. 사용하여 코드를 즉시 변경할 수 있습니다. make/0, 당신은 모듈을 동적으로로드하거나, 통역사를 떠나지 않고 몇 줄의 코드를 추가하거나, 현재 실행중인 파일을 다음과 같이 편집 할 수 있습니다. edit(1). 당신은 당신이 문제를 발견했다고 생각합니까? foobar/2 술부?

?- edit(foobar).

그리고 편집자를 떠나 자마자 그 일은 다시 컴파일 될 것입니다. 물론, Eclipse는 Java에게도 같은 일을하지만 Java는 프로토 타이핑 언어가 아닙니다.

순수한 프로토 타이핑 물건 외에도 Prolog는 매우 적합합니다. 로직 조각을 코드로 변환합니다. 따라서 자동 전파와 그 유형의 물건은 Prolog에 쉽게 쓸 수 있습니다.

첫 번째 Erlang 통역사는 Prolog로 작성되었습니다. Prolog는 구문 분석에 매우 적합하며 구문 분석 나무에서 찾은 논리를 인코딩합니다.. 사실, Prolog는 내장 된 파서와 함께 제공됩니다! 아니요, 라이브러리가 아니라 구문에 있습니다. DCG에스.

프롤로그입니다 NLP, 특히 구문 및 계산 의미에서 많이 사용.

그러나 프롤로그는 과소 평가되고 과소 평가되었습니다. 불행히도, 그것은 학문적이거나 "실제 목적에 대해서는 사용할 수없는"낙인을 지니고있는 것 같습니다. 그러나 사실과 사실 사이의 관계 계산과 관련된 많은 실제 응용 프로그램에서 매우 잘 활용 될 수 있습니다. 숫자 위기에 적합하지는 않지만 CS는 숫자 크런치에 관한 것이 아닙니다.

다른 팁

Prolog = 이후 구문 통일 + 후진 체인 + 대답,

구문 통일이 사용되는 대부분의 장소도 프롤로그에도 잘 사용됩니다.

구문 통일 사용

  • AST 변환
  • 입력 유추
  • 용어 재 작성
  • 정리 증명
  • 자연어 처리
  • 패턴 매칭
  • 조합 테스트 케이스 생성
  • XML 문서와 같은 구조화 된 데이터에서 하위 구조 추출
  • 상징적 계산, 즉 미적분학
  • 공제 데이터베이스
  • 전문가 시스템
  • 인공 지능
  • 구문 분석
  • 쿼리 언어

제약 논리 프로그래밍 (CLP)

논리 프로그래밍의 매우 우수하고 적합한 많은 사용 사례가 이미 언급되었습니다. 논리 프로그래밍의 매우 중요한 응용 프로그램 영역에서 기존 목록을 여러 작업으로 보완하고 싶습니다.

논리 프로그래밍은 다른 패러다임보다 매끄럽게 혼합됩니다. 제약, 호출 된 프레임 워크를 초래합니다 제약 로직 프로그래밍.

이로 인해 다른 용도로 전용 제약 솔버가 생깁니다 도메인, 와 같은:

  • CLP (FD) ~을 위한 정수
  • CLP (B) ~을 위한 부울
  • CLP (Q) ~을 위한 합리적인 번호
  • CLP (R) ~을 위한 부동 소수점 번호.

이러한 전용 제약 솔버는 언급되지 않은 논리 프로그래밍의 몇 가지 중요한 사용 사례로 이어졌으며, 그 중 일부는 아래에 표시됩니다.

프롤로그 시스템을 선택할 때, 제약 솔버의 힘과 성능은 종종 결정적인 요인, 특히 상업용 사용자의 경우입니다.

CLP (FD) - 정수에 대한 추론

실제로 CLP (FD)는 논리 프로그래밍의 가장 중요한 응용 프로그램 중 하나이며 다음과 같은 영역에서 작업을 해결하는 데 사용됩니다.

  • 일정
  • 자원 할당
  • 계획
  • 조합 최적화

보다 자세한 내용과 몇 가지 예.

CLP (B) - 부울 제약

CLP (b)는 종종 다음과 관련하여 사용됩니다.

  • 앉아 해결
  • 회로 검증
  • 조합 계산

보다 .

CLP (Q) - 합리적 숫자

CLP (Q)는 발생하는 중요한 문제를 해결하는 데 사용됩니다. 운영 연구:

  • 선형 프로그래밍
  • 정수 선형 프로그래밍
  • 혼합 정수 선형 프로그래밍

보다 .

Prolog는 수치가 아닌 문제에 이상적입니다. 이것 기사 Prolog의 일부 적용에 대한 몇 가지 예를 제공하며 해결할 수있는 문제의 유형을 이해하는 데 도움이 될 수 있습니다.

Prolog가 무료로 제공하는 것 중 하나는 역 추적 검색 알고리즘입니다. 직접 구현할 수 있지만 해당 알고리즘을 사용할 수있게하여 문제가 가장 잘 해결되면 사용하는 것이 좋습니다.

내가 잘 보았던 두 가지는 수학적 증거와 자연어 이해입니다.

Prolog는 퍼즐 등을 해결하는 데 좋습니다. 즉, 퍼즐 해결 영역에서 쉽게/중간 퍼즐 해결이 더 쉽고 복잡한 퍼즐을 더 어렵게 만듭니다. 그럼에도 불구하고, 그리드 퍼즐 등을위한 솔버를 쓰기 등 육아, 스도쿠 또는 누리 카베 (Nurikabe)와 같은 글을 쓰는 것은 특히 어렵지 않습니다.

간단한 대답 중 하나는 "빌드 시스템"입니다. makefiles (적어도 종속성을 설명하는 부분)를 구축하는 데 사용되는 언어는 실제로 "순수한"논리 프로그래밍 언어는 아니지만 논리 프로그래밍 언어입니다.

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