意味 VPLは、使用される視覚表現の種類と程度に応じて、アイコンベース言語、フォームベース言語、およびダイアグラム言語にさらに分類できます。ビジュアルプログラミング環境は、プログラム構築のための特定の空間文法に従って、ユーザーが対話的に操作できるグラフィカル要素またはアイコン要素を提供します。
VPLの一般的な目標は、プログラミングを初心者にとってより身近なものにし、3つの異なるレベルのプログラマーをサポートすることです[ 4 ]。
構文 VPLは、アイコン/ブロック、フォーム、図表を用いて構文エラーの可能性を低減または排除し、プログラミングのプリミティブを配置して整形式のプログラムを作成するのに役立ちます。 意味論 VPL(仮想プログラミング言語)は、プログラミングの基本要素の意味を明らかにするためのメカニズムを提供する可能性がある。これには、プログラミング言語に組み込まれたドキュメント機能を提供するヘルプ機能などが含まれる。 語用論 VPLは、特定の状況におけるプログラムの意味を研究するのに役立ちます。このレベルのサポートにより、ユーザーはVPLで作成された成果物を特定の状態に設定し、その状態に対するプログラムの反応を調べることができます。例:AgentSheets やAgentCubes では、ゲームやシミュレーションを特定の状態に設定して、プログラムの反応を確認できます。Thymioプログラミング言語では、ロボットを特定の状態に設定して、ロボットの 反応、つまりどのセンサーが作動するかを確認できます。 2005年現在、最新の開発では、ビジュアルプログラミングのアプローチをデータフロープログラミング言語と統合することで、 プログラムの状態 に即座にアクセスしてオンラインデバッグを実現したり、プログラムの自動生成とドキュメント作成を実現したりしようとしている。データフロー言語は自動並列化 も可能にしており、これは将来のプログラミングにおける最大の課題の1つになる可能性が高い。[ 5 ]
Microsoft Visual Studio 統合開発環境(IDE)のVisual Basic、Visual C#、Visual J#などの言語は、ビジュアル プログラミング言語 では ありません。IDEは豊富なユーザーインターフェイスで編集やデバッグ作業を充実させていますが、アルゴリズムなどの表現はテキストベースです。同様の考え方は、フォームデザイナーをサポートし、制御フローやデータ依存関係を図示する(ただし定義するわけではない)グラフィカルツールを備えている場合もある、他のほとんどの高速 アプリケーション 開発環境に も当てはまります。
ビジュアルプログラミング言語のパーサーは、 グラフ文法 を使用して実装できます。[ 6 ] [ 7 ]
視覚言語の種類 以下のリストは相互に排他的なものではなく、一部のビジュアルプログラミング環境は複数のパラダイムの要素を取り入れている場合があります。ビジュアルプログラミングパラダイムの選択は、多くの場合、アプリケーションの具体的な要件、またはユーザーや開発者の好みに左右されます。
ブロックベースのプログラミング ScratchやBlocklyといったプラットフォームによって普及し、教育現場やプログラミング入門で利用されている。 フローチャート アルゴリズムやプロセスを表現するために、ソフトウェアエンジニアリングやシステム設計において広く用いられている。 ドラッグアンドドロップ インターフェースユーザーインターフェースを作成するためのGUIデザインツールや開発環境で一般的に使用されます。 ノードグラフ ビジュアルプログラミング言語、ゲーム開発、データフローシステムなどで頻繁に使用される。 データフロープログラミング 並列コンピューティング、信号処理、ビジュアルプログラミングの環境で広く利用されている。 象徴的な番組 プログラミング作業を簡素化するために様々な場面で使用され、特にモバイルアプリ開発と関連付けられることが多い。 状態機械 ゲーム開発、制御システム、反応型システムのモデリングなどにおいて広く用いられている。 シートベースのプログラミング 表計算ソフトや一部の教育用プログラミング環境で見られます。 タイムラインベースのプログラミング マルチメディアやアニメーションソフトウェアにおいて、時間経過に伴うイベントの順序付けによく用いられる。 空間計画 特定のインタラクティブ環境および3Dモデリング環境において使用されます。 形式ベースのプログラミング データ入力アプリケーションなど、ユーザー入力とグラフィカルインターフェースが重要な役割を果たすアプリケーションで使用されます。
汎用ビジュアル言語 ほとんどのビジュアルプログラミング言語(VPL)は、教育目的 または特定の 分野向けに設計されており、対象ユーザーはプログラミング初心者です。しかし、テキストベースのプログラミング言語( C 、C++ 、Java など)の代わりに、主流のプログラマーがあらゆるソフトウェア プロジェクトで使用できる汎用 ビジュアルプログラミング言語を提供しようとする研究プロジェクトもいくつか存在します。
例えば、PWCTやEnvisionなどの研究プロジェクトは、この目標を達成するために設計されました。[ 8 ] [ 9 ] [ 10 ]
視覚言語のリスト 以下に、注目すべきビジュアルプログラミング言語の一覧を示します。
参考文献 ↑ 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 International Symposium on Multimedia . 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 . 2018-05-16 のオリジナルから アーカイブ (PDF) . 2011-02-16 に取得 . ↑ ↑ Zhang, D.-Q. (2001). "視覚言語の仕様のための文脈依存グラフ文法形式". The Computer Journal . 44 (3): 186– 200. doi : 10.1093/comjnl/44.3.186 . hdl : 10397/17637 . S2CID 14139133 . ↑ Fayed, MS、Al-Qurishi, M.、Alamri, A.、Hossain, MA、Al-Daraiseh, AA、2020年。PWCT:ユビキタスアプリケーション開発をサポートする新しい汎用ビジュアルプログラミング言語。CCF Transactions on Pervasive Computing and Interaction、2(3)、pp.164-177。 ↑ Asenov, D. および Muller, P.、2014 年 7 月。Envision: 流動的なインタラクションを備えた高速で柔軟なビジュアル コード エディタ (概要)。2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC) (pp. 9-12)。IEEE。 ↑ 「Envision」 。 2024年1月27日にオリジナルから アーカイブ済み 。 2024年2月6日 に取得。 ↑ 「シェーダーエディター - Blender マニュアル」 。docs.blender.org 。 2021年1月22日 取得 。 ↑ 「合成 - Blender マニュアル」 。docs.blender.org 。 2021年1月22日 取得 。 ↑ 「テクスチャ編集 - Blender マニュアル」 。docs.blender.org 。 2021年4 月 18日にオリジナルから アーカイブ済み 。 2021年1月22日 に取得。 ↑ "Reference/Release Notes/2.92/Geometry Nodes - Blender Developer Wiki" . wiki.blender.org . 2021年1月29日のオリジナルから アーカイブ済み。 2021年1月22日 取得 。 ↑ 「ジオメトリノード - Blender マニュアル」 。docs.blender.org 。 2021年10 月 2日にオリジナルから アーカイブ済み 。 2021年10月2日 に取得。 ↑ "Babylon.js Node Material Editor" . nme.babylonjs.com . 2021-01-22 に取得. ↑ 「Construct Classic ホームページ」 。 2016年1月24日のオリジナルから アーカイブ済み 。 2016年1月16日 に取得。 ↑ 「SourceForge の Construct Classic ページ」 。2025 年 6 月 25 日にオリジナルから アーカイブされました 。2025 年 8 月 11 日 に取得。 ↑ 「Yahoo! パイプ」 。 2015年1月3日に オリジナル からアーカイブ済み 。 2015年1月3日 に取得。