알골 W
ALGOL W패러다임 | 다중 패러다임: 절차적, 필수적, 구조적 |
---|---|
가족 | 알골 |
설계자 | 니클라우스 위스, 토니 호어 |
첫 등장 | 1966; | 전 (
타이핑 규율 | 정적, 강력 |
범위 | 어휘소 |
구현 언어 | PL360 |
플랫폼 | IBM 시스템/360 |
OS | 리눅스 |
영향을 받은 | |
알골 60 | |
영향받은 | |
파스칼, 모둘라-2 |
ALGOL W는 프로그래밍 언어다.Niklaus Wirth와 Tony Hoare가 ALGOL 60의 후속으로 제안한 ALGOL X의 제안에 근거한 것이다. ALGOL W는 원래 ALGOL 60을 비교적 간단하게 업그레이드한 것으로, 기록 데이터 유형과 파라미터의 콜 바이 리패싱에 문자열, 비트스트링, 복합 번호 및 참조를 추가해 도입했다.while
문, 바꾸기switch
…과 함께case
그리고 일반적으로 언어를 강화한다.
위르스의 입국은 ALGOL 60에 비해 너무 적은 진전으로 간주되었고, 아드리안 판 위쟁가르덴의 보다 복잡한 입국은 매우 논쟁이 많은 회의에서 채택되었다.Wirth는 나중에 ALGOL의 발전에 대한 공헌으로 그의 버전을 출판했다.[1] 많은 작은 추가들과 함께, 이것은 결국 ALGOL W가 되었다.
Wirth는 널리 보급된 IBM System/360을 위한 고품질의 구현을 감독했다.[2]구현은 위르스가 설계한 ALGOL과 유사한 조립 언어인 PL360으로 작성됐다.구현에는 영향력 있는 디버깅과 프로파일링 능력이 포함된다.
ALGOL W는 파스칼 언어의 기초가 되었고, ALGOL W의 구문은 파스칼 경험을 가진 누구에게도 즉시 친숙해질 것이다.주요 차이점은 Pascal에서의 기록 처리의 개선이며, 이상하게도, ALGOL W가 런타임에 배열의 길이를 정의할 수 있는 능력의 상실이며, 이것은 Pascal의 가장 복잡한 특징 중 하나이다.
구문 및 의미론
ALGOL W의 구문은 EBCD의 하위집합에 구축되어 있다.IC 문자 인코딩 세트.ALGOL 60에서 예약어는 구별되는 어휘 항목이지만, ALGOL W에서는 문자 시퀀스에 불과하므로 스트로핑할 필요가 없다.예약된 단어와 식별자는 공백으로 구분된다.[2]이러한 방식으로 ALGOL W의 구문은 파스칼 및 후기 언어의 구문과 유사하다.
ALGOL W Language Description은[3] ALGOL W를 BNF(Backus-Naur 형태)와 유사한 첨부 문법으로 정의한다.이 정식 문법은 반 빈가르덴 문법의 선구자였다.[1][4]
ALGOL W의 의미론의 대부분은 문법적으로 정의된다.[3]
- 식별자는 현재 범위 내에서 정의에 의해 구별된다.예를 들어 a
⟨procedure identifier⟩
절차 선언에 의해 정의된 식별자,⟨label identifier⟩
goto 레이블로 사용되는 식별자. - 변수의 종류와 표현은 첨부로 표현된다.예를 들면
⟨τ function identifier⟩
형식 값을 반환하는 함수의 구문적 도면요소τ
, 식별자가 현재 스코프에서 정수 함수로 선언된 경우, 이 함수는 다음으로 확장된다.⟨integer function identifier⟩
. - 유형 오류는 문법 오류다.예를 들어,
⟨integer expression⟩ / ⟨integer expression⟩
그리고⟨real expression⟩ / ⟨real expression⟩
식을 나타내는 구문적 실체들은 유효하지만 구별된다.⟨real expression⟩ DIV ⟨integer expression⟩
(즉, 부동 소수점 값에 대해 수행되는 정수 분할)은 잘못된 통사적 실체다.
예
이것은 ALGOL W의 기록형 설비를 보여준다.
기록하다 Person ( 끈(20) 이름; 정수 에이지; 논리적인 남성; 참조(Person) 아버지, 어머니, 최연소 오프스프링, 엘더스비블링 ); 참조(Person) 절차 막내동생 (참조(Person) R); 시작 참조(Person) P, M; P := 최연소 오프스프링(아버지(아버지(R))); 그러는 동안 (P ¬= NULL) AND (¬ 남성(P)) OR (P = 아버지(R)) DO P := 엘더스비블링(P); M := 최연소 오프스프링(어머니(어머니(R))); 그러는 동안 (M ¬= NULL) AND (¬ 남성(M)) DO M := 엘더스비블링(M); IF P = NULL 그럼 M 기타 IF M = NULL 그럼 P 기타 IF 에이지(P) < 에이지(M) 그럼 P 기타 M 끝
실행
ALGOL W의 주요 부분은 약 2,700장의 카드로서 Wirth의 PL360에 쓰여졌다.사용 중인 IBM 운영 체제(OS, DOS, MTS, ORVYL)용 인터페이스 모듈(OS, DOS, MTS, ORVYL)은 250개 이하의 카드에 해당하는 IBM 어셈블리 언어로 작성되었다.[1]
360/67의 OS 환경에서 스풀링된 입력 및 출력 파일이 있는 컴파일러는 약 25초 후에 자신을 다시 컴파일할 것이다.컴파일러는 약 2700개의 카드 이미지 입니다.따라서 위에서 주어진 실행 시간에서 OS 스케줄러 시간을 빼면 컴파일러가 초당 100장의 카드(밀도 코드의 경우)를 넘는 속도로 달리는 것을 볼 수 있다.
360/30의 DOS 환경에서 컴파일러는 카드 리더의 속도에 의해서만 제한된다.컴파일러는 64K 360/30으로 분당 1200카드(카드 리더의 속도)의 속도로 자신을 재컴파일하는 데 성공했다.DOS Assembler가 250개 이하의 카드로 구성된 인터페이스 모듈을 조립하는 데 필요한 시간과 비교하면 인상적이다.매크로 지침이 확장되면 DOS 인터페이스는 972개의 카드 이미지를 가지며 조립에는 15분이 걸린다.
참조
- ^ a b Wirth, Niklaus; Hoare, C. A. R. (June 1966). "A contribution to the development of ALGOL". Communications of the ACM. 9: 413–432. Retrieved 7 October 2020 – via Association for Computing Machinery.
- ^ a b Bauer, Henry R.; Becker, Sheldon I.; Graham, Susan L.; Forsythe, George E.; Satterthwaite, Edwin H. (March 1968). Technical Report Number: CS-TR-68-89. Computer Science Department (Report). Stanford University. (1972년 스탠포드의 ALGOL W 구현을 위한 다양한 문서, 이 보고서에는 ALGOL W 언어 설명이 포함되어 있다.
- ^ a b Bauer, Henry R.; Becker, Sheldon I.; Graham, Susan L.; Satterthwaite, Edwin H.; Sites, Richard L. (June 1972). ALGOL W Language Description (PDF) (Report). Archived from the original (PDF) on 19 November 2012.
- ^ van Wijngaarden, Adriaan (22 October 1965). Orthogonal Design and Description of a Formal Language: MR76 (PDF) (Report). Amsterdam, Netherlands: Mathematical Centre. Archived from the original (PDF) on 29 October 2019. Retrieved 7 October 2020 – via Ernst-Abbe-Hochschule Jena, University of Applied Sciences, Germany.
외부 링크
- aw2c – Linux용 ALGOL W 컴파일러
- aw2c 업데이트 버전
- ALGOL W @ Everything2 – 교육용 프로그래밍 언어로서 사이드바가 Pascal을 통해 ALGOL W를 확장하면서 이전 사용자가 사용하는 언어에 대한 비공식적이지만 자세한 설명
- 1969년 ALGOL W 컴파일러 목록 bitsavers.org
- 미시간 터미널 시스템 설명서, 제16권: MTS의 ALGOL W
- ALGOL W 재료 200개 이상의 ALGOL W 프로그램 및 문서