Skip to main content
QUICK REVIEW

[논문 리뷰] A DENOTATIONAL ENGINEERING OF PROGRAMMING LANGUAGES to make software systems reliable and user manuals clear, complete and unambiguous. A book in statu nascendi

Andrzej Blikle, Chrząstowski-Wachtel, Piotr|arXiv (Cornell University)|2018. 01. 01.
Computability, Logic, AI Algorithms참고 문헌 17인용 수 1
한 줄 요약

이 논문은 형식적 수학적 모델을 사용하여 언어 의미를 정확히 정의하는 표현적 공학 방법론을 제안한다. 이는 소프트웨어의 신뢰성 향상과 사용자 매뉴얼의 모호성 제거를 목표로 한다. cpos(사슬 완비 부분순서)와 형식적 문법에 기반한 표현적 모델을 통해 프로그래밍 언어를 체계화함으로써, 명확하고 수학적으로 엄밀한 언어 정의를 가능하게 하고, 정확한 프로그램 개발 및 문서화를 위한 도구 지원을 가능하게 한다.

ABSTRACT

The book is devoted to two research areas: (1) Designing programming languages along with their denotational models. A denotational model of a language consists of two many-sorted algebras - an algebra of syntax and an algebra of denotations - and a (unique) homomorphism from syntax to denotations called the semantics of the language. (2) Designing sound program-constructors for languages with denotational models. In our approach programs syntactically contain their total-correctness specifications. A program is said to be correct if it is correct wrt its specification. A program-constructor is sound if given correct component-programs yields a correct resulting program. Both methods are illustrated on an example-language Lingua.

연구 동기 및 목표

  • 기존 프로그래밍 언어 매뉴얼의 모호성, 불완전성, 일관성 문제를 해결하기 위해.
  • 표현적 모델을 사용하여 언어 의미를 형식적으로 명세화함으로써 소프트웨어의 신뢰성을 향상시키기 위해.
  • 형식적 의미론에 기반한 체계적인 방법론을 통해 명확하고 완전하며 모호하지 않은 사용자 매뉴얼을 작성하기 위해.
  • 레이어드 언어 설계(Lingua)와 형식적 검증 원칙을 통해 정확한 프로그램 개발을 지원하기 위해.
  • 제안된 언어 공학 프레임워크의 구현과 검증을 위한 커뮤니티와 도구 체인을 구축하기 위해.

제안 방법

  • 사슬 완비 부분순서(cpos)에 기반한 표현적 모델을 사용하여 프로그래밍 언어를 정의함으로써 수학적 엄밀성과 완전성을 확보하기 위해.
  • 형식적 정의에서 유도된 추상 문법, 구체 문법, 의미 규칙을 포함하는 다층 언어 설계인 Lingua를 도입하기 위해.
  • 형식적 대수적 서명을 사용하여 추상 문법 문법을 생성하고 의미 규칙 생성을 지원하기 위해.
  • 의미 규칙과 문법 정의에서 추론하여 추상 문법, 구체 문법, 의미 규칙, 인터프리터/컴파일러 코드를 자동으로 생성하는 도구를 설계하기 위해.
  • 사용성 향상을 위해 일상어 문법을 형식적 구체 문법으로 복원하는 시스템을 설계하기 위해.
  • 기초 의미론을 통합하여 명확하고 일관성을 확보한 매뉴얼 작성 프레임워크를 구축하기 위해.

실험 결과

연구 질문

  • RQ1어떻게 하면 프로그래밍 언어 의미를 형식화하여 언어 명세의 모호성과 불완전성을 제거할 수 있는가?
  • RQ2신뢰성 있고 모호하지 않은 프로그래밍 언어 정의를 구성하는 데 어떤 수학적 기초가 필요한가?
  • RQ3전문 지식이 필요 없이도 형식적 의미론을 반영한 체계적인 방식으로 사용자 매뉴얼을 작성할 수 있는가?
  • RQ4어떤 도구 체인이 문법에서 실행까지 형식적으로 정의된 프로그래밍 언어를 구현하는 데 필요할까?
  • RQ5형식적으로 기반을 둔 프로그래밍 언어 시스템을 구축하고 유지보수하기 위한 개발자 커뮤니티를 어떻게 형성할 수 있는가?

주요 결과

  • 표현적 공학 접근법은 cpos와 형식적 문법을 사용하여 수학적으로 타당한 기반을 제공하며, 의미의 완전성을 보장한다.
  • 형식적 서명에서 유도된 레이어드 언어 시스템(Lingua)은 모듈화되고 정확한 언어 개발을 가능하게 한다.
  • 형식적 정의에서 유추된 추상 문법, 구체 문법, 의미 규칙, 인터프리터/컴파일러 코드를 체계적으로 유도할 수 있는 도구를 개발할 수 있다.
  • 형식적 의미론에 기반한 사용자 매뉴얼은 정확하면서도 전문 프로그래머가 이해할 수 있도록 접근 가능하게 작성될 수 있으며, 모호성을 줄일 수 있다.
  • 이 프레임워크는 수학적 정확성을 유지하고 타당하지 않은 확장을 피하기 위해 비오픈소스 구현을 위한 커뮤니티 기반 시스템을 구축하는 데 지원한다.
  • 마이크로프로그램을 활용한 프로그래밍 실험을 통해 이 방법론이 실제 성능 중심의 환경에서 실현 가능하고 정확함을 입증한다.

더 나은 연구,지금 바로 시작하세요

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.