알마-0

Alma-0
알마-0
패러다임멀티패키지: 제약, 명령, 논리
가족워스 모듈라
설계자Krzystof 아파트, Marc Bezem, Jacob Brunkree, Vincent Partington, Andrea Schaerf
개발자Centrum Wiskunde & Informatica
처음 등장한1997년; 25년 전(1997년)
타이핑 분야정적인
범위어휘(정적)
웹 사이트www.cwi.nl/en/alma
주요 구현
알마-0
영향을 받다
모듈라-2

Alma-0멀티패러다임 컴퓨터 프로그래밍 언어입니다.이 언어는 논리 프로그래밍 기능과 편리한 역추적 [1]기능을 갖춘 필수 Modula-2 언어의 확장 버전입니다.이는 작고 강력한 유형으로, 논리 프로그래밍에서 영감을 얻은 제한된 수의 기능인 제약 조건 프로그래밍을 결합하고 명령적 패러다임지원합니다.그 언어는 선언적 프로그래밍을 지지한다.설계자들은 이 솔루션을 사용하여 구축된 검색 지향 솔루션이 순전히 명령형 또는 논리 프로그래밍 [2]스타일로 작성된 솔루션보다 훨씬 단순하다고 주장합니다.Alma-0은 검색 [3]트리를 구축하기 위한 자연스럽고 높은 수준의 구조를 제공합니다.

개요

Alma-0의 설계자는 선언적 프로그래밍 구조(자동 역추적 등)를 필수 프로그래밍에 통합하려는 이전의 시도보다 독특하고 상당히 단순한 제안을 만들고 싶었기 때문에, Alma-0의 설계는 다음 4가지 원칙에 따라 수행되었습니다.

  • 논리 기반 확장은 기본 명령형 프로그래밍 언어와 하위 호환되어야 합니다.
  • 논리 기반 확장은 제약 조건 프로그래밍을 지원하는 미래 확장과 위쪽으로 호환되어야 합니다.
  • 확장을 구현할 구성 요소는 선언적 프로그래밍을 지원하고 장려해야 합니다.
  • 9개의 새로운 기능이 제안되어 구현되었기 때문에 확장을 작게 유지해야 합니다.

Alma-0은 구체적이고 구체적인 프로그래밍 언어 제안일 뿐만 아니라 선언적 프로그래밍을 지원하는 기능을 갖춘 명령형 프로그래밍 언어를 확장하는 일반적인 방법의 한 예로 볼 수 있습니다.

Alma-0 접근법의 실현 가능성은 Modula-2의 서브셋에 대한 언어(의미론 설명 포함)의 완전한 구현을 통해 입증되었다.

특징들

Alma-0에는 다음과 같은 기능이 실장되어 있습니다.

  • 부울식을 문으로 사용하거나 그 반대로 사용합니다.
  • 의 듀얼FOR선택 포인트와 역추적 형태로 비이성주의를 도입하는 성명
  • A FORALL백트래킹에 대한 제어된 반복 형식을 도입하는 스테이트먼트
  • 할당으로서의 평등 사용에 한정되어 있지만 새로운 파라미터 전달 메커니즘을 생성하는 통일.

명령형 및 논리형 프로그래밍

Alma-0 설계자는 순수 선언형 및 논리 프로그래밍에서는 일반적으로 배제되는 할당이 실제로 카운트 및 기록 목적을 포함한 많은 자연 상황에서 필요하다고 주장합니다.그들은 또한 논리 프로그래밍 패러다임 내에서 할당의 그러한 "자연적인" 사용의 표현 수단이 부자연스럽다고 단언한다.

레퍼런스

  1. ^ Liu, Jed; Myers, Andrew C. (2003). JMatch: Iterable Abstract Pattern Matching for Java. Lecture Notes in Computer Science. Vol. 2562/2003. pp. 110–127. doi:10.1007/3-540-36388-2_9. ISBN 978-3-540-00389-2.
  2. ^ Partington, Vincent (July 1997). Implementation of an Imperative Programming Language with Backtracking (PDF) (Report). University of Amsterdam Programming, Research Group. Retrieved 15 February 2021. 포스트스크립트에도 있습니다.
  3. ^ Van Hentenryck, Pascal; Perron, Laurent; Puget, Jean-François (October 2000). "Search and strategies in OPL". ACM Transactions on Computational Logic. 1 (2): 285–320. CiteSeerX 10.1.1.17.836. doi:10.1145/359496.359529. S2CID 15926704.