ユーザーがグラフィカルに記述するプログラミング言語
Scratchをベースにした Snap! ビジュアルプログラミング言語の シンプルなカスタムブロックで、 a から b までの値を持つすべての数値の合計を計算します。
コンピューター科学 において 、 ビジュアルプログラミング言語 ( ビジュアルプログラミングシステム 、 VPL 、または VPS )は、 ダイアグラムプログラミング 、 [1] [2] グラフィカルプログラミング 、または ブロックコーディング とも呼ばれ、 プログラム要素を テキスト で指定するのではなく、 グラフィカルに操作することで プログラムを 作成できる プログラミング言語 です。 [3] VPLでは、視覚的な表現、つまり 構文 の要素または 二次表記法 として使用されるテキストとグラフィックシンボルの空間配置を使用したプログラミングが可能です。たとえば、多くのVPLは「ボックスと矢印」というアイデアに基づいています。ボックスやその他の画面オブジェクトは、関係を表す矢印、線、または円弧で接続されたエンティティとして扱われます。VPLは一般に、 ローコード開発プラットフォーム の基盤となっています。
意味
VPLは、使用される視覚表現の種類と範囲に応じて、アイコンベース言語、フォームベース言語、ダイアグラム言語にさらに分類されます。ビジュアルプログラミング環境は、プログラム構築のための特定の空間文法に従って、ユーザーがインタラクティブに操作できるグラフィカルまたはアイコン要素を提供します。
VPLの一般的な目標は、初心者がプログラミングをより簡単に利用できるようにし、3つの異なるレベルでプログラマーをサポートすることです [4]
構文
VPL は、アイコン/ブロック、フォーム、ダイアグラムを使用して、構文エラーの可能性を減らしたり、完全に排除したりすることで、プログラミング プリミティブの配置を支援し、整形式のプログラムを作成します。
セマンティクス
VPLは、プログラミングプリミティブの意味を明らかにするためのメカニズムを提供する場合があります。これには、プログラミング言語に組み込まれたドキュメント機能を提供するヘルプ機能などが含まれます。
実用論
VPLは、特定の状況におけるプログラムの意味を研究する上で役立ちます。このレベルのサポートにより、ユーザーはVPLで作成した成果物を特定の状態に設定し、プログラムがその状態にどのように反応するかを調べることができます。例えば、 AgentSheets や AgentCubes では、ゲームやシミュレーションを特定の状態に設定することで、プログラムがどのように反応するかを確認できます。Thymioプログラミング言語では、ロボット を 特定の状態に設定することで、ロボットがどのように反応するか、つまりどのセンサーが作動するかを確認できます。
2005年現在、ビジュアルプログラミング手法と データフロープログラミング 言語を統合した開発が進められており、 プログラム状態 への即時アクセス(オンラインデバッグ)や、プログラム自動生成とドキュメント化といった機能が実現されています。また、データフロー言語は 自動並列化も 可能であり、これは将来のプログラミングにおける最大の課題の一つとなる可能性が高いです。 [5]
Microsoft Visual Studio 統合開発環境 (IDE) の Visual Basic、Visual C#、Visual J# などの言語は 、 ビジュアル プログラミング 言語 で はありません。IDE は豊富なユーザーインターフェースで編集やデバッグ作業を豊かにしますが、 アルゴリズムなどの表現はテキスト形式です。同様の考え方は、他のほとんどの RAD ( 高速アプリケーション開発 ) 環境にも当てはまります。これらの環境は通常、 フォームデザイナーを サポートし 、制御フローやデータの依存関係を示す(定義はできない)グラフィカルツールを備えている場合もあります。
ビジュアルプログラミング言語の パーサーは グラフ文法 を使って実装することができる。 [6] [7]
視覚言語の種類
以下のリストは相互に排他的ではありません。ビジュアルプログラミング環境によっては、複数のパラダイムの要素が組み込まれている場合があります。ビジュアルプログラミングパラダイムの選択は、多くの場合、アプリケーションの特定の要件、またはユーザーや開発者の好みによって異なります。
ブロックベースプログラミング
Scratch や Blockly などのプラットフォームによって普及し、教育現場や入門プログラミングで使用されています。
フローチャート
アルゴリズムとプロセスを表すために、ソフトウェア エンジニアリングとシステム設計で広く使用されています。
ドラッグアンドドロップ インターフェース
ユーザー インターフェイスを作成するための GUI 設計ツールや開発環境でよく使用されます。
ノードグラフ
ビジュアル プログラミング言語、ゲーム開発、データフロー システムで頻繁に使用されます。
データフロープログラミング
並列コンピューティング、信号処理、ビジュアル プログラミング環境で人気があります。
象徴的なプログラミング
モバイル アプリ開発に関連することが多いプログラミング タスクを簡素化するために、さまざまなコンテキストで使用されます。
ステートマシン
ゲーム開発、制御システム、反応型システムのモデリングに広く採用されています。
シートベースのプログラミング
スプレッドシート アプリケーションや特定の教育用プログラミング環境で見つかります。
タイムラインベースのプログラミング
マルチメディアやアニメーション ソフトウェアで、時間の経過に伴うイベントの順序付けによく使用されます。
空間プログラミング
特定のインタラクティブ環境および 3D モデリング環境に適用されます。
フォームベースプログラミング
データ入力アプリケーションなど、ユーザー入力とグラフィカル インターフェイスが重要な役割を果たすアプリケーションで使用されます。
汎用ビジュアル言語
PWCT ビジュアルプログラミング言語を使用した リング 仮想マシン (VM) の実装
VPLのほとんどは、 初心者プログラマーを対象とした 教育 または 特定分野向けの用途向けに設計されています。しかし、テキストプログラミング言語( C 、 C++ 、 Java など)
の代わりに、あらゆる ソフトウェア プロジェクトで主流のプログラマーが使用できる 汎用ビジュアルプログラミング言語を提供しようとする研究プロジェクトもいくつかあります。
例えば、Envision [8] [9] や PWCT [10] などの研究プロジェクトは、この目標を達成するように設計されています。VPLはテキストプログラミング言語を用いて開発されるのが一般的です。汎用VPLの開発では、その逆が可能です。例えば、新しいテキストプログラミング言語である コンパイラ と 仮想マシンは 、長年にわたりビジュアルプログラミングを用いて開発・保守されてきました。 [11] このアプローチにより抽象度が高まり、不要な詳細が隠蔽されました。 [12] この抽象度の向上により、開発者はコード構文の詳細に煩わされることなく、プログラム全体の構造と機能に集中できるようになります。 [13] [14]
視覚言語のリスト
以下に、注目すべきビジュアル プログラミング言語の一覧を示します。
教育
ビデオゲーム
多くの現代のビデオゲームは、ビヘイビアツリー を利用しています。これは、原則として 、ノンプレイヤーキャラクター の 行動をモデル化する ために設計されたシンプルなプログラミング言語の集合です 。行動はツリーとしてモデル化され、多くの場合、グラフィカルエディタで編集されます。
システム/シミュレーション
オートメーション
データウェアハウス/ビジネスインテリジェンス
その他
遺産
視覚スタイル
参照
参考文献
^ Bragg, SD; Driskill, CG (1994). 「ダイアグラム・グラフィカル・プログラミング言語とDoD-STD-2167A」. AUTOTESTCON '94 議事録 . pp. 211– 220. doi :10.1109/AUTEST.1994.381508. ISBN 0-7803-1910-9 . S2CID 62509261。
^ Kuhail, MA; Farooq, S.; Hammad, R.; Bahja, M. (2021). 「エンドユーザー開発者のためのビジュアルプログラミングアプローチの特徴づけ:体系的レビュー」. IEEE Access . 9 : 14181–14202 . Bibcode :2021IEEEA...914181K. doi : 10.1109/ACCESS.2021.3051043 .
^ Jost, Beate; Ketterl, Markus; Budde, Reinhard; Leimbach, Thorsten (2014). 「教育用ロボットのためのグラフィカルプログラミング環境:Open Roberta ― 新たな可能性?」 2014 IEEE 国際マルチメディアシンポジウム pp. 381– 386. doi :10.1109/ISM.2014.24. ISBN 978-1-4799-4311-1 . S2CID 8272806。
^ Repenning, Alexander (2017). 「構文を超えて:AgentSheetsにおけるブロックプログラミング20年間の教訓」. Journal of Visual Languages and Sentient Systems . 3 : 68–91 . doi : 10.18293/vlss2017-010 .
^ Johnston, WM; Hanna, JRP; Millar, RJ (2004). 「データフロープログラミング言語の進歩」 (PDF) . ACM Computing Surveys . 36 (1): 1– 34. doi :10.1145/1013208.1013209. S2CID 5257722. 2011年2月16日 閲覧 .
^
^ Zhang, D.-Q. (2001). 「視覚言語の仕様記述のための文脈依存グラフ文法形式主義」. The Computer Journal . 44 (3): 186– 200. doi :10.1093/comjnl/44.3.186. hdl : 10397/17637 . S2CID 14139133.
^ Asenov, D. and Muller, P., 2014年7月. Envision: スムーズなインタラクションを実現する高速かつ柔軟なビジュアルコードエディタ(概要). 2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC) (pp. 9-12). IEEE.
^ 「エンビジョン」。
^ Fayed, MS, Al-Qurishi, M., Alamri, A., Hossain, MA, Al-Daraiseh, AA, 2020. 「PWCT:パーベイシブアプリケーション開発をサポートする新しい汎用ビジュアルプログラミング言語」CCF Transactions on Pervasive Computing and Interaction, 2, pp.164-177.
^ Ayouni, M., 2020.「リングプログラミング入門」(第978巻、第1号、pp.4842-5832)Apress。
^ フェイド、マフムード・サミール、ユセフ・A・アロハリ。「Ring:ビジュアルプログラミングを用いて開発された軽量かつ多用途なクロスプラットフォーム動的プログラミング言語」Electronics 13, no. 23 (2024): 4627。
^ Green, T.; Blackwell, A. 情報アーティファクトの認知的側面:チュートリアル BCS HCIカンファレンス議事録、英国シェフィールド、1998年8月1~4日、第98巻、pp. 1~75
^ Green, TR; Blandford, AE; Church, L.; Roast, CR; Clarke, S. 認知的次元:成果、新たな方向性、そして未解決の疑問 J. Vis. Lang. Comput. 2006, 17, 328–365
^ 「シェーダーエディター — Blenderマニュアル」. docs.blender.org . 2021年1月22日 閲覧 。
^ 「合成 — Blenderマニュアル」. docs.blender.org . 2021年1月22日 閲覧 。
^ 「テクスチャ編集 — Blenderマニュアル」. docs.blender.org . 2021年1月22日 閲覧 。
^ 「リファレンス/リリースノート/2.92/ジオメトリノード - Blender開発者Wiki」. wiki.blender.org . 2021年1月22日 閲覧 。
^ 「ジオメトリノード — Blenderマニュアル」. docs.blender.org . 2021年10月2日 閲覧 。
^ 「Babylon.js ノードマテリアルエディタ」 nme.babylonjs.com . 2021年1月22日 閲覧 。
^ Construct Classic ホームページ
^ SourceForgeのConstruct Classicページ
^ “Yahoo! パイプ”. 2015年1月3日時点のオリジナルよりアーカイブ 。 2015年1月3日 閲覧。
外部リンク