C2Python
- メンバー:久保井彩香,諏訪貴大,吉山大輔
- テーマ:初学者のためのレゴマインドストーム EV3 を用いた C プログラムからPythonプログラムへの翻訳器の作成
配属時の希望
- 久保井彩香:流れの研究
- 諏訪貴大:プログラミング言語理論
- 吉山大輔:プログラミング
報告書
- (3年Q3において流れの研究の論文調査を行っていた.直接本プロジェクトに用いられない.)
- 久保井:[OhYK16] 大久保雄飛,横山哲郎,金山知俊:二分木のランク計算のクリーン可逆シミュレーション,日本ソフトウェア科学会第33回大会講演論文集(2016).
- 諏訪:[KaNa19] 加藤舞,内藤綾香:多重連結領域上の安定非圧縮流の解析,南山大学2018年度卒業論文(2019).
- 吉山:[KaNa19] 加藤舞,内藤綾香:多重連結領域上の安定非圧縮流の解析,南山大学2018年度卒業論文(2019).
- 2019年11月21日 ラムダ式の翻訳器(レポート(新美,野端,諏訪),実装,添削後の実装)
- 服部,久保井,宮本,諏訪,吉山,板田,藤田:レゴマインドストームEV3のためのCプログラムからJavaプログラムへの翻訳器.(スライド)
- 2020年1月15日 卒業研究の題目と要旨
- 2020年5月6日 進捗報告書
- 卒業論文「渡邉将匡,赤羽里帆,廣瀬隼大:初学者の学習支援のためのPythonとRuby間の翻訳,南山大学2017年度卒業論文(2018)」だけでなく,調査をして下さい。スイス工科大学の研究も文献調査の対象に含めて下さい.
- プログラミング言語の翻訳について学んだことを卒論の一部としてください。例えば,このレポートの諏訪君担当部分を卒論の一部としてまとめ直してください。
- 2020年6月29日15:15-15:45 研究ミーティング,今後の予定を相談する
- 2020年8月13日10:00-11:40 研究ミーティング
- 以下を調査中,文献調査レポートは今後作成していく.
- 諏訪:Automatic Translation and Object-Oriented Reengineering of Legacy Code. Marco Trudel.
- 吉山(自分で見つけた):
- 松澤 芳昭,坂本 一憲,大畑 貴史,筧 捷彦:プログラミング教育のための多言語間プログラミング言語翻訳システム,(2015). http://id.nii.ac.jp/1001/00144704/
- 小松香爾:プログラミング教育の問題と対策,経営論集 第25巻第1号 2015年 83〜104頁. PDF
- 久保井:
- Source-to-source compiler@Wikipedia
- C to O-O Translation: Beyond the Easy Stuff. Marco Trudel, Carlo A. Furia, Martin Nordio, Bertrand Meyer, and Manuel Oriol.
- 環境構築:C言語,MicroPython,仮想環境の開発環境は構築済
- ターゲットの言語をJavaからMicroPythonへ変更.
- 調査している論文・技術文書は? 購入する文献を検討する(Pythonに関する書籍)
- 今後,週に2回定例でグループでZoomミーティングを行う
- 以下のような進捗報告(日報)を提出する.
- 平日に実施した内容をテキストファイルに書いてSlackに送信
- 今後何をするかも箇条書きで具体的に記載
- 理解出来なかった点を箇条書きで具体的に記載.
・例1) 進捗 浅井健一:プログラミングの基礎,サイエンス社(2007). 第20章p.224から第21章p.258 を勉強 理解出来なかった点 p.226-227 赤黒木の再構成が行われるときに,最悪でも木の頂点数の対数に比例した時間で収まるとあった。 しかし,なぜ最悪時間がこのようの押さえられるか分からなかった。インターネットで検索してWikipediaの 記事を読んだがイメージがわかなかった。 p.258 l.10-15とページ上部の図 なぜF:10の下にJ:11がくるのかが分からなかった。p.257のアルゴリズ ムの(2)から(3)へステップが移るときが理解できていないのだと思う。 出てきた専門用語のリスト(理解していたら○知らなければ×,調べて分かったものは×→○) 例) p.224 バランス木 ×→○ p.246 参照型 ○ ...
・例2) 進捗 文献[1]のpp.1-3を読んだ.文献[1]の研究目的やアプローチを文章でまとめた. [1] Schultz, U.P., Reversible Object-Oriented Programming with Region-Based Memory Management, Proc. Reversible Computation, Kari J., Ulidowski I. (Eds.), Lecture Notes in Computer Science, Vol.11106, Springer (2018), DOI: 10.1007/978-3-319-99498-7_22 理解出来なかった点 ... 出てきた専門用語のリスト 例) p.1 Object-Oriented Programming ×→○ p.2 Region-Based Memory Management ○ ... 今後実施する予定の作業 文献[1]の背景,結果,有用性,限界・短所,次に何を読めば良いか?を文章でまとめる
- 以下を調査中,文献調査レポートは今後作成していく.
- 2020年9月18日13:30-14:52 研究ミーティング
- 目的:C言語の経験豊富だがPython初学者がEV3上のPythonプログラムの開発効率の向上
- 詳細化する
- ソースコード Python と Cを1例準備する
- 目的:C言語の経験豊富だがPython初学者がEV3上のPythonプログラムの開発効率の向上
- 2020年9月26日10:00-10:30 研究ミーティング
- 「はじめに」に入れた文章を論理的に配置し直す。
- 前回「目的:C言語の経験豊富だがPython初学者がEV3上のPythonプログラムの開発効率の向上」としていたが, 要旨で「時間や費用,労力といった学習コストがかかるといった問題」の解決をするためとした。 現在の要旨における目的「ソフトウェア開発効率の向上」が適切であるか要検討(目的をそのままにするなら前の文章がここにつながるようにする。前の文章を残すなら目的をより適切なものに書き改める)。 「はじめに」と「おわりに」を対応させること。
- ソースコード Python と Cを1例準備する(継続。Cプログラムを1例挙げている。対応するMicroPythonのコードの準備が必要)。 ループやif文,メソッドなど変換対象とする言語要素をなるべく多く含む例が良いのでは無いか? 時間が限られているので「設計」の章は中間発表では例を示すのみにすることが現実的。
- 要旨とスライドが完成したらSlackで共有する
- 論文の書き方を参考にする.参考文献の書き方を情報処理学会の形式で統一する.
- 10月1日に発表練習を実施する
- 2021/01/20ミーティング
・久保井さん スイス工科大学の研究をフォロー → スライドにまとめて発表(背景,目的,原理,結果,評価/考察,自分の考え) → 関連研究,1章 ・吉山くん プロトタイプc2pythonを再度見直す,一部拡張する 本研究に関連するコンピュータサイエンス入門の復習(AST vs parse tree についても理解する) 設計・実装について執筆 ・諏訪くん ラムダ式のコンパイラについて追加する スイス工科大学の変換のうちautoOOに関するところをフォローして文章にまとめる(変換例)
計画
- 参考文献を読んで内容を自分の文章でまとめる
- C/MicroPythonの開発環境を準備する(コンパイルして実行できるようになる)
- C/MicroPythonのサンプルプログラムの作成
- C/MicroPythonの字句解析器・構文解析器の作成(既存のものを使う)
- (中間言語の設計→直接変換する)
- C2中間言語,中間言語2MicroPythonの翻訳器の作成
参考文献
- 3年次Q1Q2の輪読で用いた入門書
- [OhGN99] 大堀 淳,ジャック ガリグ,西村 進:コンピュータサイエンス入門〈アルゴリズムとプログラミング言語〉,岩波書店 (1999).
- [TaNH99] 田辺 誠,中島玲二,長谷川真人:コンピュータサイエンス入門〈論理とプログラム意味論〉,岩波書店 (1999).
- スイス工科大学における翻訳器の研究
- C2Eif - A C to Eiffel translator (ページの下の方のPublicationsは要チェック,特にMarco TrudelのDissertationを要チェック)
- J2Eif - A Java to Eiffel translator
- Tangible Software Solutions Inc.
様々なプログラミング言語間の翻訳器を開発している - アフレルの出版物
- アフレル,山本利一:ロボットと情報技術 実習-教育版EV3・C言語 教師用授業ガイド ≪改訂版≫,アフレル(2015).
- アフレル,????:ロボットと情報技術 実習-教育版EV3・Java 教師用授業ガイド,アフレル(????).
- アフレル:教育版EV3 Javaプログラミングガイド Ver2.0.0, 第5版,アフレル(2019).
- アフレル:教育版EV3 C言語プログラミングガイド ≪改訂版≫,第3版,アフレル(2016).
- アフレル:教育版EV3 ソフトウェアプログラミングガイド,第2版,アフレル(2014).
- アフレル:ロボットで学ぶ C言語 プログラミング基礎 for LEGO Mindstorms EV3,初版,アフレル(2018).
- アフレル:ロボットで学ぶ Java プログラミング基礎 for LEGO Mindstorms EV3,初版,アフレル(2018).
- 渡邉将匡,赤羽里帆,廣瀬 隼大:初学者の学習支援のためのPythonとRuby間の翻訳,南山大学2017年度卒業論文(2018).
- kon-nyaku: プログラミング言語のほんやくコンニャク/Google Translatorへの第一歩 @github
- 横山哲郎,金山知俊:2019年度 情報システム開発実習 講義資料(2019).
- メモ:高水準プログラミング言語間の変換, Ruby2Python
- 2019年度 情報システム開発実習Webページ:EV3RTについての補足
EV3RTの環境構築について記載がある:C言語,Java - Source-to-source compiler @Wikipedia
- MicroPython導入ガイド
- [MSOK2015] 松澤 芳昭, 坂本 一憲, 大畑 貴史, 筧 捷彦: プログラミング教育のための多言語間プログラミング言語翻訳システム, 情報教育シンポジウム2015論文集, pp.223–230(2015). @情報処理学会電子図書館
- COBOL2Java
- ジェイ・クリエイション:製品およびサービス(VENUS)
- 東京システムハウス株式会社:opensource COBOL 4J,プレスリリース,MMS for Java(Javaリライト方式)
- アクセンチュア, 日経ビジネスの記事
- 富士通:COBOL2Java
- 野村総合研究所
- ソフトロード
- TIS
- CPython