DG/L
DG/L이 글은 검증을 위해 인용구가 추가로 필요하다. – · · 책 · · (2010년 10월 (이 |
패러다임 | 다중 패러다임: 절차적, 필수적, 구조적 |
---|---|
가족 | 알골 |
개발자 | 데이터 일반 |
첫 등장 | 1978; | 전 (
플랫폼 | 노바, 이클립스, 이클립스/MV |
OS | RDOS, AOS, AOS/VS |
영향을 받은 | |
알골 60 |
DG/L은 1970년대와 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)
- 멀티태스킹
참조
- ^ 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