로그토크

Logtalk
로그토크
패러다임로직 프로그래밍, 객체 지향 프로그래밍, 프로토타입 기반 프로그래밍
설계자파울루 모우라
첫 등장1998; 23년 전 (1998년)
안정적 해제
3.48.0 / 2021년 7월 6일; 5개월(2021-07-06)
OS크로스 플랫폼
면허증Artic License 2.0 (2.x) / Apache License 2.0 (3.01.x)
웹사이트logtalk.org
영향을 받은
프롤로그, 스몰토크, 목표-C

로그톡(Logtalk)은 대규모 프로그래밍에 적합한 기능 세트로 Prolog 언어를 확장하고 활용하는 객체 지향 논리 프로그래밍 언어다.[1] 캡슐화데이터 은닉, 우려의 분리, 강화된 코드 재사용을 지원한다.[1] Logtalk는 몇 개의 연산자와 지침이 추가된 표준 Prolog 구문을 사용한다.

Logtalk 언어 구현은 오픈 소스 라이센스에 따라 배포되며, 백엔드 컴파일러로 Prolog 구현(공식 및 사실상의 표준 준수)[1]을 사용하여 실행할 수 있다.

특징들

Logtalk는 객체 지향 프로그래밍과 논리 프로그래밍의 장점을 종합하는 것을 목표로 한다.[1] 객체 지향성은 분리되고 재사용 가능한 소프트웨어 단위 개발을 강조하는 반면, 논리 프로그래밍은 선언적인 방식으로 각 객체의 지식을 대변하는 것을 강조한다.

개체 지향 프로그래밍 언어로써 Logtalk의 주요 특징을 이 두 수업 모두에 대한 지원(선택적 metaclasses과)및 프로토 타입, 파라메트릭 objects,[2]프로토콜(인터페이스), 범주, 다중 상속,public/protected/private 유산, 이벤트 반응형 프로그래밍, 높은 수준의 multi-thread(구성 요소 측면, 뜨거운 뵘)을 포함한다.ing 문서 프로그래밍,[3] 반영 및 자동 생성.

Prolog 프로그래머들에게, Logtalk는 광범위한 이식성을 제공하며, 술어 네임스페이스(정적인 물체와 동적 물체를 모두 지원), 공용/보호되는/프라이빗 객체 술어, 코인 유도 술어, 인터페이스와 구현 사이의 분리, 단순하고 직관적인 메타-프레임 의미론, 람다 표현, 명확한 조항 그래머, 용어 등을 제공한다.-복제 메커니즘 및 조건부 컴파일. 또한 사실상의 표준 코어 모듈 기능(내부적으로는 모듈을 프로토타입으로 컴파일)에 근거한 모듈 시스템을 제공한다.

Logtalk의 구문은 Prolog:

?- 쓰기('Hello world'), nl. Hello world true. 안녕, 정말이야.  

개체 정의:

:- 객체(my_first_object)      :- 초기화('Hello world'), nl).      :- public(p1/0). p1 :- writeproperties이것은 공공 술어'), nl. :- 사설(p2/0), p2 :- 쓰기(')'이다.이것은 사설 술어'), nl. :- end_object이다.  

개체를 사용하면 my_first_object.lgt 파일에 저장된다고 가정할 때:

?- logtalk_load(my_first_object). Hello world true. ?- my_first_object::p1 이것은 공공의 술어인 사실이다.  

개인 술어에 액세스하려고 하면 오류가 발생함:

?- my_first_object::p2. 오류: 오류(permission_error(액세스, private_predicate, p2), my_first_object::p2, 사용자) 

익명 함수

Logtalk는 익명 술어(lambda 식)에 대해 다음과 같은 구문을 사용한다.

{FreeVar1, FreeVar2, ...}}/[람바파라미터1, 람다파라미터2, ...]>> 

자유 변수가 없고 목록 매핑 술어를 사용하는 간단한 예는 다음과 같다.

 ?- meta::map([X,Y]])>(Y2*X), [1,2,3], Ys). Ys = [2,4,6] 예 

카레라이싱도 지원한다. 위의 예는 다음과 같이 쓸 수 있다.

 ?- meta::map([X])>>([Y])>(Y2*X), [1,2,3], Ys. Ys = [2,4,6] 예 

프롤로그 백엔드 호환성

Supported back-end Prolog compilers include B-Prolog, Ciao Prolog, CxProlog, ECLiPSe, GNU Prolog, JIProlog, Quintus Prolog, Scryer Prolog, SICStus Prolog, SWI-Prolog, Tau Prolog, Trealla Prolog, XSB, and YAP.[4] Logtalk는 객체 및 범주 내에서 백엔드 Prolog 컴파일러 라이브러리를 사용할 수 있다.

개발자 도구

Logtalk는 온라인 도움말, 문서화 도구(PDF 및 HTML 파일을 생성할 수 있는), 엔티티 다이어그램 생성 도구, 내장 디버거(대부분의 Prolog 컴파일러에서 발견되는 전통적인 프로시저 박스 모델의 확장 버전 기반), 코드 적용 범위 분석을 포함한 장치 테스트 프레임워크, 선택된 백엔드 Prolog와도 호환된다. 프로파일러와 [5]그래픽 트래커

적용들

Logtalk는 제품 제조 정보를 교환하는 데 사용되는 STEP 데이터 모델을 처리하는 데 사용되어 왔다.[6] 선호 추론과 제약 해결이 가능한 추론 시스템 구현에도 활용됐다.[7]

참고 항목

참조

  1. ^ a b c d 파울루 모우라(2003년). 로그톡: 객체지향 논리 프로그래밍 언어의 설계 박사 논문. 유니버시아드 다 베이라 인테리어
  2. ^ Moura, Paulo (2011). Programming Patterns for Logtalk Parametric Objects. Applications of Declarative Programming and Knowledge Management. Lecture Notes in Computer Science. 6547. doi:10.1007/978-3-642-20589-7_4. ISBN 978-3-642-20588-0.
  3. ^ "Practical Aspects of Declarative Languages". Lecture Notes in Computer Science. 4902. 2008. doi:10.1007/978-3-540-77442-6. ISBN 978-3-540-77441-9. Cite 저널은 필요로 한다. journal= (도움말)
  4. ^ "Logtalk compatibility". Logtalk.org. 2016-10-10. Retrieved 2021-07-06.
  5. ^ / (2013-02-12). "Developer Tools – LogtalkDotOrg/logtalk3 Wiki – GitHub". Github.com. Retrieved 2013-08-19.CS1 maint: 숫자 이름: 작성자 목록(링크)
  6. ^ "Logic Programming". Lecture Notes in Computer Science. 4079. 2006. doi:10.1007/11799573. ISBN 978-3-540-36635-5. Cite 저널은 필요로 한다. journal= (도움말)
  7. ^ Victor Noël; Antonis Kakas (2009). Gorgias-C: Extending Argumentation with Constraint Solving (PDF). Logic Programming and Nonmonotonic Reasoning. Lecture Notes in Computer Science. 5753. pp. 535–541.

외부 링크

  • 공식 웹사이트
  • 로그토킹 블로그
  • 플레인 프롤로그에서 로그토크 오브젝트: 효과적인 코드 캡슐화 및 재사용(초대 토크). 파울루 모우라 2009년 7월, 제25회 논리 프로그래밍 국제 회의(ICLP)의 진행. LNCS 5649. 스프링거-베를라크 베를린 하이델베르크" (슬라이드)