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
End User Languages
from SFT5030
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 (1/3)
ToonTalk (2/3)
• 概要
– 子供向け教育用プログラミング言語
– 2001 全米 親が子供に与えたいソフト 金賞
– アニメを多用し、子供が親しみ易く
• 特徴
– 例示によるプログラミング
– 内部的には Prolog 等の論理型言語に近い
– 並列実行
• そもそも自然では同時に物事が進んでいく
ToonTalk (3/3)
• 特徴 (続き)
– 抽象概念の具体化
抽象概念
具体化
computation
街
actor or process
家
• 抽象概念がない子供でも
or object
直感的に理解できる
methods
ロボット
• 具体化されたものを通し
tuples or messages 箱
て抽象概念を学ぶ
or vectors
actor termination
爆弾
channel
transmitter
鳥
channel receiver
巣
program storage
ノート
AgentSheets (1/3)
AgentSheets (2/3)
• 概要
– シミュレーション用に特化した言語
– 教育用としても売り込まれているが、そもそも思
考増幅器としてのコンピュータ利用が目標
• やりたいことがすぐできる
• 特徴
– 縦横に並んだセル上に Agent を配置
– 各 Agent が条件にマッチした動作を実行
– 単独の Java Applet として出力が可能
AgentSheets (3/3)
• 例
ボールというエージェントに
– もしも下が空だったら下に行くように
– さもなくば自分の色を赤くするように
と設定する
→ボール下に落ち、
床で赤くなるという
プログラムができる
Prograph (1/8)
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
Prograph (6/8)
greetings メソッドの
2番目のケース
control annotation
エラーメッセージの出力
Prograph (7/8)
• 3種類のループ処理
– リストをそのまま展開し
て並列に処理
– 条件成立まで method
の出力を入力に代入
– method 内で自身の再
起呼び出し
Prograph (8/8)
• object と attribute
– 一番左の引数に
instance を渡していく
VIPR (1/3)
• オブジェクト指向の汎用 VPL
• アイコンを使わず、輪を使う
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/htmlpapers/citrin/citrin.html
References (3/3)
• 3D-PP
– http://www.iplab.is.tsukuba.ac.jp/research/3dpp/
– "3D-PP: Visual Programming System with ThreeDimensional 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/pa
per.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
Descargar

Visual Programming Language