좋은 Prolog IDE는 무엇입니까?


최상의 답변

Emacs 끝까지!

진지한 Prolog 개발을 위해 Stefan Bruda가 관리하는 Prolog 모드와 함께 GNU Emacs 를 권장합니다. SWI-Prolog 홈페이지는 설정 방법을 설명하고 추가 자료에 대한 포인터도 포함합니다.

GNU Emacs와 함께 SWI-Prolog 사용

사실, SWI-Prolog는 심지어 작은 편집 작업에 유용한 자체 Emacs 클론과 함께 제공됩니다. ?-emacs를 사용하여 호출 할 수 있습니다.

몇 가지 대안 제안은 다음 토론을 확인하세요.

좋은 점 Linux 용 Prolog IDE?

답변

프롤로그는 죽지 않습니다. 일반적으로 박사 학위를 취득하기 위해 노력하는 모든 Comp Sci 학생에게 가르칩니다.하지만 질문은 모든 사람들이 그것을 배우도록 강요 했음에도 불구하고 새로 작성된 Prolog 코드의 양이 젊고 덜 “시행되고 진실 된”언어에 미치지 못한다는 사실을 눈치 채 셨기 때문입니까? 지난 2 년 동안 Clojure, F #, Brain4uck, Go, Cobra, miniKanren 및 Scala와 같은 새로운 프로젝트 또는 블로그 게시물이 몇 개 있는지 평가합니다. 안타깝게도 이들 중 가장 적은 것조차도 지난 10 년 동안 새로 시작된 Prolog 라이브러리와 프로젝트의 수를 초과했습니다! (이러한 언어 중 일부가 그렇게 어리 지 않다면 죄송합니다.하지만 짧은 기간 동안 각 언어가 얼마나 많은 견인력을 얻었는지 생각해보십시오.)

향후 2 년 동안 Prolog는 최소 2 ~ 3 년을 초과 할 것입니다. 블로그 게시물과 새 프로젝트에서 위의 언어.

더 많은 생각

Prolog에서 일반적인 lisp 컴파일러를 작성하고 있습니다. 약 2 개월 프로젝트처럼 보입니다. 컴파일러가 lisp 소스 코드를 Prolog로 변환하도록 한 다음 백엔드가 프롤로그를 컴파일하도록하는 것보다 프롤로그 코드를 최적화하여 작동합니다. 이 데이터 흐름은 Haskell 또는 Idris에게는 이미 어려운 것 같습니다. 진짜 근본적인 문제는 후자의 두 언어가 내가 방금 말한 내용을 상세 수준에서 설명 할만큼 충분히 표현 적이 지 않다는 것입니다.

여기에 “설명적인 세부 사항”의 예가 있습니다. 패키지 시스템) https://github.com/TeamSPoon/wam\_common\_lisp/blob/master/prolog/wam\_cl/package.pl

또는 최적화 프로그램 : https://github.com/TeamSPoon/wam\_common\_lisp/blob/master/prolog/wam\_cl/mizepro.pl

실행하기 전에 Haskell이 소스를 최적화하도록 쉽게 만들 수 있습니까? 나는 또한 Haskell에서 해석 할 수있는 일종의 중간 Haskell 표현이 필요할 것이라고 예상하고 있습니다. 아마도 Haskell에서 Lisp 인터프리터를 작성하는 것은 그리 어렵지 않을 것입니다. 컴파일러가 훨씬 더 많은 작업입니까?

Haskell의 교육 수준은 학문적 목적에 적합하며 결과적으로 Haskell 더 많은 Ph.D. 프롤로그보다 트로피 아내. 남편을 기쁘게하는 방법에 대한 더 많은 복잡성과 매뉴얼이 있습니다 (하스켈 프로그래머는 HoTT 책을 읽은 후 HoTT 책을 읽음).하지만 그들은 그들이 학대적인 관계에 있다는 것을 깨닫지 못할 수도 있다고 생각합니다. 비뚤어진 것은 그들이 생각하는 것입니다. Haskell이라는 남편은 프롤로그 아내와 같은 특권을 부여 할 것입니다 (동일한 휴가에 데려가십시오) (그들은 프롤로그 아내의 실제 존재를 알지 못하거나 남편의 선전 (이 스레드에서 볼 수 있음)의 대상이됩니다. ) …. 매우 잘 수행되는 경우에만 권한을 얻습니다. 그런 결혼은 나이가 많은 사람에게만 적합 할 것이라고 생각합니다 .. 그들이 모르는 것은 그들이 그런 욕망이 잘못되었다는 말을 듣고 식히도록하는 것과 같은 휴가 (프로그램 능력)를 얻기에 “충분한”사람이 될 수 없다는 것입니다. 다른 Wadler 비디오를 시청하여.

오해하지 마십시오. Prolog to에는 세뇌가 있습니다. . “cuts를 사용하지 마십시오 .. setarg / 또는 asserta /를 사용하지 마십시오.”그러나 Haskell에서 방법론을 구체화하면 의도가 잘못되었음을 알게 될 것입니다. Prolog에서 방법론을 구체화하면 의도가 있음을 알게됩니다.

기능 장애 관계의 더 많은 측면 :

Haskell과 Prolog는 모두 상태 완화를 설명하는 선언적 시스템입니다. 두 언어 모두 프로그래머가 언어를 개발해야하는 것 같습니다. Prolog에서는 명제를 통해 표현됩니다. (하지만 Haskell에서는 이러한 명제가 유형이어야합니다.)

둘 다 종이 화장지 롤을 사용하여 설치류 장애물 코스를 지루하게 구축합니다 … 전투는 지적으로 설치류를 매우 지능적으로 움직이게합니다. Prolog에서는 화장실 롤을 만든 다음 생성자의 미적분 대신 메타 술어라고하는 화장실 롤 생성기를 만듭니다.

저에게 Haskell은 프롤로그의 논리적 명제 중 추가로 유형이되어야합니다 (CLA 당 하나 사용하다). 이것은 꽤 지루한 것 같습니다 (화장실에는 고유 한 이름이 있습니다) (내 프롤로그 절의 일부를 유형화하는 것은 어려울 것입니다) 놀라운 일을하는 대부분의 프롤로그 프로그램에는 1000 개의 절이 포함되어 있기 때문입니다. 나를 어렵게 만드는 유일한 이유는 유형 검증자를 위해 일을 더 쉽게 만드는 것입니까?많은 낙담에서 이러한 여분의 랩이 나를 도울 것인지 확신하지 못했습니다. 또한, 각 절 (명제)을 어떤 유형 시스템 (유형으로)에 맞출 필요가 없습니다!

Prolog에서, 나는 내 유형 시스템을 동적으로 디자인합니다. (Lisp 환경 구현에서 사용하는 무제한 용어) Haskell은 내가 그것을 잃기를 원할 것입니다. 그러나 그것이 대가로 무엇을 제공합니까? 약간의 일관성? Prolog 프로그래머가 철학적 미세 관리에 가입하는 이유는 무엇입니까?

Haskell이 원하는 것은 내가 능력을 잃는 것뿐입니까? 내가 나이가 많은 프로그래머라면 더 잘 알지 못했던 결혼 생활이 더 나쁜 것 같습니다.

Haskell은 세뇌의 “컬트”를 가지고 있습니다. 아마도 대부분의 OO 프로그래머에게는 Haskell이 실제 제네릭을 향한 상향 이동이라고 생각할 것입니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다