DG/L

DG/L
DG/L
패러다임다중 패러다임: 절차적, 필수적, 구조적
가족알골
개발자데이터 일반
첫 등장1978; 44년 전 (1998년)
플랫폼노바, 이클립스, 이클립스/MV
OSRDOS, AOS, AOS/VS
영향을 받은
알골 60

DG/L1970년대와 1980년대 초 미니컴퓨터의 노바, 이클립스, 이클립스/MV 계열을 위해 데이터 제너럴사가 개발한 프로그래밍 언어다.

두 가지 버전이 따로 있었다.

  • 16비트 컴퓨터의 노바 시리즈 코드를 생성하여 실행한 "Old" Algol.컴파일러는 약간의 최적화만 했을 뿐이다.그것은 RDOS 운영 체제 제품군에서만 이용 가능했다.
  • Fortran 5 최적 컴파일러를 광범위하게 수정하여 개발한 DG/L.이 컴파일러는 Eclipse 및 Eclipse/MV 컴퓨터 제품군에서만 실행되었지만 Nova, Eclipse 및 Eclipse/MV(Eagle) 제품군에 최적화된 코드를 생성했다.그것은 RDOS, AOS, AOS/VS에서 이용 가능했다.

언어 자체는 알골 60을 확장한 것이었다.Integers, Single 및 Double 정밀 부동 소수점 및 복잡한 숫자와 고정 및 임의의 정밀 문자열을 모두 지원했다.또한 문자열에서 완전한 임의의 정밀 이진 코드 십진법(BCD) 산술도 지원했다.편리한 프로그램 제어 흐름 기능이 많았지만 70년대 중반에 설계돼 사용자 정의 데이터 구조가 부족했다.

DG/L은 당일에 상당한 런타임 라이브러리를 보유했으며, Data General 내부 및 외부 시스템 프로그래밍에 사용되었다.

원래 알골/5라고 불리던 이 제품은 1978년 첫 상용 출시 직전에 DG/L로 이름을 바꾸었다.공식적으로, 그 이름은 의미가 없지만, 그것은 분명히 "데이터 일반 언어"를 의미하도록 되어 있었다.16비트 Eclipse와 Nova를 대상으로 한 첫 번째 상용 출시 이후, 몇 가지 후속 업데이트와 주요 버전이 출시되었는데, 대략 1년에 한 번꼴이다.

알골 60과의 비교

1982년 DG/L 언어 참조 매뉴얼의 데이터 일반 개정판 부록 A, 093-00229-01은 DG/L을 ALGOL 60 프로그래밍 언어에 근거한 것으로 설명하지만, "ALGOL 60이 결여한 데이터 유형, 운영 및 문장"을 제공한다.구체적인 차이점은 다음과 같다.

DG/L에서 지원되지 않는 Algol 60 기능

알골 60 피쳐 Algol 60 보고서[1] 단락에 기술된 바와 같이 DG/노트
이름별 호칭 제4.7.3.2항 DG/L은 절차 매개변수를 절차 유형으로 허용하여 절차를 다른 절차로 이름별로 전달할 수 있다.
리터럴 단위의 내포된 따옴표 2.6.1 및 2.4.1
식별자 길이 제한 없음 DG/L 식별자 이름은 처음 32자 내에서 고유해야 함
2분할 연산자 3.3.4.2 DG/L은 실제 및 정수 분할에 모두 "/"를 사용한다. 다른 정수로 나눈 정수는 컴파일러의 전역 /R 스위치를 사용하지 않는 한 정수 분할(예: 1/4은 0)을 의미한다.
10 <정자> 표기법 2.5.1 DG/L은 "과학적" 표기법에 대해 E <인테거>(또는 D <인테거>)를 사용하여 10의 힘을 나타낸다.
<복합성명>으로만 구성된 프로그램 4.1.1
ASCII가 아닌 문자 ⋀, ⋁,¬,⊃,≡,≤,≥,≥,≠,≠,≠,≠,≠은 부울 연산자로 사용함 3.4.6.1 대신 DG/L은 XOR뿐만 아니라 AND, OR, NOT, IMM, EQV, <=(또는 = >), <(또는 =>), <<>(또는 ) 등이 허용된다.
알골 절차에 비알골 코드 포함 4.7.8 FORTRAN 5 연산 라이브러리를 제외하고, 외부 절차에 대한 문서는 다른 DG/L 절차만 연결될 것으로 가정한다.

확장

DG/L에 도입되거나 Data General의 1971년 이전 Algol 실행에서 이전된 Algol 60 표준에 대한 일부 확장:

문자열 연산

  • 서브스트 - 하위 문자열
  • 색인 - 하위 문자열의 위치
  • 길이 - 문자열 길이
  • SETCURRENT - 문자열의 현재 길이 설정(예: setcurrent(str, length(str)-1);
  • 접속 교환원 : "!!"
  • 문자열 산술(예: "123.45" + "0.01" )
  • 유형 변환(부울, 정수, 리얼, 포인터, 비트)
  • ASCII 문자를 나타내기 위해 대괄호로 묶은 8진수 및 일부 특수 기호

입출력

  • 지원되는 모든 데이터 유형에 대해 완전 포맷된 출력, 포맷되지 않은 입력 및 출력
  • Data General의 RDOS, AOS 및 AOS/VS 시스템 호출에 대한 전체 인터페이스
  • 캐시 메모리 관리(가상 메모리 옵션 포함)
  • CLRE 및 INFOS II 데이터베이스에 대한 인터페이스

기타 확장자

  • /***숫자 문자열 <설명>을 사용한 코드 섹션의 조건부 컴파일 */
  • % 문자와 /* 코멘트를 사용한 줄 끝 설명 */
  • 확장된 do, for if 구문(예: WHING <boolexp1> DO <statement> BY <boolexp2> )
  • 유형: BIT, BYTE, 16비트 및 32비트 정수, 32비트 및 64비트 리얼과 임의의 정밀 산술,
  • 리터럴(예: 리터럴 C(299792.458)
  • 글로벌 데이터
  • 오류 트래핑
  • 외부 절차 및 데이터
  • 클러스터 선언...Pascal 단위와 매우 유사하다(별도의 컴파일된 소스에 절차와 데이터 클러스터 허용).
  • 포인터 -> 기호 및 모든 유형의 기준 변수
  • 독점 OR 연산자(XOR)
  • 멀티태스킹

참조

  1. ^ Naur, Peter (Jan 1963). "Revised Report on the Algorithmic Language ALGOL 60". Communications of the ACM. 6: 1–17. doi:10.1145/366193.366201.
  • DG/L 컴파일러 참조 매뉴얼, Data General Corp, 1978
  • DG/L 런타임 참조 매뉴얼, Data General Corp, 1978