ECL 프로그래밍 언어

ECL programming language

ECL 프로그래밍 언어와 시스템은 1970년대에 하버드 대학교에서 개발된 확장 가능한 고급 프로그래밍 언어와 개발 환경이었다.'ECL'이라는 이름은 'Extensible Computer Language' 또는 'ECECTIC Language'를 의미한다.일부 출판물은 시스템 전체에 'ECL'이라는 명칭을 사용했고 언어에는 EL/1(Extensible Language)이라는 명칭을 사용하였다.

ECL은 프로그램들이 시스템 내에서 대표되는 인터랙티브 시스템이었다; 호환 가능한 컴파일러통역사가 있었다.ALGOL과 같은 구문과 확장 가능한 데이터 타입 시스템을 갖추고 있었으며, 데이터 타입은 일등 시민으로서 데이터 타입을 갖추고 있었다.데이터 개체는 참조가 아닌 값이었으며, 호출 규약은 각 인수에 대한 값별 호출참조별 호출 사이에서 선택권을 주었다.

ECL은 일부 정부 기관에서도 사용된다고는 하지만 주로 프로그래밍 언어 설계, 프로그래밍 방법론(특히 변환적 정교화에 의한 프로그래밍), 하버드의 프로그래밍 환경에서 연구와 교수에 사용되었다.그것은 처음에 PDP-10에 구현되었고, 이후 (해석 전용) BLISS-11에 작성되고 PDP-10에 교차 컴파일된 PDP-11에 구현되었다.

절차 및 바인딩 클래스

유클리드 알고리즘에 따라 두 정수의 최대 공통 구분자를 계산하기 위한 ECL 절차는 다음과 같이 정의될 수 있다.

 gcd <-    EXPR(m:INT 바이발, n: INT 바이발; INT)    시작      DECL r:INT;      반복        r <- (m, n);        r = 0 => n;        m <- n;        n <- r;      종료;     

변수에 대한 절차 상수의 할당gcd. 그 선

EXPR(m:INT 바이발, n: INT 바이발; INT)

절차에는 두 가지 유형의 매개 변수가 필요함을 나타냄INT이름 지어진m그리고n, 그리고 타입의 결과를 반환한다.INT. (ECL에서는 데이터 유형을 모드라고 한다.)바인드 클래스 BYVAL각 매개변수 선언에서 매개변수가 으로 전달됨을 나타낸다.ECL 프로그램의 연산 구성요소를 양식이라고 한다.어떤 형태는 다른 프로그래밍 언어의 표현과 비슷하고 다른 형태는 문장을 닮았다.양식의 실행은 항상 가치를 산출한다.REPEAT...END구문은 루프 형태다.시공 실행

r = 0 => n

형식에 따라서r = 0로 평가하다.TRUE루프의 실행이 값과 함께 종료되도록 함n. 블럭의 마지막 문 값 (BEGIN...END) 폼은 블록 폼의 값이 된다.절차 선언에서 양식의 값은 절차 호출의 결과가 된다.

바인드 클래스 외에BYVAL, ECL에 바인드 클래스가 있음SHARED,LIKE,UNEVAL그리고LISTED. 바인드 클래스SHARED참조로 매개 변수를 전달해야 함을 나타낸다.바인드 클래스LIKE가능한 경우 참조로 매개 변수를 전달하고 그렇지 않은 경우 값을 기준으로 매개 변수를 전달한다(예: 실제 매개 변수가 순수 값인 경우 또는 유형 변환을 적용해야 하는 변수).바인드 클래스UNEVAL실제 매개변수에 대한 추상적 구문 트리를 형식 매개변수에 전달해야 한다고 명시한다. 이는 프로그래머가 특정 절차 매개변수에 대한 자체 평가 의미와 함께 자신의 공지를 발명할 수 있는 특별한 유연성을 제공한다.바인드 클래스LISTED와 비슷하다UNEVAL, 그러나 C:에서 vargs와 유사한 기능을 제공한다.LISTEDbind-class는 절차의 마지막 형식 매개변수에만 나타날 수 있으며, 그 형식 매개변수는 남아있는 각 실제 매개변수마다 하나씩 추상 구문 트리 표현 목록에 바인딩된다.ECL에는 다음과 같은 것이 있다.EVAL추상 구문 트리를 평가하기 위한 내장 기능, 또는 프로그래머가 추상 구문 트리의 노드를 탐색하고 자신의 논리에 따라 처리할 수 있는 기능이 있다.

참고 항목

참조

PISEL = 확장 가능한 언어에 대한 국제 심포지엄, 프랑스 그르노블, 1971년 12월, ACM SIGPlan Notice 6:12에 발표.

  • Benjamin M. Brosgol, "ECL 데이터 유형의 구현", PISEL, 페이지 87–95.
  • 토마스 E. 체텀 주니어, 글렌 H. 할로웨이, 주디 A.Townley, "변환에 의한 프로그램 개선", 제5차 소프트웨어 엔지니어링 국제 회의의 진행, 1981, 페이지 430–437. ISBN0-89791-146-6
  • 글렌 H. 할로웨이, "ECL의 인터프리터/컴파일러 통합", PISEL, 페이지 129–134.
  • Charles J. Farnner, "ECL의 제어 구조 설비", PISEL, 페이지 104–112.
  • Ben Wegbreit, "ECL 프로그래밍 시스템의 개요" PISEL, 페이지 26–28.
  • Ben Wegbreit, "확장 가능한 프로그래밍 언어의 연구"기술 보고서 ESD-TR-70-297.하버드 대학교, 케임브리지, 메사추세츠 주, 1970년 5월.
  • 글렌 할로웨이, 주디 타운리, 제이 스핏젠, 벤 웨그브릿, "ECL 프로그래머 설명서", 보고서 23-74, 하버드 대학교 컴퓨터 기술 연구 센터, 1974년 12월.
  • 래리 데넨버그 "PDP-11 ECL의 구현", 기술 보고서 29-77, 하버드 대학교 컴퓨터 기술 연구 센터, 1977년 6월.