visual programming language
Embed Size (px)
DESCRIPTION
Visual Programming Language. 米澤研究室 清木 昌. Visual Programming Language (VPL) とは. 定義があいまい comp.lang.visual の FAQ 2 次元以上の形式でプログラミングするもの (Myers) Visual な表現を用いるもの (Burnett) グラフィック・描画・アニメーション・アイコン etc. などなど 呼称も VP ・ VL ・ VPL …. Visual Computing. Visual Programming. Computer - PowerPoint PPT PresentationTRANSCRIPT

Visual Visual Programming Programming
LanguageLanguage米澤研究室米澤研究室
清木 昌清木 昌

Visual Programming Visual Programming Language (VPL) Language (VPL) とはとは
• 定義があいまい• comp.lang.visual の FAQ
– 2 次元以上の形式でプログラミングするもの(Myers)
– Visual な表現を用いるもの (Burnett)• グラフィック・描画・アニメーション・アイコン
etc.
– などなど• 呼称も VP ・ VL ・ VPL …

Visual ComputingVisual Computing
AlgorithmAnimation
User Interfaces
Visual Programming
End User Languages
ComputerGraphics
ScientificVisualization
from SFT5030

VPLVPL の種類の種類言語の様式言語の様式
• 純粋な visual language– Prograph や VIPR など– アイコンや矢印などの操作のみで開発– プログラムからデバッグまで同じ環境
• text と visual の複合システム– グラフィカルな入力をテキストの高等言語に変
換– テキスト言語のプログラミングを補助
例) テキストで書いたデータ構造に例示によって操作を定義し、それをテキストレベルで修正し・・・

VPLVPL の種類の種類言語の目的 言語の目的 (1/2)(1/2)
• 汎用– Prograph など– 従来の言語の代替物
• 言語表現にとらわれない本質的な開発ができる(?)
• End User Programming– AgentSheets など– ユーザが情報をわかりやすい形で整形・可視化
• 専門のスキルのないユーザでも直感的に構築できる• 可視化が自然な形で表せる

VPLVPL の種類の種類言語の目的 言語の目的 (2/2)(2/2)
• シミュレーション– AgentSheets など– 法則を入力したらすぐに結果を得られる
• 教育– ToonTalk など– インタラクティブ性・楽しい視覚効果
• 芸術・娯楽– 自己言及性・閉じた世界が美しい・・・?

VPLVPL の種類の種類プログラミングパラダイムプログラミングパラダイム
(1/2)(1/2)• 例示によるプログラミング
– Pygmalion, ToonTalk など– 実際にオブジェクトを操作することにより、各
パーツのプログラミングを行う• Dataflow モデル
– Prograph など– 用意したネットワーク上をデータが流れていく– 演算に必要なデータが揃うとノードが発火する– 素朴なレベルではデータの流れが把握しやすい

VPLVPL の種類の種類プログラミングパラダイムプログラミングパラダイム
(2/2)(2/2)• 制約ベース
– 論理型言語を基礎としたもの• PP など
– 条件判定→ルール適用• AgentSheets, 3D-Visulan など
• Form ベース– Forms/3 など– 表計算ソフトの A8 = Sum(A1:A7) のような
形でセル間の関係を記述する

ToonTalk (1/3)ToonTalk (1/3)

ToonTalk (2/3)ToonTalk (2/3)• 概要
– 子供向け教育用プログラミング言語– 2001 全米 親が子供に与えたいソフト 金賞– アニメを多用し、子供が親しみ易く
• 特徴– 例示によるプログラミング– 内部的には Prolog 等の論理型言語に近い– 並列実行
• そもそも自然では同時に物事が進んでいく

ToonTalk (3/3)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 (1/3)

AgentSheets (2/3)AgentSheets (2/3)• 概要
– シミュレーション用に特化した言語– 教育用としても売り込まれているが、そもそ
も思考増幅器としてのコンピュータ利用が目標• やりたいことがすぐできる
• 特徴– 縦横に並んだセル上に Agent を配置– 各 Agent が条件にマッチした動作を実行– 単独の Java Applet として出力が可能

AgentSheets (3/3)AgentSheets (3/3)• 例
ボールというエージェントに– もしも下が空だったら下に行くように– さもなくば自分の色を赤くするようにと設定する
→ ボール下に落ち、 床で赤くなるという プログラムができる

Prograph (1/8)Prograph (1/8)

Prograph (2/8)Prograph (2/8)• 概要
– 成功した商用の汎用 VPL– Professional 向け– 大学での VPL の教材として広く使用されて
いる• 特徴
– Dataflow モデル– オブジェクト指向言語

Prograph (3/8)Prograph (3/8)• Dataflow モデル
– Input Bar から Datalink を通って Output Bar まで、上から下へとデータが流れて行く
– 各 Operation は Terminal にデータが揃ったら実行

Prograph (4/8)Prograph (4/8)• 例1: Hello World!
– 文字列が組み込み演算子 show に渡される
– 基本型は 真偽値・整数・実数・文字列・リスト・ null ・未定義 etc.
– データの依存関係により実行順序が決定

Prograph (5/8)Prograph (5/8)• 例2
– 組み込み演算子 ask で名前を入力
– 同 "join" で文字列を結合
– 名前が空だったらエラー• 定数 NULL との比較
– 比較は優先して実行• 一致したら次のケースへ
– control annotation で示されている
control annotation

Prograph (6/8)Prograph (6/8)greetings メソッドの 2 番目のケース
control annotation
エラーメッセージの出力

Prograph (7/8)Prograph (7/8)• 3 種類のループ処理
– リストをそのまま展開して並列に処理
– 条件成立まで method の出力を入力に代入
– method 内で自身の再起呼び出し

Prograph (8/8)Prograph (8/8)• object と attribute
– 一番左の引数に instance を渡していく

VIPR (1/3)VIPR (1/3)• オブジェクト指向の汎用 VPL• アイコンを使わず、輪を使う

VIPR (2/3)VIPR (2/3)• 実行制御は輪の置き換えで行う
– 矢印の元の輪を先の輪に置き換える– 条件分岐・ループ・関数呼び出し

VIPR (3/3)VIPR (3/3)• 関数を呼び出したときに、輪の内周についた輪同
士も代入する• 関数呼び出し時には必ず戻り先を関数に渡す• 引数も同様• 戻り先の代入
時に戻り値も代入される

VEX (1/3)VEX (1/3)• Visual Expression (VEX)• VIPR のコンポーネント• λ 計算のビジュアル表現
– 輪の代入という操作• λ 計算の本質の直感的理解が可能
– 字面では複雑でも、絵で見れば簡単• α変換・ β簡約・ η簡約• 自由変数と束縛変数
• λ 計算の講義に最適(?)

VEX (2/3)VEX (2/3)Y コンビネータの VEX表現

VEX (3/3)VEX (3/3)• 線でつながったものは同時に代入• 束縛変数はどこかの輪の内側に張り付いており
自由変数は一番外に出ている

3D-PP3D-PP• 概要
– PP=Pictorial Programming
– 筑波大の田中研究室– 並列論理型言語 GHC を
VPL にしたもの– 3 次元物体の直接操作の方法から研究
– 実行環境は未公開な模様

3D-Visulan3D-Visulan• 3D積み木• 単純な置換規則• 教育用~娯楽用
– 実用性は低い• シンプルなルールで
いかに複雑なことができるか

近年の 近年の VPL VPL の方向性の方向性• 3D 化
–安価な 3D環境の普及– 多くの情報を小さなスクリーンで提供
可能• ネットワーク対応
– End User 同士の相互作用を狙う• 大きな新パラダイムの誕生は無い

まとめまとめ• 一口に VPL といっても幅は広い•色物というイメージがあったが、テキストベースの言語より多様なパラダイムの言語が同居している印象がある
• もう少し調べて、先行技術の長所を自分の研究に取り込んでいきたい

References (1/2)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)References (2/2)• Prograph
– http://www.pictorius.com/prograph.html– "Using a Pictorial Representation to Combine Dataflow and Objec
t-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)References (3/3)• 3D-PP
– http://www.iplab.is.tsukuba.ac.jp/research/3dpp/– "3D-PP: Visual Programming System with Three-Dimen
sional 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/p
aper.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