研究実績の概要 |
本研究は,当初の目的であるステートフルアスペクトの意味論,およびアドバイス織込みの意味論を動的に変更する機構を発展させ,近年のWeb開発で多用されている非同期処理の複雑さを隠蔽する仕組みに取り組んできた.本研究ではこれまでアスペクトを利用して非同期処理の問題に取り組んできたが,どうしてもアドホックな解決策になり,提案機構が適用できない状況が存在(try-catchなど)していた. そこで本年度は,非同期処理の機構を言語そのものに取り入れるプログラム言語の研究に取り組んだ.具体的には.非同期処理を含む関数に非同期型を導入し,非同期型関数を呼び出すプログラムはその終了を待たずに処理を継続する.そして,非同期型関数からの戻り値に依存する処理はその実行をブロックし,依存しない処理は実行し続ける,という振る舞いを実現するプログラム言語を考案し,構文定義,その振る舞いを定義する研究に取り組んだ. この研究では,簡単な計算(and, or)と関数定義,関数呼び出しだけが可能な関数型言語(Liquid)を定義し,構文をBNF, 振る舞いを操作的意味論で定義し,処理系をPromiseを利用して実装して国際会議に投稿した.しかしながら,論文で想定した例題が簡単なものであったため,「非同期型を導入する必要がない」,という指摘を査読者から受けたが,「非同期型」を導入し,非同期処理の複雑さを解決する取り組み自身は受け入れられた.そこで型ではなく,まずは構文として非同期関数を定義する計算体系定義し,情報処理学会第80回全国大会で発表した.現在は査読者のレビューを参考にし,Liquidにクロージャを導入し,その構文規則,意味論,型規則を定義して,非同期型が必須となる例題を模索している.
|