Skip to main content
QUICK REVIEW

[論文レビュー] Design and Implementation of a Reversible Object-Oriented Programming Language

Tue Haulund|arXiv (Cornell University)|Jul 25, 2017
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が作成し、人間の編集者が確認しました。