# HG changeset patch # User anatofuz # Date 1612603499 -32400 # Node ID 1b3f1e6b45bc233e8d1452d46b50b51613595758 # Parent c5b8cf006038d488a267f19ef6e016ceb24d3d7b update diff -r c5b8cf006038 -r 1b3f1e6b45bc paper/chapter/06-evaluation.tex --- a/paper/chapter/06-evaluation.tex Sat Feb 06 17:33:57 2021 +0900 +++ b/paper/chapter/06-evaluation.tex Sat Feb 06 18:24:59 2021 +0900 @@ -1,8 +1,10 @@ \chapter{評価} + \section{GearsOSの構文作製} GearsOSで使われるInterface、およびそのImplementの型定義ファイルを導入した。 GearsOSでプログラミングする際に通常のC言語やJavaなどの言語の様に、まず型を作成してからプログラミングすることが可能になった。 +言語機能としてはC言語や純粋なCbCより進化しており、現代的と言われるRustやgolangと比較しても十分に実用的な言語になったと言える。 ただし現状のGearsOSでは1ファイルに1つの型定義しかできない。 アプリケーションとしてGearsOSを動かす現在の例題ではそこまで問題になっていない。 @@ -14,6 +16,16 @@ 本研究によってPerlトランスパイラレベルでのエラーの生成を可能にし、 GearsOSのメタレベルのコードを読まずともバグ検知が可能となった。 またInterfaceのパーサーなどのAPIを定義したことによって、 トランスパイラ側での様々な処理の拡張性を高めることが可能となった。 +今まではGearsOSのモジュール化の仕組みとして使っていたInterfaceであるが、より一般的なInterfaceの使いかたに近づいたと言える。 +特に今まではInterfaceで定義したAPIを満たしていなくても、 GearsOSは容赦なくビルドを進めてしまう問題があった。 +これによりメタコードが含まれた状態でしかコンパイルエラーを発見できなかった。 +またコンパイルエラーも出ず、動作させてみないと解らないエラーも存在していた。 + +Interface機能が充実したことにより、これらのエラーがビルド時に明確に解るようになった。 +従来行っていたデバッグもコンパイルエラーが発生するため不必要になり、よりプログラミングすることがやりやすい言語になった。 +また、目的としていたメタレベルとノーマルレベルの分離を、コンパイルエラーという観点でもできるようになったと考える。 + + しかし導入したジェネリクス機能については議論の余地がある。 Perlトランスパイラ側での実装を行ったが、非常に実装するのが困難であった。 これはC言語から派生したGearsOSのシンタックスと、それを正規表現を主に使ってコード変換を行うPerlトランスパイラが、ジェネリクスとの相性が合わなかった為である。 @@ -28,4 +40,4 @@ 従来のGearsOSではcontext.hやStubCodeGearなどのメタレベルのコードは、比較的手動で実装する必要があった。 自由度は高いものの、様々な場面で登場するメタレベルのコードをすべて書くのは煩雑である。 本研究によってメタ計算の自動生成機能がより強化され、さらにメタレベルの計算を活用することが可能となった。 -特にmeta.pmによるMetaCodeGearの切り替えは強力であり、任意のMetaCodeGearに継続することで、モデル検査やGearsOSのデバッグ機能などを組み込むことが可能となった。context.hGen +特にmeta.pmによるMetaCodeGearの切り替えは強力であり、任意のMetaCodeGearに継続することで、モデル検査やGearsOSのデバッグ機能などを組み込むことが可能となった。 diff -r c5b8cf006038 -r 1b3f1e6b45bc paper/chapter/conclusion.tex --- a/paper/chapter/conclusion.tex Sat Feb 06 17:33:57 2021 +0900 +++ b/paper/chapter/conclusion.tex Sat Feb 06 18:24:59 2021 +0900 @@ -10,6 +10,10 @@ 従来はgenerate\_stub.plで呼び出されていた簡易的なパーサーを、Interface用に再実装し、様々な情報を定義ファイルから取得できるようになった。 これによりImplementのCbCのファイルの雛形生成や、 Perlインタプリタレベルでの警告の生成などが可能となった。 +導入したmeta.pmによってメタ計算を自在に操作することが可能となった。 +また、Interface経由でのpar gotoの呼び出しが可能となった。 +これらの組み合わせで、並列にオブジェクトを動作させ、モデル検査させる仕組みがGearsOS上に整備された。 +実際にモデル検査器を現在のGearsOS上にすでに動作させたことがあり、 GearsOSを使ってOSの信頼性を向上させる目標に対して前進できたと言える。 \section{今後の課題} diff -r c5b8cf006038 -r 1b3f1e6b45bc paper/master_paper.pdf Binary file paper/master_paper.pdf has changed