Skip to main content
QUICK REVIEW

[논문 리뷰] Design and Implementation of a Reversible Object-Oriented Programming Language

Tue Haulund|arXiv (Cornell University)|2017. 07. 25.
Quantum Computing Algorithms and Architecture참고 문헌 4인용 수 7
한 줄 요약

이 논문은 사용자 정의 클래스, 상속, 서브타입 다형성을 지원하는, 형식적 의미론과 타입 체계를 갖춘 첫 번째 가역 객체 지향 프로그래밍 언어인 ROOPL을 소개한다. 이 언어는 국소적으로 가역적인 문장과 PISA라는 가역 어셈블리어로의 가비지 없는 컴파일링을 가능하게 하며, 가역 튜링 기계 시뮬레이터를 통해 계산의 보편성을 입증한다.

ABSTRACT

High-level reversible programming languages are few and far between and in general offer only rudimentary abstractions from the details of the underlying machine. Modern programming languages offer a wide array of language constructs and paradigms to facilitate the design of abstract interfaces, but we currently have a very limited understanding of the applicability of such features for reversible programming languages. We introduce the first reversible object-oriented programming language, ROOPL, with support for user-defined data types, class inheritance and subtype-polymorphism. The language extends the design of existing reversible imperative languages and it allows for effective implementation on reversible machines. We provide a formalization of the language semantics, the type system and we demonstrate the computational universality of the language by implementing a reversible Turing machine simulator. ROOPL statements are locally invertible at no extra cost to program size or computational complexity and the language provides direct access to the inverse semantics of each class method. We describe the techniques required for a garbage-free translation from ROOPL to the reversible assembly language PISA and provide a full implementation of said techniques. Our results indicate that core language features for object-oriented programming carries over to the field of reversible computing in some capacity.

연구 동기 및 목표

  • 클래스, 상속, 다형성과 같은 핵심 OOP 기능을 지원하는 가역 객체 지향 프로그래밍 언어를 설계하고 형식화하는 것.
  • 모든 문장이 프로그램 크기나 계산 복잡도의 증가 없이 국소적으로 가역적이도록 보장하는 것.
  • ROOPL에서 저수준의 가역 어셈블리어 언어 PISA로의 가비지 없는 번역을 가능하게 하는 것.
  • 가역 튜링 기계 시뮬레이터를 구현하여 언어의 계산 보편성을 입증하는 것.
  • 고수준의 OOP 추상화를 가역 계산 영역으로 확장하는 것.

제안 방법

  • Janus와 R과 같은 가역 명령형 언어를 기반으로 한 형식적 문법과 의미론을 갖춘 ROOPL 설계.
  • 표현식, 문장, 메서드, 클래스, 프로그램에 대한 타입 규칙을 정의하여 타입 안정성을 보장하는 타입 체계 정의.
  • 각 문장이 클래스 맵과 객체 위치를 사용하여 스토어를 가역적으로 변환하는 스토어 기반의 운영 의미론 도입.
  • 가역성과 객체 지향 캡슐화를 유지하는 동시에 인수 별칭과 매개변수 전달 방식을 설계.
  • 역의 의미론과 가역 데이터 구조 관리 기법을 사용하여 ROOPL에서 PISA로의 가비지 없는 컴파일링 파이프라인 개발.
  • 각 클래스 메서드의 역을 형식화하고, 모든 언어 구조가 설계 시 국소적으로 가역적이도록 보장하는 것.

실험 결과

연구 질문

  • RQ1클래스 상속과 서브타입 다형성과 같은 핵심 객체 지향 프로그래밍 기능을 가역 계산에 의미 있게 적응시킬 수 있는가?
  • RQ2성능이나 크기의 부담 없이 사용자 정의 데이터 유형을 지원하고 국소적 가역성을 유지하는 가역 고수준 언어를 설계할 수 있는가?
  • RQ3가역 객체 지향 언어에서 저수준의 가역 어셈블리어 언어로의 가비지 없는 번역을 어떻게 달성할 수 있는가?
  • RQ4가역 객체 지향 언어가 가역 튜링 기계를 시뮬레이트하여 계산 보편성을 확보할 수 있는가?
  • RQ5이러한 언어에서 정확성과 가역성을 보장하기 위해 필요한 형식적 의미론과 타입 체계는 무엇인가?

주요 결과

  • ROOPL은 가역 프로그래밍 모델 내에서 사용자 정의 클래스, 상속, 서브타입 다형성을 성공적으로 지원한다.
  • ROOPL의 모든 문장은 프로그램 크기나 계산 복잡도의 추가 비용 없이 국소적으로 가역적이며, 효율적인 가역성을 보장한다.
  • 각 메서드의 역의 의미론에 직접 액세스할 수 있어 객체 지향 연산의 정밀한 역행을 가능하게 한다.
  • ROOPL에서 PISA 가역 어셈블리어로의 완전하고 가비지 없는 번역이 구현되고 검증되었다.
  • ROOPL의 의미론과 타입 체계의 형식화는 가역 실행에서의 타입 안정성과 정확성을 보장한다.
  • 가역 튜링 기계 시뮬레이터의 구현은 ROOPL의 계산 보편성을 확인한다.

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

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

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

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