동기 프로그래밍 언어

Synchronous programming language

동기 프로그래밍 언어는 반응형 시스템을 프로그래밍하기 위해 최적화된 컴퓨터 프로그래밍 언어입니다.컴퓨터 시스템은 크게 세 가지 클래스로 분류할 수 있습니다. (1) 입력, 처리, 출력 및 실행을 종료하는 변환 시스템, 전형적인 예는 컴파일러, (2) 환경과 자체 속도로 지속적으로 상호작용하는 인터랙티브 시스템, 전형적인 예는 웹, (3) 반응형 시스템입니다.환경에 의해 부과된 속도로 지속적으로 환경과 상호작용하는 시스템; 대표적인 예가 현대 비행기의 자동 비행 제어 시스템이다.따라서 반응 시스템은 엄격한 시간 범위 내에 환경의 자극에 반응해야 합니다.이러한 이유로 실시간 시스템이라고도 하며 임베디드 시스템에서 자주 볼 수 있습니다.

동기 프로그래밍(SRP)은 동기 프로그래밍 언어에 의해 지원되는 컴퓨터 프로그래밍 패러다임입니다.SRP의 원리는 프로그래밍 언어에 대해 디지털 회선의 동기 추상화와 동일한 추상화를 만드는 것입니다.동기회로는 전자트랜지스터의 타이밍 특성이 무시되는 고레벨 추상화로 설계된다.따라서 회로의 각 게이트(또는 ...)는 즉시 결과를 계산하고 각 와이어는 즉시 신호를 전송하는 것으로 가정합니다.동기회로를 클럭하여 클럭의 각 틱에서 입력값과 메모리 셀의 전류값으로부터 그 출력값과 메모리 셀의 새로운 값(래치)을 순간적으로 계산한다.즉, 회로는 전자가 무한히 빠르게 흐르는 것처럼 동작합니다.최초의 동기 프로그래밍 언어는 1980년대에 프랑스에서 발명되었다: 에스트렐, 루스트레, 시그널.그 이후로, 많은 다른 동기 언어들이 생겨났다.

동기 추상화는 논리 틱의 개념으로 인해 동기 프로그램에서의 시간에 대한 추론을 훨씬 쉽게 만듭니다.동기 프로그램은 일련의 틱으로 환경에 반응하며 틱 내의 계산은 마치 프로세서가 이를 실행하는 속도가 무한히 빠른 것처럼 순간적인 것으로 가정됩니다.따라서 문장 "a b"는 패키지 "ab"로 추상화되며, 여기서 "a"와 "b"는 동시에 나타난다.구체적인 예를 들면, Estrel 스테이트먼트60초마다의 분발」은, 신호 「」이 신호 「」의 60번째 발생과 정확하게 동기하고 있는 것을 나타내고 있습니다.보다 근본적인 수준에서 동기 추상화는 동시 동작의 인터리빙에 기인하는 비결정주의를 제거한다.이것에 의해, 결정론적 의미론이 가능하게 되어, 동기 프로그램은 정식 분석, 검증, 및 인증된 코드 생성에 대응해, 정식 사양 형식으로서 사용할 수 있게 됩니다.

이와는 대조적으로, 비동기 연산 모델에서 순차 프로세서에서 문 "a"는 "a;b" 또는 "b;a"로 구현될 수 있다.이를 인터리빙 기반의 비결정론이라고 합니다.비동기 모델의 단점은 본질적으로 결정론적 의미론(예: 인종 조건)을 금지하고, 분석과 검증과 같은 형식적 추론을 더 복잡하게 만든다는 것이다.그럼에도 불구하고, 비동기 형식은 본질적으로 비동기적이기 때문에 분산 시스템을 모델링, 설계 및 검증하는 데 매우 유용합니다.

이와는 대조적으로 기본적으로 동기적으로 상호작용하는 프로세스를 가진 시스템도 있습니다.를 들어 Communicating Sequential Process(CSP; 통신 순차 프로세스) 모델을 기반으로 구축된 시스템을 들 수 있습니다.이 모델에서는 비결정론적 선택도 가능합니다.

동기 언어

「 」를 참조해 주세요.

레퍼런스

  1. ^ G. Berry와 G. G.동기 프로그래밍 언어 ESTEREL: 설계, 의미론, 구현.컴퓨터 프로그래밍 과학, 19(2), 1992.

외부 링크