ocam(프로그래밍 언어)
occam (programming language)![]() | |
패러다임 | 필수, 절차, 동시 |
---|---|
설계자 | 데이비드 메이 |
개발자 | 인모스 |
처음 등장한 | 전 |
안정된 릴리스 | 2.1(공식), 2.5(비공식), 3(완전 구현되지 않음), 전 |
사투리 | |
ocsam-internal(pi) | |
영향을 받다 | |
순차 프로세스 전달 | |
영향받은 | |
Easy, Go, Python |
occam은 동시적이며 통신 순차 프로세스([1]CSP) 프로세스 대수 위에 구축되어 많은 기능을 공유하는 프로그래밍 언어입니다.그것은 Ockham의 철학자 William의 이름을 따서 붙여졌다.
occam은 필수 절차 언어(Pascal 등)입니다.Tony Hoare의 조언에 따라 Inmos(상표명 INMOS)에서 David May와 다른 사람들에 의해 트랜스푸터 마이크로프로세서의 네이티브 프로그래밍 언어로 개발되었지만, 다른 플랫폼에서는 구현이 가능합니다.가장 널리 알려진 버전은 ocam 2이다. 이 버전의 프로그래밍 매뉴얼은 Steven Ericson-Zenith와 Inmos의 다른 사람들에 의해 작성되었다.
개요
다음 예제에서는 코드 해석에 필수적입니다.행의 끝부분에서 식을 종료하고 식 목록을 같은 수준의 들여쓰기로 해야 합니다.오프사이드 규칙이라는 이름의 이 기능은 Haskell 및 Python과 같은 다른 언어에서도 볼 수 있습니다.
프로세스 간의 통신은 명명된 채널을 통해 작동합니다.1개의 프로세스에서 데이터를 채널로 출력합니다.!
다른 한 명이 데이터를 입력하는 동안?
입력과 출력은 상대방이 데이터를 받아들이거나 제공할 준비가 될 때까지 진행할 수 없습니다.(실행하지 않을 경우 채널 상에서 프로세스가 차단된다고 하는 경우가 많습니다).그러나 프로그램은 회전하거나 폴링하지 않습니다.따라서 대기, 행 또는 항복과 같은 용어는 동작을 전달할 수도 있습니다.또, 다른 독립된 프로세스의 실행을 막지 않습니다.)예(c는 변수):
키보드? c
화면! c
SEQ
에 순차적으로 평가되는 식 목록을 나타냅니다.이것은 대부분의 다른 프로그래밍 언어에서와 같이 암묵적인 것은 아닙니다.예:
SEQ x : = x + 1 y : = x * x
PAR
는 동시에 평가할 수 있는 식 목록을 시작합니다.예:
PAR p() q()
ALT
에 보호대상 명령어 목록을 지정합니다.가드는 부울 조건과 입력식을 조합한 것이며 둘 다 옵션입니다.조건이 true이고 입력 채널이 준비되는 각 가드는 성공합니다.성공한 대체 방법 중 하나가 실행 대상으로 선택됩니다.예:
ALT count1 < 100 & c1 ?데이터 SEQ count1 : = count1 + 1 병합됨!데이터 count2 <100 & c2 ?데이터 SEQ count2 : = count2 + 1 병합됨!데이터 상태? SEQ 출력! count1 out!2
그러면 채널 c1 또는 c2(준비된 채널 중 하나)에서 데이터가 읽혀지고 병합된 채널로 전달됩니다.count N이 100에 도달하면 해당 채널에서 읽기가 비활성화됩니다.상태 채널의 요구는 카운트를 출력하여 응답합니다.out
.
언어 리비전
occam
ocsam[2] 1(1983년 출시)은 EPL과 토니 호어의 CSP에 관한 David May의 연구에서 빌린 언어의 예비 버전입니다.이는 타깃 아키텍처의 네이티브 워드 길이에 대응하는 통합형인 VAR 데이터 유형 및 1차원 배열만 지원했습니다.
occam 2
ocsam[3] 2는 1987년에 Inmos Ltd가 제작한 확장판으로 부동소수점 지원, 함수, 다차원 배열 및 다양한 정수 크기(INT16, INT32) 및 바이트 등의 데이터 유형을 추가합니다.
이 개정으로 occam은 유용한 프로그램을 표현할 수 있는 언어가 된 반면 occam 1은 알고리즘을 검토하고 새로운 언어를 탐색하는 데 더 적합했다(다만 occam 1 컴파일러는 occam [4]1로 작성되었기 때문에 occam 1의 한계에도 불구하고 적절한 크기의 유용한 프로그램을 occam 1로 작성할 수 있다는 증거가 있다).
occam 2.1
ocam 2.1은[1] Inmos에 의해 기여된 일련의 ocam 언어 개발 중 마지막이었다.1994년에 정의되었으며, 1990년대 초 Inmos의 Geoff Barrett에 의해 만들어진 Occam 3 언어에 대한 초기 제안(초기 개발 기간 동안 "occam 91"이라고도 함)에 영향을 받았다.커뮤니티 코멘트를 위해 [5]occam 3을 설명하는 개정판 레퍼런스 매뉴얼이 배포되었지만, 이 언어는 컴파일러에서 완전히 구현되지 않았습니다.
occam 2.1에서는 occam 2에 다음과 같은 몇 가지 새로운 기능이 도입되었습니다.
- 명명된 데이터 유형(DATA TYPE x IS y)
- 이름 있는 레코드
- 포장된 레코드
- 일부 유형 변환 규칙 완화
- 새 연산자(예: BYTSIN)
- 채널 재입력 및 채널 어레이
- 함수에서 고정 길이 어레이를 반환할 수 있습니다.
변경 사항의 전체 목록은 Inmos occam 2.1 참조 매뉴얼의 부록 P를 참조하십시오.
오컴의 매개에 의한
occam-timeout은[6] Kent Retargetable occam 컴파일러(KRoC)의 최신 버전에서 구현된 occam 배리언트의 공통 이름입니다.Occam 이름에 기호 ((pi)를 추가한 것은 --calculus에서 영감을 얻은 몇 가지 아이디어를 포함한 KRoC occam을 암시하는 것이다.Occam 2.1 컴파일러에 대한 몇 가지 중요한 확장기능이 포함되어 있습니다.예를 들어 다음과 같습니다.
「 」를 참조해 주세요.
- XC 프로그래밍 언어. Occam을 기반으로 하지만 C 스타일 구문을 사용합니다.
- 동시 프로그래밍 언어
- 동시 및 병렬 프로그래밍 언어 목록
레퍼런스
- ^ a b occam 2.1 Reference Manual (PDF). SGS-Thomson Microelectronics Ltd. 1995-05-12. Inmos 문서 72 oc 45 03
- ^ occam Programming Manual. Prentice-Hall. 1984. ISBN 0-13-629296-8.
- ^ Ericsson-Zenith, Steven (1988). occam 2 Reference Manual. Prentice-Hall. ISBN 0-13-629312-3.
- ^ Cook, Barry M; Peel, RMA (1999-04-11). "Occam on Field-Programmable Gate Arrays". In Cook, Barry M. (ed.). Architectures, Languages and Techniques for Concurrent Systems. 22nd World Occam and Transputer User Group Technical Meeting. Keele, United Kingdom: IOS Press. p. 219. ISBN 90-5199-480-X. Retrieved 2016-11-28.
- ^ Barrett, Geoff; Ericsson-Zenith, Steven (1992-03-31). "occam 3 Reference Manual" (PDF). Inmos. Retrieved 2008-03-24.
{{cite journal}}
:Cite 저널 요구 사항journal=
(도움말) - ^ Barnes, Fred; Welch, Peter (2006-01-14). "occam-pi: Blending the best of CSP and the pi-calculus". Retrieved 2006-11-24.
추가 정보
- Communicating Process Architectures 2007 – WoTUG-30. IOS Press. 2007. pp. 513 pages. ISBN 978-1-58603-767-3. [1]
- Communicating Process Architectures 2006 – WoTUG-29. IOS Press. 2006. pp. 391 pages. ISBN 978-1-58603-671-3. [2]
- Communicating Process Architectures 2005 – WoTUG-28. IOS Press. 2005. pp. 405 pages. ISBN 978-1-58603-561-7. [3]
- Kerridge, Jon, ed. (1993). Transputer and Occam Research: New Directions. IOS Press. pp. 253 pages. ISBN 0-8247-0711-7.
- Roscoe, Andrew William; Hoare, Charles Antony Richard (1986). The Laws of Occam Programming. Programming Research Group, Oxford University.
- Egorov, A., 기술대학교 - Sofia, (1983-2011)
외부 링크
- WoTUG occam 페이지에 있는 정보, 컴파일러, 에디터 및 유틸리티
- Internet Parallel Computing Archive(인터넷 병렬 컴퓨팅 아카이브) 컴파일러, 문서, 예시, 프로젝트 및 유틸리티(유지관리 종료)
- 트랜스푸터에 관한 Occam 서적들.그물
- ocam-pi 언어
- Tock occam 컴파일러 – (켄트에서 occam에서 C로 변환) occam 및 관련 언어용 Haskell 기반 컴파일러입니다.