코말
COMAL패러다임 | 구조화된 |
---|---|
설계자 | Börge R. 크리스텐센, 베네딕트 뢰프슈테트 |
첫 등장 | 1975 |
타이핑 규율 | 강한. |
영향을 받음 | |
베이직, 파스칼 |
COMAL(Common Algorithmic Language)은 덴마크에서 개발된 컴퓨터 프로그래밍 언어입니다. 크리스텐센과 베네딕트 뢰프슈테트는 1975년에 개봉했습니다. 기본 프로그래밍 언어를 기반으로 하여 여러 줄의 문과 잘 정의된 서브루틴을 추가했습니다.
COMAL은 원래 미니 컴퓨터용으로 작성되었지만 초기 마이크로 컴퓨터에서도 실행할 수 있을 정도로 작았습니다. 8비트 가정용 컴퓨터에서 사용할 수 있고 편안하게 사용할 수 있는 몇 안 되는 구조화된 프로그래밍 언어 중 하나입니다.
"COMAL Kernel Syntax & Semantics"에는 언어의 공식적인 정의가 포함되어 있습니다.[1] 추가 확장은 많은 구현에서 공통적으로 사용됩니다.[2][3][4]
역사
미니 컴퓨터 버전
COMAL은 원래 덴마크에서 수학 선생님 Börge R에 의해 개발되었습니다. 크리스텐슨. 그가 가르쳤던 학교는 1972년에 Data General Nova 1200 minic computer를 받았고, 학교가 컴퓨터 과학을 가르치기 시작할 것이라는 기대를 가지고 있었습니다. 대학에서 이 주제에 대해 짧은 강의를 들은 Christensen은 프로그램을 주도하고 컴퓨터 시스템을 유지할 것으로 기대되었습니다.[5]
NOVA에는 Data General Extended BASIC이 제공되었고 Christensen은 비구조화된 언어로 인해 학생들이 읽기 어렵고 따라서 표시하기 어려운 낮은 품질의 코드를 작성하는 방식에 빠르게 좌절했습니다.[5] 컴퓨터 과학자 베네딕트 뢰프슈테트에게 이러한 문제에 대해 불평하는 동안, 뢰프슈테트는 크리스텐슨에게 파스칼의 창시자 니클라우스 워스의 프로그래밍 언어 설계에 관한 새로운 책인 체계적 프로그래밍을 읽도록 격려했습니다. 크리스텐슨은 감명을 받았지만 파스칼을 직접 사용할 수는 없다는 것을 알게 되었습니다. 왜냐하면 파스칼은 학생들이 쉽게 기초를 개발할 수 있도록 만들어주는 상호작용적인 셸이 부족했기 때문입니다.[6]
이후 6개월 동안 Christensen과 Løfstedt는 BASIC의 대안을 설계하기 위해 우편으로 연락을 취했습니다. BASIC은 대화형 요소를 유지하면서도 파스칼의 구조적 요소를 추가했습니다.[6] 1974년까지 이 언어의 정의는 완성되었지만 Christensen은 소프트웨어 회사들로부터 구현 개발에 대한 관심을 이끌어내는 데 성공하지 못했습니다. 그 후 6개월 동안 그는 NOVA 1200 기계어를 가르쳤던 학생들 중 두 명과 함께 직접 구현체를 작성했습니다. 처음에 추가된 것 중 하나는 일반적인 한두 글자에서 8자 변수 이름을 사용할 수 있다는 것이었습니다.[6] 이후 첫 번째 버전에서 추가된 기능에는 여러 줄이 포함되어 있습니다. IF...THEN...ELSE...ENDIF
진술서 및 PROC...ENDPROC
정의와 EXECUTE
그들에게 전화하라는 진술서.[7]
첫 개념 증명 구현(5줄 루프 실행)은 1974년 8월 5일에 준비되었고, 첫 번째 릴리스(종이 테이프)는 1975년 2월에 준비되었습니다. 개발 비용은 약 미화 300달러였습니다. (이전에 덴마크 내부 이름을 사용했던) 이 시스템은 크리스텐슨이 실험하고 있던 ALGOL에서 영감을 받아 COMAL이라는 이름을 얻었습니다.[7] 따라서 첫 번째 릴리스는 COMAL 75로 명명되었습니다. Christensen은 그 후에 Beginning COMAL로 진화한 언어에 대한 교과서를 썼습니다.[8]
마이컴 버전
1978년 Christensen은 COMAL을 사용할 수 있게 된 마이크로컴퓨터에서 실행할 수 있도록 적응하기 시작했습니다. 그는 덴마크 학교들이 새로운 기계들을 습득하면서 그러한 구현이 없다면 자신이 다시 기초를 가르치고 사용해야 할 것이라고 걱정했습니다. 1980년까지 대학 그룹과 함께 개발된 COMAL 버전이 Zilog Z80에서 실행될 수 있었고, 따라서 COMAL 80이 출시되었습니다.[7]
비슷한 시기에 덴마크의 한 회사가 당시로서는 매우 유능한 마이크로컴퓨터인 코멧을 선보였는데, 코멧은 이후 출시된 코말의 버전을 실행하는 최초의 기계가 될 것입니다. Christensen은 이후 1980-81년경 COMAL 개발에서 물러났고, UniComal을 포함한 그룹에 넘겨졌습니다.[9] Mogens Kjaer는 COMAL에 대한 비판과 함께 Christensen에게 편지를 보낸 후 0.14를 코모도어 PET에 전송했습니다. 이때 덴마크 학교들은 COMAL을 구입한 모든 마이컴에서 사용할 수 있다고 주장했습니다.[8]
1980년대 초, 애플 컴퓨터는 CP/M과 COMAL을 실행하는 애플 II 컴퓨터를 아일랜드 중등학교에 공급하는 계약을 따냈습니다.[10] 교육용으로[11] 인기가 많았고 일부 교과서는 현지에서 작성되었습니다.[12][13]
1984년, 에이콘소프트는 데이비드 크리스텐슨, 짐 워릭, 데이비드 에버스에 의해 8비트 BBC 마이크로와 에이콘 전자 컴퓨터를 위한 COMAL 구현을 발표했습니다(폴 크리스텐슨과 로이 손턴의[14] 매뉴얼 포함).
1984-1987년 사이에 스웨덴 텔레콤스 시스템의 산업 부문 자회사인 TeleNova는 교육 부문을 위해 "Compis"라는 데스크톱 PC를 제조했습니다. 향상된 버전의 COMAL이 이 PC의 표준 프로그래밍 언어로 제공되었습니다. CP/M-86과 MS-DOS 모두를 위한 버전이 만들어졌습니다. 윈도우 XP에서는 후자의 버전을 사용할 수 있습니다. (스웨덴) 참조 매뉴얼은 ISBN91-24-40022-X.
1990년 토마스 런디와 로리 오설리반은 COMAL Programming에서 최종 텍스트를 제작했습니다.[13] 그들은 COMAL과 BBC Structured Basic을 일치시키고 비교했습니다.
2016년 현재에도 COMAL은 교육용 프로그래밍 언어로 활발히 사용되고 있습니다.[citation needed] 영국의 몇몇 고등학교들은 컴퓨팅이라는 과목을 가르치기 위해 계속해서 그것을 사용하고 있습니다.
묘사
COMAL은 당시 널리 사용되었던 교육용 프로그래밍 언어인 BASIC, Pascal과 적어도 코모도어와 컴피스 버전에서는 로고의 거북이 그래픽이 혼합되어 만들어졌습니다. 이 언어는 BASIC이 일반적으로 사용되는 환경에서 구조화된 프로그래밍 요소를 도입하기 위한 것이었습니다.
초기 버전에서 언어에 추가된 주요 기능은 IF의 블록 버전...그런 다음 PROC 구성. 대부분의 이전 버전의 BASIC에서는 유일한 블록 구성이 FOR...다음 루프. 예를 들어 다음과 같습니다.
10 FOR I=1 ~ 10 20 인쇄 I 30 J=J+140 다음 I
이 예제에서는 루프를 10번 수행하고 루프를 통과할 때마다 두 개의 명령을 수행합니다. 이와 대조적으로 BASIC의 거의 모든 다른 지침, 즉 문은 한 줄에서 수행되어야 합니다. 이로 인해 다중 행 문은 모두 또는 모두를 기준으로 수행하기가 어려울 수 있습니다. 예를 들어 프로그램이 특정 값이 10보다 크면 세 가지 명령을 실행하려고 할 때 일반적인 해결책은 다음과 같습니다.
10 A <= 10 그럼 50 20 인쇄 "A is Greater than 10" 30 A = A + 10 40 인쇄 "A is NOW"; A 50 인쇄 "정규 프로그램으로 돌아갑니다"
이러한 종류의 구성은 프로그램의 진정한 의도를 숨기고 있으며, 그 결정은 프로그래머가 실제로 달성하고자 하는 것과 반대의 논리에 기초하고 있습니다. 또한, 이 경우에 어떤 일이 일어날지 이해하기 위해서 독자는 50번 행을 찾아야 하며, 이 행은 실제 프로그램에서 소스 코드에 훨씬 더 멀리 있을 수 있습니다. 이것이 BASIC 프로그램이 "스파게티 코드"라고 불리는 주요한 이유 중 하나인데, 마치 일련의 무작위 스파게티 면을 따라가는 것처럼 그 논리를 따르기 위해서입니다.
COMAL은 블록을 사용하여 이 문제를 해결합니다. 이와 같은 일련의 지침을 수행하려면 COMAL로 다음과 같이 적어야 합니다.
10 A > 10 인 경우 20 인 인쇄 "A is Greater than 10" 30 A = A + 10 40 인 인쇄 "A is NOW"; 50 ENDIF 60 인 인쇄 "Returning to Us Returning Our Justed Scheduled Programming"
이 경우, 저자는 자신이 실제로 달성하려고 하는 결정을 작성하고, 독자는 단순히 논리를 찾는 것만으로 논리를 따를 수 있습니다. ENDIF
. COMAL이 선행 공간을 사용하여 블록을 시각적으로 표시하는 것이 이를 뒷받침합니다.
예
- "안녕, 세상!"
인쇄 "HELLO, WORLD!"
- 조건들
한다면 조건. 그리고나서 지침들 ENDIF
- 루프
위해서 번호:= 1 로. 1000 두 인쇄 번호 종료 위치
- 변수가 있는 문 인쇄
입력 "가장 좋아하는 번호가 몇 번입니까?" :nmr# 페이지입니다. 인쇄 "당신이 가장 좋아하는 번호는" ; nmr#
유용성
COMAL은 다음에 사용할 수 있었습니다.
- BBC 마이크로
- 코모도어 PET(공용 도메인 소프트웨어)
- 코모도어 64(공용 도메인 소프트웨어)
- 코모도어 128
- 아미가
- 컴피스/스캔디스
- CP/M
- IBM PC[9]
- 티키 100
- ZX 스펙트럼
- 그룬디 뉴브레인
- 윈도우 XP
참고 항목
참고문헌
- ^ Ryan, Kevin. "COMAL Kernel Syntax & Semantics" (PDF). Dansk Datahistorisk Forening. Retrieved 8 November 2017.
- ^ Bain, Richard; Lindsay, Len. "Common COMAL Definition and Tests". COMAL Today (24): 21–46. Retrieved 20 January 2020.
- ^ "Common COMAL -- Compatible keywords". COMAL Today (25): 28. Retrieved 20 January 2020.
- ^ "Common COMAL -- Keyword syntax and examples". COMAL Today (25): 29–33. Retrieved 20 January 2020.
- ^ a b Christensen 1985, 페이지 1.
- ^ a b c Christensen 1985, 2쪽.
- ^ a b c Christensen 1985, 4쪽.
- ^ a b Christensen, Børge (March 1985). "The Story of COMAL". COMAL Today (25): 1–10. Retrieved 4 September 2020.
- ^ a b "UniComal 3.11 IBM PC". Internet Archive. January 1992. Retrieved 1 April 2021.
- ^ Moynihan, Michael D. (8 August 1983). "COMAL coverage out of Ireland". InfoWorld. 5 (32): 30. Retrieved 15 November 2017.
- ^ Brady, Michael P. (May 1986). The Design of a First Course in Programming (thesis). Loughborough, Leicester, UK: Loughborough University of Technology. hdl:2134/10392. Retrieved 15 November 2017.
- ^ Kelly, John (1984). Foundations in Computer Studies with COMAL (Second ed.). Dublin, Ireland: The Educational Company. Retrieved 20 January 2020.
- ^ a b Lundy, Thomas; O'Sullivan, Rory (1990). Beginning structured programming in BASIC and COMAL. Dublin, Ireland: Gill and Macmillan. ISBN 978-0717116676.
- ^ Thornton, Roy; Christensen, Paul (1984). COMAL on the BBC Microcomputer and Acorn Electron SBD 19. Acornsoft. ISBN 978-0907876908.
더보기
- 토마스 런디 & 로리 오설리반: BASIC과 COMAL의 구조화 프로그래밍 시작, 1990
- 로이 애서튼: COMAL과의 구조화된 프로그래밍. 호우드, 치체스터 1982, ISBN 0-85312-416-7.
- Bramer, M. A. (1982). "COMAL 80—Adding structure to BASIC". Computers & Education. 6 (2): 179–192. doi:10.1016/0360-1315(82)90031-8. ISSN 0360-1315.
- Börge R. 크리스텐슨: 코말을 시작합니다. 호우드, 치체스터 1982, ISBN 0-85312-435-3
- Börge R. Christensen: COMAL 참조 가이드. 토론토 PET Users Group, Toronto Ontario, ISBN 0-920607-00-4
- Leuschner, Burkhard (1987). "Comal's the thing". System. 15 (3): 373–376. doi:10.1016/0346-251X(87)90011-X. ISSN 0346-251X.
- Len Lindsay: COMAL 핸드북. Reston Publishing, Reston, VA, 1983, ISBN 0-8359-0878-X.
- Gordon Shigley: COMAL 워크북. Comal Users Group, USA, 1985, ISBN 0-928411-05-2.