360 likes | 632 Views
Visual Programming Language. 米澤研究室 清木 昌. Visual Programming Language (VPL) とは. 定義があいまい comp.lang.visual の FAQ 2 次元以上の形式でプログラミングするもの (Myers) Visual な表現を用いるもの (Burnett) グラフィック・描画・アニメーション・アイコン etc. などなど 呼称も VP ・ VL ・ VPL …. Visual Computing. Visual Programming. Computer
E N D
Visual Programming Language 米澤研究室 清木 昌
Visual Programming Language (VPL) とは • 定義があいまい • comp.lang.visual の FAQ • 2次元以上の形式でプログラミングするもの(Myers) • Visual な表現を用いるもの(Burnett) • グラフィック・描画・アニメーション・アイコン etc. • などなど • 呼称も VP ・ VL ・ VPL …
Visual Computing Visual Programming Computer Graphics Algorithm Animation Scientific Visualization User Interfaces from SFT5030 End User Languages
VPLの種類言語の様式 • 純粋な visual language • Prograph や VIPR など • アイコンや矢印などの操作のみで開発 • プログラムからデバッグまで同じ環境 • text と visual の複合システム • グラフィカルな入力をテキストの高等言語に変換 • テキスト言語のプログラミングを補助 例) テキストで書いたデータ構造に例示によって操作を定義し、それをテキストレベルで修正し・・・
VPLの種類言語の目的 (1/2) • 汎用 • Prograph など • 従来の言語の代替物 • 言語表現にとらわれない本質的な開発ができる(?) • End User Programming • AgentSheets など • ユーザが情報をわかりやすい形で整形・可視化 • 専門のスキルのないユーザでも直感的に構築できる • 可視化が自然な形で表せる
VPLの種類言語の目的 (2/2) • シミュレーション • AgentSheets など • 法則を入力したらすぐに結果を得られる • 教育 • ToonTalk など • インタラクティブ性・楽しい視覚効果 • 芸術・娯楽 • 自己言及性・閉じた世界が美しい・・・?
VPLの種類プログラミングパラダイム(1/2) • 例示によるプログラミング • Pygmalion, ToonTalk など • 実際にオブジェクトを操作することにより、各パーツのプログラミングを行う • Dataflow モデル • Prograph など • 用意したネットワーク上をデータが流れていく • 演算に必要なデータが揃うとノードが発火する • 素朴なレベルではデータの流れが把握しやすい
VPLの種類プログラミングパラダイム(2/2) • 制約ベース • 論理型言語を基礎としたもの • PP など • 条件判定→ルール適用 • AgentSheets, 3D-Visulan など • Form ベース • Forms/3 など • 表計算ソフトの A8 = Sum(A1:A7) のような形でセル間の関係を記述する
ToonTalk (2/3) • 概要 • 子供向け教育用プログラミング言語 • 2001 全米 親が子供に与えたいソフト 金賞 • アニメを多用し、子供が親しみ易く • 特徴 • 例示によるプログラミング • 内部的には Prolog 等の論理型言語に近い • 並列実行 • そもそも自然では同時に物事が進んでいく
ToonTalk (3/3) • 特徴 (続き) • 抽象概念の具体化 • 抽象概念がない子供でも直感的に理解できる • 具体化されたものを通して抽象概念を学ぶ
AgentSheets (2/3) • 概要 • シミュレーション用に特化した言語 • 教育用としても売り込まれているが、そもそも思考増幅器としてのコンピュータ利用が目標 • やりたいことがすぐできる • 特徴 • 縦横に並んだセル上に Agent を配置 • 各 Agent が条件にマッチした動作を実行 • 単独の Java Applet として出力が可能
AgentSheets (3/3) • 例 ボールというエージェントに • もしも下が空だったら下に行くように • さもなくば自分の色を赤くするように と設定する →ボール下に落ち、 床で赤くなるという プログラムができる
Prograph (2/8) • 概要 • 成功した商用の汎用 VPL • Professional 向け • 大学での VPL の教材として広く使用されている • 特徴 • Dataflow モデル • オブジェクト指向言語
Prograph (3/8) • Dataflow モデル • Input Bar から Datalink を通って Output Bar まで、上から下へとデータが流れて行く • 各 Operation は Terminal にデータが揃ったら実行
Prograph (4/8) • 例1:Hello World! • 文字列が組み込み演算子showに渡される • 基本型は 真偽値・整数・実数・文字列・リスト・null・未定義 etc. • データの依存関係により実行順序が決定
Prograph (5/8) • 例2 • 組み込み演算子 ask で名前を入力 • 同"join"で文字列を結合 • 名前が空だったらエラー • 定数 NULL との比較 • 比較は優先して実行 • 一致したら次のケースへ • control annotation で示されている control annotation
greetingsメソッドの2番目のケース Prograph (6/8) control annotation エラーメッセージの出力
Prograph (7/8) • 3種類のループ処理 • リストをそのまま展開して並列に処理 • 条件成立まで method の出力を入力に代入 • method 内で自身の再起呼び出し
Prograph (8/8) • object と attribute • 一番左の引数に instance を渡していく
オブジェクト指向の汎用 VPL アイコンを使わず、輪を使う VIPR (1/3)
VIPR (2/3) • 実行制御は輪の置き換えで行う • 矢印の元の輪を先の輪に置き換える • 条件分岐・ループ・関数呼び出し
VIPR (3/3) • 関数を呼び出したときに、輪の内周についた輪同士も代入する • 関数呼び出し時には必ず戻り先を関数に渡す • 引数も同様 • 戻り先の代入時に戻り値も代入される
VEX (1/3) • Visual Expression (VEX) • VIPR のコンポーネント • λ計算のビジュアル表現 • 輪の代入という操作 • λ計算の本質の直感的理解が可能 • 字面では複雑でも、絵で見れば簡単 • α変換・β簡約・η簡約 • 自由変数と束縛変数 • λ計算の講義に最適(?)
VEX (2/3) YコンビネータのVEX表現
VEX (3/3) • 線でつながったものは同時に代入 • 束縛変数はどこかの輪の内側に張り付いており自由変数は一番外に出ている
3D-PP • 概要 • PP=Pictorial Programming • 筑波大の田中研究室 • 並列論理型言語 GHC を VPL にしたもの • 3次元物体の直接操作の方法から研究 • 実行環境は未公開な模様
3D-Visulan • 3D積み木 • 単純な置換規則 • 教育用~娯楽用 • 実用性は低い • シンプルなルールでいかに複雑なことができるか
近年の VPL の方向性 • 3D化 • 安価な3D環境の普及 • 多くの情報を小さなスクリーンで提供可能 • ネットワーク対応 • End User 同士の相互作用を狙う • 大きな新パラダイムの誕生は無い
まとめ • 一口に VPLといっても幅は広い • 色物というイメージがあったが、テキストベースの言語より多様なパラダイムの言語が同居している印象がある • もう少し調べて、先行技術の長所を自分の研究に取り込んでいきたい
References (1/2) • ToonTalk • http://www.toontalk.com/ • "ToonTalk - An Animated Programming Environment for Children" [Ken Kahn 1996] • AgentSheets • http://agentsheets.com/ • http://www.pfu.fujitsu.com/agentsheets/ • "AgentSheets: End-User Programmable Simulations" [Alexander Repenning et al. 2000]
References (2/2) • Prograph • http://www.pictorius.com/prograph.html • "Using a Pictorial Representation to Combine Dataflow and Object-orientation in a Language Independent Programming Mechanism" [P. T. Cox and T. Pietrzykowski 1988] • VIPR • "Visual Object-Oriented Programming" [Wayne Citrin et al. 1994] • "Programming with Visual Expressions" [W.Citrin et al. 1995]http://www.computer.org/conferences/vl95/html-papers/citrin/citrin.html
References (3/3) • 3D-PP • http://www.iplab.is.tsukuba.ac.jp/research/3dpp/ • "3D-PP: Visual Programming System with Three-Dimensional Representation" [T.Oshiba and J.Tanaka 1999] • 3D-Visulan • http://ryujin.kuis.kyoto-u.ac.jp/ylab/yamakaku/Visulan/ • "ビットマップに基づくビジュアル言語に関する研究" [Kakuya Yamamoto 1999]
情報源 • Frequently-Asked Questions (FAQ) • http://www.faqs.org/faqs/visual-lang/faq/ • Visual Programming Languages: A Survey • http://www.cs.berkeley.edu/~maratb/cs263/paper/paper.html • SFT 5030 (Visual Programming) • http://www.csse.monash.edu.au/~berndm/SFT5030/ • Visual Language Research Bibliography • http://www.cs.orst.edu/~burnett/vpl.html