研究課題/領域番号 |
15K15964
|
研究機関 | 東北大学 |
研究代表者 |
上野 雄大 東北大学, 電気通信研究所, 助教 (60551554)
|
研究期間 (年度) |
2015-04-01 – 2019-03-31
|
キーワード | SML# / コンパイラ / 実装方式 / 最適化 / コード分析 |
研究実績の概要 |
本研究では,これまで経験的に開発されてきた実用プログラミング言語に対し,関数型言語の理論研究アプローチを応用した理論基盤に基づき,言語のモジュラーな形式的理解を与え,実用プログラミング言語の系統的な設計と実装を可能とする枠組みを確立することを目指す.この一般的な目標の達成に向けて,本研究では,言語の系統的開発のモデル言語としてSML#を,実用スクリプト言語としてRubyを選択し,SML#の開発と緻密に連携しながら,Rubyの操作的意味論の系統的導出を目指している. 本年度の研究実施計画は,Rubyについてより詳細な調査を行い,先行研究よりも詳細かつ網羅的なRubyのコア言語を与え,Rubyの全構文をコア構文に翻訳するアルゴリズムを構築することであった.この計画に従い,本年度は以下の研究を実施した. (1) 本研究の基礎となる研究代表者らの先行研究をさらに発展させ,Ruby言語全体を,コアとなる計算系と,そのコアを拡張するサブ計算系の集合にそれぞれ分割した.これらの計算系の評価規則に現れる環境をレコード多相的に与えることで,先行研究よりも機能間の独立性が高く形式的合成が可能な操作的意味論を構築した. (2) 前述の操作的意味論からRubyのインタプリタを手作業で導出し,操作的意味論からインタプリタをおおよそ機械的に作り出せることを確認した.このインタプリタは,SML#で記述され,前述した形式的合成後の計算系に対する評価器と,Rubyの全構文をその計算系に翻訳するアルゴリズムからなる.このインタプリタは,Ruby処理系とともに公開されているテストケースの全ソースファイルを読み込むことができ,さらにいくつかのテストケースに合格することができた.
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
本年度に当初予定していたRubyの分析および翻訳アルゴリズムの構築については,その最初のバージョンの構築がほぼ完了している.さらにその完成度を確認するため,手作業ではあるがインタプリタの導出にもすでに取り組み始めている.以上より,おおむね所期の進展を得られたと考える.
|
今後の研究の推進方策 |
以下の点に重点を置きつつ研究を進める. (1) Ruby開発チームとの連携.本研究の提案の完成度と実用性をさらに高めるためには,コーナーケースを含む緻密な言語仕様の理解と記述や,本提案の実用言語開発への適用を通じた評価などに取り組む必要がある.これらの目標をより高い水準で達成するため,共同利用研究施設である東北大学電気通信研究所の共同プロジェクト研究制度を活用し,SML#とRubyの開発チームの技術交流を行うことを計画している. (2) 完成度の高いRubyインタプリタの導出と規格適合性の検証.本研究で構築したRubyの操作的意味論は,広く用いられているRubyインタプリタとは独立に開発したものであり,これが正しくRubyを表現しているかどうかは,十分に評価されていない.正しさを確認するひとつの方針は,操作的意味論から導出したインタプリタでRuby言語付属のテストケースを実行し,全てのテストに合格することを確かめることである.このようなテストを可能とする,組み込みライブラリを含むRubyインタプリタを導出し,軽量に実装する方針を検討する. (3) 高効率なコンパイラを導出するための要素技術の開発.関数型言語的アプローチによる仕様からのコンパイラの導出には,関数型言語コンパイラの要素技術も洗練することが必要不可欠である.そこで,Rubyに限らず,SML#においても,多相関数や言語間連携の実現方式,外部データの取り扱い方式など,実用言語とも関連の深い高度な言語機能を実現するために必要な基礎研究を行う.
|
次年度使用額が生じた理由 |
国際会議への採択が無かったことに伴い海外旅費の余剰が発生した.
|
次年度使用額の使用計画 |
研究費は,研究調査および研究成果発表のための学術会議参加費および旅費,研究の遂行に必要なノートPCやソフトウェアなどの消耗品,ならびに書籍など資料の購入に使用する.
|