16
1 渡部研究室 Programming Systems Group 基礎 諸性質を明らかにする 表現 言語の設計と実装 応用 新しい応用の開拓 様々なプログラミングパラダイム(プログラミングに関する考え方) 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP •新しいプログラミングパラダイム •形式手法とその応用 •言語設計と形式手法の新しい応用領域の開拓 www.psg.c.titech.ac.jp

例:関数型,OOP,アクター,自己反映,AOP, COP, FRP · 2020-02-18 · 新しいプログラミングパラダイム • プログラミングを行う上での規範・考え方-例:手続き的,関数,OO,論理型,制約,etc.•

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP · 2020-02-18 · 新しいプログラミングパラダイム • プログラミングを行う上での規範・考え方-例:手続き的,関数,OO,論理型,制約,etc.•

1

渡部研究室 Programming Systems Group

基礎 諸性質を明らかにする

表現 言語の設計と実装

応用 新しい応用の開拓

様々なプログラミングパラダイム(プログラミングに関する考え方) 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP

•新しいプログラミングパラダイム •形式手法とその応用 •言語設計と形式手法の新しい応用領域の開拓

www.psg.c.titech.ac.jp

Page 2: 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP · 2020-02-18 · 新しいプログラミングパラダイム • プログラミングを行う上での規範・考え方-例:手続き的,関数,OO,論理型,制約,etc.•

新しいプログラミングパラダイム

• プログラミングを行う上での規範・考え方- 例:手続き的,関数,OO,論理型,制約,etc.

• 自己反映(reflection),AOP, COP, FRP, etc.

• 研究の方向- 新しいパラダイムに基づく言語や言語機構,プログラミング方法論が,プログラムの実行効率,開発効率,安全性などの向上を支援することを様々な方法で実証する.• 実証方法:定量的,定性的,形式的,経験的

• 渡部研における関連プロジェクト- FRP言語によるCPS開発の高度化(2016-)

- 並行文脈指向プログラミング(COP)のWSANへの応用(2014-)

- アスペクト指向仕様記述言語Moxa- 自己反映計算にもとづく動的適応- 自己反映的並行オブジェクト指向言語

2

Page 3: 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP · 2020-02-18 · 新しいプログラミングパラダイム • プログラミングを行う上での規範・考え方-例:手続き的,関数,OO,論理型,制約,etc.•

関数リアクティブプログラミング(FRP)

3

リアクティブな系の宣言的な記述を可能にするプログラミングパラダイム

例:ファンの制御module FanController # モジュール名 in tmp : Float, # 温度センサ hmd : Float # 湿度センサ out fan : Bool # 扇風機のスイッチ use Std # 標準ライブラリ

# 不快指数 node di = 0.81 * tmp + 0.01 * hmd * (0.99 * tmp - 14.3) + 46.3

# 扇風機の制御 node init[False] fan = di >= th

# 閾値(ヒステリシス制御付) node th = 75.0 + if fan@last then -0.5 else 0.5

外界から非同期的に与えられるシグナルやイベントを時変値(Time-Varying Values)として抽象化

GUI, Webアプリケーションへの応用(React, Rx, Elmなど)

tmp

hmd

fandi

temperature sensor

humidity sensor

fan

th

FanController

Emfrpによる記述

Page 4: 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP · 2020-02-18 · 新しいプログラミングパラダイム • プログラミングを行う上での規範・考え方-例:手続き的,関数,OO,論理型,制約,etc.•

CPS向けのFRP言語

• CPSはリアクティブな系のひとつ- CPS: Cyber-Physical Systemコンピュータと物理系が混在したシステム

• 小規模システムから構成されるCPSへの活用- チャレンジ:低速・低機能CPU,少メモリ,省電力化,分散化,高信頼化

• プロジェクト- Emfrp, XFRP• 小規模・分散システム向けのFRP言語

- 純粋関数型言語,Glitch-free- 実行時メモリサイズは静的に決定

• 今後の課題- 非同期・分散処理,並列化,低消費電力化- 型システム,形式検証

4

CFRPによるライントレースと 迷路探索のデモ (Arm Cortex-M3)

Watanabe, T., A Simple Context-Oriented Programming Extension to an FRP Language for Small-Scale Embedded Systems, COP 2018, ACM. Sawada, K. & T. Watanabe, Emfrp: A Functional Reactive Programming Language for Small-Scale Embedded Systems, CROW 2016, ACM.

Page 5: 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP · 2020-02-18 · 新しいプログラミングパラダイム • プログラミングを行う上での規範・考え方-例:手続き的,関数,OO,論理型,制約,etc.•

module Balancer in gyroY : Int, # gyroscope (y-axis) accX : Int, # accelerometer (x-axis) encL : Int, # left motor encoder encR : Int # right motor encoder out motorL : Int, # left motor motorR : Int # right motor use Std ... # definitions of constants

node init[0] angle = (angle@last + gyroY * update_time_ms) * 99 / 100

node speedL = encL - encL@last node speedR = encR - encR@last node init[0] distL = distL@last + speedL node init[0] distR = distR@last + speedR

node risingAngleOff = gyroY * angle_rate_ratio + angle node init[0] motor = motorSpeed(motor@last + (angle_resp * risingAngleOff + dist_resp * (distL + distR ) + speed_resp * (speedL + speedR)) / 100 / gear_ratio)

node diffSpeed = (distL - distR) * dist_diff_resp / 100 node motorL = if accX > 0 then motor + diffSpeed else 0 node motorR = if accX > 0 then motor - diffSpeed else 0

例:倒立振子ロボット

5

Pololu Balboa 32U4(ATmega 32U4, 32KB Flash, 2.5KB RAM)

Page 6: 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP · 2020-02-18 · 新しいプログラミングパラダイム • プログラミングを行う上での規範・考え方-例:手続き的,関数,OO,論理型,制約,etc.•

並行文脈指向プログラミング

• 文脈指向プログラミング(COP) - 変化する実行時環境に適応するソフトウェアを効果的に開発する技術 - プログラム中の文脈に依存する記述をモジュール化 • 並行文脈指向プログラミング(CCOP) - 並行システム向けのCOP - 文脈の変化と計算が並行に行 われる際に生じる問題を広域 自己反映計算を用いて解決 • Erlang/Elixirで実装 - 応用:モバイルデバイス,センサネットワーク等 - プロジェクト:WSAN

6

O

A

B

竹野・渡部,アクターモデルに基づく並行文脈指向プログラミング機構の実装と評価,コンピュータソフトウェア, 33(1), 2016. Watanabe, T. and S. Takeno, A Reflective Approach to Actor-Based Concurrent Context-Oriented Systems, COP '14.

Page 7: 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP · 2020-02-18 · 新しいプログラミングパラダイム • プログラミングを行う上での規範・考え方-例:手続き的,関数,OO,論理型,制約,etc.•

プログラミング言語から形式手法へ

• 形式手法(formal method)- 数学(主に数理論理学)を基盤として信頼性・頑健性の高いソフトウェアを構築するための各種手法• 形式仕様記述,検証,解析など

• 研究の方向- プログラミング言語設計やソフトウェア工学分野で発展してきた抽象化・モジュール化手法を積極的に取り入れることで,形式手法をより身近で実用的なものにしたい.

• 渡部研における関連プロジェクト- Actario: アクターモデルのCoqによる形式化(2015-)

- 故障挿入機構を備えたモデリング言語Sandal(2014-)

- 検証済みプログラムの進化と発展(2012-)- 実時間システム用プログラムの自動合成(2010-2011)

- アスペクト指向によるスケーラブルな仕様記述(2005-2007)

7

Page 8: 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP · 2020-02-18 · 新しいプログラミングパラダイム • プログラミングを行う上での規範・考え方-例:手続き的,関数,OO,論理型,制約,etc.•

検証済みソフトウェアの進化と発展

• ソフトウェアは進化・発展する- 機能追加・変更,修正,再利用等

• 検証済ソフトウェアの変更は高コスト- 検証済みソフトウェア=コード+仕様+証明• これらの一貫性を保ちつつ進化・発展するには?

• ECoq:対話的修正機構を備えた定理証明支援系• プログラム中の帰納型に対する変更から,対応する修正箇所の候補を自動的に発見し,検証済プログラムの変更を手助けする.• 特に検証済コンパイラの発展などに適した手法である.

8

Moriguchi, S. & T. Watanabe, An Interactive Extension Mechanism for Reusing Verified Programs, ACM SAC 2013. 森口草介・渡部卓雄, 定理証明支援系Coqへの対話的修正機構の導入, 情報処理学会論文誌(PRO), 5(4), 2012.

Page 9: 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP · 2020-02-18 · 新しいプログラミングパラダイム • プログラミングを行う上での規範・考え方-例:手続き的,関数,OO,論理型,制約,etc.•

言語設計と形式手法の新しい応用領域の開拓

• プログラミング言語や形式手法の考え方は,ソフトウェア以外にも,複雑だが信頼性が要求されるシステムの構築や分析に使える- 扱いやすい形で対象が表されていることが重要• 抽象度 vs. 精密さ• 大きさ・複雑さ

• 関連プロジェクト- 人的誤りに対する障害耐性の分析

9

Page 10: 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP · 2020-02-18 · 新しいプログラミングパラダイム • プログラミングを行う上での規範・考え方-例:手続き的,関数,OO,論理型,制約,etc.•

人的誤りに対する障害耐性の分析

• 人間が実行する仕事の手順書には,人的誤りを含む各種障害に対する対策が盛り込まれている.その障害耐性が十分なものであるか否かを形式手法の考え方を用いて検証する.• 研究プロジェクト

- ソフトウェア故障挿入(SFI)+モデル検査• プロセス代数によってモデル化した手順に人的誤りに相当する障害を自動挿入し,モデル検査による網羅的検査によって障害耐性を分析する手法を提案• 事例:病院における検査,航空レーダー管制システム

Nagatou, N. and T. Watanabe, A Model-Checking Based Approach to Robustness Analysis of Procedures under Human-Made Faults, Intl. J. of Industrial Engineering, Vol. 22, No. 4, 2015.

Page 11: 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP · 2020-02-18 · 新しいプログラミングパラダイム • プログラミングを行う上での規範・考え方-例:手続き的,関数,OO,論理型,制約,etc.•

最近の主な研究発表• 松村・渡部, 組込みシステム向けFRP言語における状態依存動作のための抽象化機構, 情報処理学会論文誌(プログラミング), 2020 (掲載予定)

• 横山・森口・渡部,小規模組込みシステム向けFRP言語に対する再帰的データ型の導入, PPL 2020(発表予定)

• Sakurai & Watanabe, Towards a Statically Scheduled Parallel Execution of an FRP Language for Embedded Systems, REBLS '19, ACM, 2019.• Wang & Watanabe, Functional Reactive EDSL with Asynchronous Execution for Resource-Constrained

Embedded Systems, SNPD '19, Springer, 2019.• Shibanai & Watanabe, Distributed Functional Reactive Programming on Actor-Based Runtime, AGERE

'18, ACM, 2018.• Watanabe, A Simple Context-Oriented Programming Extension to an FRP Language for Small-Scale

Embedded Systems, COP '18, ACM, 2018.• 高桑・渡部,多言語に対応した衛生的マクロ機構導入方式,コンピュータソフトウェア,35(2), 2018.

• Shibanai & Watanabe, Actoverse: A Reversible Debugger for Actors, AGERE '17, ACM, 2017.• Lavery & Watanabe, An Actor-Based Runtime Monitoring System for Web and Desktop Applications,

SNPD '17, IEEE, 2017.• Watanabe, Towards Reflection in an FRP Language for Small-Scale Embedded Systems, LASSY '17,

ACM, 2017.• Sawada & Watanabe, Emfrp: A Functional Reactive Programming Language for Small-Scale Embedded

Systems, CROW '16, ACM, 2016.• 竹野・渡部,アクターモデルに基づく並行文脈指向プログラミング機構の実装と評価,コンピュータソフトウェア, 33(1), 2016.

11

Page 12: 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP · 2020-02-18 · 新しいプログラミングパラダイム • プログラミングを行う上での規範・考え方-例:手続き的,関数,OO,論理型,制約,etc.•

最近の卒業論文

• 2020年- 出力制約つき関数リアクティブシステムにおける入力センサの静的仕様推定(白鳥佑弥)- 内部DSLとしての関数リアクティブプログラミング言語の実装手法(辻裕太)

• 2019年- 組み込みシステム向けFRP言語に対する第一級関数の導入(横山陽彦)- 無線センサーアクターネットワークにおける分散文脈指向プログラミングの応用(後藤司)- アクターモデルを対象としたリバースデバッガにおける再実行機構の改良(山口一生)

• 2018年- 関数型リアクティブプログラミングへの通信処理の導入 (松村有倫)- 組み込みシステム向けFRP言語からSimulinkへのモデル変換 (浅野将希)

• 2017年- Actoverse: A Message-Oriented Online Debugger for Actor Systems(柴内一宏)- 多言語に対応した衛生的マクロ機構導入方式(高桑健太郎)

12

www.psg.c.titech.ac.jp/theses.html

Page 13: 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP · 2020-02-18 · 新しいプログラミングパラダイム • プログラミングを行う上での規範・考え方-例:手続き的,関数,OO,論理型,制約,etc.•

最近の修士論文

• 2020- 組込みシステム向けFRP言語の静的スケジューリングを用いた並列実行モデル(櫻井義孝)- 組込みシステム向けFRP言語における状態依存動作のための抽象化機構(松村有倫)

• 2019- Distributed Functional Reactive Programming on Actor-Based Runtime(柴内一宏)- 構文拡張可能な言語のための拡張PEGの設計と実装(高桑健太郎)

• 2018- Functional Reactive Programming with Asynchronous Execution for Resource-Constrained

Reactive Systems (Wang Sheng)- アクターモデルを用いた小規模組み込みシステム開発の効率化(小川真司)

• 2017- マイクロコントローラのための実用的な関数リアクティブプログラミング言語(澤田賢祐)- 無線センサーアクターネットワークへの分散文脈指向プログラミングの適用(中野瑞樹)

13

www.psg.c.titech.ac.jp/theses.html

Page 14: 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP · 2020-02-18 · 新しいプログラミングパラダイム • プログラミングを行う上での規範・考え方-例:手続き的,関数,OO,論理型,制約,etc.•

博士論文

• 定理証明支援系によるプログラム検証の対話的修正に関する研究 (2013 森口草介)

• 強制可能なセキュリティポリシーの性質に関する研究 (2006 永藤直行)

• アスペクト指向的なモジュール記述を可能とする仕様記述言語 (2005 山田聖)

• 再利用可能な拡張機構を備えた言語処理系 (2001 佐伯豊)

• 拡張の合成を容易とするメタレベルアーキテクチャの研究 (2000 田中哲)

• A Study on a Methodology of Constructing Dynamically Adaptable Software Systems (1999 天野憲樹)

14

Page 15: 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP · 2020-02-18 · 新しいプログラミングパラダイム • プログラミングを行う上での規範・考え方-例:手続き的,関数,OO,論理型,制約,etc.•

B4の1年

• 全体ゼミ(全員参加)- 月 or 金 9-10限 (16:50-18:20)

- 4月~9月はM1以上が発表.それ以降はB4も発表

• 輪講- 月 or 金 9-10限 (16:50-18:20),4月~9月

• プログラミングプロジェクト- 4月~5月- インタプリタやランタイムシステムの作成• プログラミング言語研究のためのトレーニング

• 卒業研究- プログラミングプロジェクトが終わったあたりから

15

Page 16: 例:関数型,OOP,アクター,自己反映,AOP, COP, FRP · 2020-02-18 · 新しいプログラミングパラダイム • プログラミングを行う上での規範・考え方-例:手続き的,関数,OO,論理型,制約,etc.•

研究室メンバー (2020.4~)

16

教授 渡部卓雄特任准教授(ITSP) 永藤直行助教 森口草介博士課程 塩治榮太朗修士課程 後藤司

山口一生横山陽彦白鳥佑弥辻裕太

学士課程 (未定)研究生(YSEP) Luis Dettmer