로그토크
Logtalk패러다임 | 로직 프로그래밍, 객체 지향 프로그래밍, 프로토타입 기반 프로그래밍 |
---|---|
설계자 | 파울루 모우라 |
첫 등장 | 1998; | 전 (
안정적 해제 | 3.48.0 / 2021년 7월 6일; 전 |
OS | 크로스 플랫폼 |
면허증 | Artic License 2.0 (2.x) / Apache License 2.0 (3.01.x) |
웹사이트 | logtalk |
영향을 받은 | |
프롤로그, 스몰토크, 목표-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]])>(Y는 2*X), [1,2,3], Ys). Ys = [2,4,6] 예
카레라이싱도 지원한다. 위의 예는 다음과 같이 쓸 수 있다.
?- meta::map([X])>>([Y])>(Y는 2*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]
참고 항목
참조
- ^ a b c d 파울루 모우라(2003년). 로그톡: 객체지향 논리 프로그래밍 언어의 설계 박사 논문. 유니버시아드 다 베이라 인테리어
- ^ 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.
- ^ "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=
(도움말) - ^ "Logtalk compatibility". Logtalk.org. 2016-10-10. Retrieved 2021-07-06.
- ^ / (2013-02-12). "Developer Tools – LogtalkDotOrg/logtalk3 Wiki – GitHub". Github.com. Retrieved 2013-08-19.CS1 maint: 숫자 이름: 작성자 목록(링크)
- ^ "Logic Programming". Lecture Notes in Computer Science. 4079. 2006. doi:10.1007/11799573. ISBN 978-3-540-36635-5. Cite 저널은 필요로 한다.
journal=
(도움말) - ^ 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.