시각적 프로그래밍 언어
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
시각적 프로그래밍 언어(VPL)는 아이콘, 폼, 다이어그램 등의 시각적 표현을 사용하여 프로그램을 구성하는 방식이다. VPL은 초보자의 프로그래밍 접근성을 높이고, 구문, 의미론, 실용론 측면에서 프로그래머를 지원하는 것을 목표로 한다. VPL은 블록 기반, 순서도, 드래그 앤 드롭 인터페이스, 노드 그래프 아키텍처, 데이터 흐름 프로그래밍 등 다양한 유형으로 분류되며, 교육, 멀티미디어, 게임 개발, 시스템 시뮬레이션, 자동화, 데이터 웨어하우스 등 다양한 분야에서 활용된다.
더 읽어볼만한 페이지
- 프로그래밍 언어 분류 - 하드웨어 기술 언어
하드웨어 기술 언어(HDL)는 전자 시스템의 구조와 동작을 텍스트 기반으로 표현하는 언어로, 디지털 회로 설계의 핵심 도구로 사용되며, 시뮬레이션 및 디버깅을 통해 설계 검증을 수행한다. - 프로그래밍 언어 분류 - 고급 프로그래밍 언어
고급 프로그래밍 언어는 기계어보다 높은 수준의 추상화를 제공하며, 변수, 객체, 함수 등의 개념을 사용하여 프로그래머가 기계의 세부 사항에서 분리되어 편리하게 프로그래밍할 수 있도록 하는 언어이다. - 시각적 프로그래밍 언어 - 맥스 (소프트웨어)
맥스는 시각적 프로그래밍 기반의 실시간 음향 및 영상 처리 소프트웨어로, MSP와 Jitter 모듈 추가를 통해 기능이 확장되었으며, 음악 제작, 사운드 디자인, 인터랙티브 아트 등 다양한 분야에서 활용되고 Ableton Live와의 통합으로 활용 범위가 넓어졌다. - 시각적 프로그래밍 언어 - 래더 로직
래더 로직은 PLC 프로그래밍에 사용되는 그래픽 기반 언어로, 릴레이 회로를 연상시키는 접점과 코일을 사용하여 AND, OR, NOT 등의 논리 연산을 구현, 자동화 시스템을 제어한다.
시각적 프로그래밍 언어 |
---|
2. 시각적 언어의 정의 및 유형
시각적 프로그래밍 언어(VPL)는 사용되는 시각적 표현의 유형과 정도에 따라 아이콘 기반 언어, 폼 기반 언어, 다이어그램 언어로 분류될 수 있다.
2005년 현재, 시각적 프로그래밍 접근 방식을 데이터 흐름 프로그래밍 언어와 통합하여 프로그램 상태에 즉시 접근하여 온라인 디버깅을 하거나, 자동 프로그램 생성 및 문서를 생성하려는 시도가 이루어지고 있다. 데이터 흐름 언어는 또한 자동 병렬화를 허용하며, 이는 미래의 가장 큰 프로그래밍 과제 중 하나가 될 가능성이 높다.
Microsoft Visual Studio 통합 개발 환경(IDE)의 Visual Basic, Visual C#, Visual J# 등의 언어는 시각적 프로그래밍 언어가 아니다. 알고리즘 등의 표현은 텍스트이며, IDE는 풍부한 사용자 인터페이스로 편집 및 디버깅 활동을 지원한다. 유사한 고려 사항은 일반적으로 폼 디자이너를 지원하고 때로는 제어 흐름과 데이터 종속성을 설명(하지만 정의하지는 않음)하는 그래픽 도구도 있는 대부분의 빠른 애플리케이션 개발 환경에도 적용된다.
시각적 프로그래밍 언어의 파서는 그래프 문법을 사용하여 구현할 수 있다. 시각적 프로그래밍 패러다임의 선택은 응용 프로그램의 특정 요구 사항, 사용자 또는 개발자의 선호도에 따라 달라지는 경우가 많다.
2. 1. 정의
시각적 프로그래밍 언어(VPL)는 아이콘, 폼, 다이어그램과 같은 시각적 표현을 사용하여 프로그램을 구성하는 방식이다. 사용자는 특정 공간 문법에 따라 그래픽 요소를 대화식으로 조작하여 프로그램을 작성한다.[23]VPL의 일반적인 목표는 초보자가 프로그래밍에 더 쉽게 접근할 수 있도록 돕고, 프로그래머에게 다음과 같은 세 가지 측면에서 지원을 제공하는 것이다.[23]
- '''구문:''' VPL은 아이콘/블록, 폼, 다이어그램을 사용하여 구문 오류의 가능성을 줄이거나 제거하고, 제대로 구성된 프로그램을 만들기 위해 프로그래밍 기본 요소를 배열하는 데 도움을 준다.
- '''의미론:''' VPL은 프로그래밍 기본 요소의 의미를 공개하는 몇 가지 메커니즘을 제공할 수 있다. 여기에는 프로그래밍 언어에 내장된 문서 기능을 제공하는 도움말 기능이 포함될 수 있다.
- '''실용론:''' VPL은 특정 상황에서 프로그램이 무엇을 의미하는지 연구하는 것을 지원한다. 예를 들어, AgentSheets나 AgentCubes에서는 프로그램이 어떻게 반응하는지 확인하기 위해 게임이나 시뮬레이션을 특정 상태로 설정할 수 있다. Thymio 프로그래밍 언어를 사용하면 로봇을 특정 상태로 설정하여 어떤 센서가 활성화되는지 등을 확인할 수 있다.[23]
2. 2. 유형
- '''블록 기반 프로그래밍''': 스크래치, 블록리와 같이 블록을 조합하여 프로그램을 작성하는 방식이다. 주로 교육 환경이나 입문용 프로그래밍에 사용된다.[23]
- '''순서도''': 소프트웨어 공학 및 시스템 설계에 널리 사용되며, 알고리즘과 프로세스를 표현하는 데 사용된다.
- '''드래그 앤 드롭 인터페이스''': GUI 디자인 도구 및 개발 환경에서 사용자 인터페이스를 만드는 데 일반적으로 사용된다.
- '''노드 그래프 아키텍처''': 시각적 프로그래밍 언어, 게임 개발 및 데이터 흐름 시스템에서 자주 사용된다.
- '''데이터 흐름 프로그래밍''': 병렬 컴퓨팅, 신호 처리 및 시각적 프로그래밍 환경에서 활용된다.
- '''아이콘 프로그래밍''': 프로그래밍 작업을 단순화하기 위해 다양한 컨텍스트에서 사용되며, 모바일 앱 개발과 관련되는 경우가 많다.
- '''유한 상태 머신''': 게임 개발, 제어 시스템 및 반응형 시스템 모델링에 널리 사용된다.
- '''시트 기반 프로그래밍''': 스프레드시트 응용 프로그램 및 특정 교육용 프로그래밍 환경에서 사용된다.
- '''타임라인 기반 프로그래밍''': 멀티미디어 및 애니메이션 소프트웨어에서 시간 경과에 따른 이벤트 순서를 지정하는 데 사용된다.
- '''공간 프로그래밍''': 특정 인터랙티브 및 3D 모델링 환경에서 사용된다.
- '''폼 기반 프로그래밍''': 사용자 입력 및 그래픽 인터페이스가 중요한 역할을 하는 응용 프로그램(예: 데이터 입력 응용 프로그램)에 사용된다.
3. 시각적 프로그래밍 언어의 장점 및 활용
대부분의 시각적 프로그래밍 언어(VPL)는 교육 또는 도메인 특화 목적으로 만들어졌으며, 주로 프로그래밍 초보자를 대상으로 한다. 그러나 C, C++, Java와 같은 텍스트 프로그래밍 언어 대신 모든 소프트웨어 개발에 사용할 수 있는 범용 시각적 프로그래밍 언어를 개발하려는 연구도 진행되고 있다. Envision[8][9] 및 PWCT[10] 등이 이러한 연구 프로젝트의 예시이다.
일반적으로 VPL은 텍스트 프로그래밍 언어를 기반으로 개발되지만, 범용 VPL이 개발되면 반대로 시각적 프로그래밍을 활용하여 새로운 텍스트 프로그래밍 언어의 컴파일러나 가상 머신을 개발하는 것도 가능하다. 2016년에는 실제로 시각적 프로그래밍을 이용하여 새로운 텍스트 프로그래밍 언어 컴파일러 및 가상 머신이 개발되기도 하였다.[11]
3. 1. 장점
시각적 프로그래밍 언어는 직관적인 인터페이스와 시각적 표현을 통해 초보자도 쉽게 프로그래밍 개념을 이해하고 학습할 수 있도록 돕는다.[1] 또한 구문 오류 가능성을 줄이고, 프로그래밍 기본 요소를 시각적으로 표현하여 프로그램의 구조를 파악하기 쉽게 만든다.[1] 드래그 앤 드롭, 노드 연결 등 간편한 조작 방식으로 빠르게 프로그램을 개발할 수 있어 생산성 향상에 기여한다.[1] 프로그램의 흐름을 시각적으로 파악하기 쉬워 코드 이해 및 수정이 용이하므로, 가독성 및 유지보수성 또한 뛰어나다.[1]3. 2. 활용 분야
시각적 프로그래밍 언어는 교육, 멀티미디어, 게임 개발, 시스템 시뮬레이션, 자동화, 데이터 분석 및 BI 등 다양한 분야에서 활용된다.- 교육: 스크래치, 엔트리 등 교육용 프로그래밍 언어를 통해 컴퓨팅 사고력 및 문제 해결 능력을 키울 수 있다.
- 멀티미디어: 퓨어 데이터, VVVV 등을 활용하여 인터랙티브 미디어 아트, 영상/음향 효과를 제작할 수 있다.
- 게임 개발: 유니티, 언리얼 엔진 등의 게임 엔진에서 제공하는 비주얼 스크립팅 기능을 활용하여 게임 로직 및 이벤트를 구현할 수 있다.
- 시스템 시뮬레이션: 시뮬링크, LabVIEW 등을 활용하여 복잡한 시스템 모델링 및 제어 로직을 설계할 수 있다.
- 자동화: Node-RED, 오토메이터 등을 활용하여 작업 자동화 및 워크플로우를 구축할 수 있다.
- 데이터 분석 및 BI: KNIME, 아파치 NiFi 등을 활용하여 데이터 처리 및 시각화를 수행할 수 있다.
비주얼 프로그래밍과 데이터 플로우 프로그래밍을 융합하려는 시도가 이루어지고 있다. 이러한 융합은 프로그램 상태에 대한 빠른 접근을 가능하게 하고, 디버깅, 자동 프로그램 합성, 문서화를 용이하게 한다. 데이터 플로우 언어는 자동 병렬화가 용이하여 미래에 중요해질 가능성이 있다.[43]
4. 주요 시각적 프로그래밍 언어 목록
다음은 주목할 만한 시각적 프로그래밍 언어 목록이다.
- AgentSheets[23]
- Alice[24] (오픈 소스)
- Analytica[25]
- ASTERIA
- Automator
- Bubble
- CODE (프로그래밍 언어)[26]
- Choregraphe - 알데바란 로보틱스사의 휴머노이드 로봇용 애플리케이션 개발 언어
- DRAKON - 블란의 개발을 위해 설계된 언어
- DYNAMO - 로마 클럽의 "성장의 한계" 보고서에서 지적된 자원 고갈 문제에 대처하는 시스템 역학 시뮬레이션 시스템이 기원인 시뮬레이션 언어 및 그래픽 표기법
- jMax
- KSKP[27] - 대규모 데이터의 처리·분석 환경. 시각적 프로그래밍 언어로 처리를 구축할 수 있다.
- LabVIEW
- 래더 로직 - 프로그래머블 로직 컨트롤러에서 사용되는 언어
- Lava[28]
- Max/MSP
- 마이크로소프트 로보틱스 디벨로퍼 스튜디오[29][30] - 로봇 공학을 위한 프로그래밍 환경. 시각적 데이터 흐름 언어가 포함되어 있다.
- Mindscript[31] (오픈 소스)
- OpenMusic - Common Lisp를 기반으로 한 음악 제작용 시각적 프로그래밍 언어
- 프로그래밍 제미 - 디엔에이가 개발한 프로그래밍 학습 앱
- Prograph CPX
- Pure Data
- Quartz Composer
- SCADE[32]
- Simulink
- Springin'[33](스프링긴)
- Squeak 상에서 구축된 것
- * Etoys
- * Scratch
- Stagecast Creator[34]
- Subtext[35]
- SynthMaker[36]
- ThingLab[37]
- 타일즈 (TILES)
- ToonTalk[38]
- VISCUIT[39](비스킷)
- VisSim[40]
- Visulan[41]
- VSXu[42] - 실시간 음악 시각화 소프트웨어
4. 1. 교육용
스크래치는 MIT 미디어 랩에서 개발한 블록 기반 프로그래밍 언어로, 전 세계적으로 교육 현장에서 널리 활용되고 있다.[23] 엔트리는 한국에서 개발된 교육용 프로그래밍 플랫폼으로, 스크래치와 유사한 블록 기반 인터페이스를 제공하며 한국어 지원이 강점이다. 앱 인벤터는 MIT에서 개발한 안드로이드 앱 개발 도구로, 블록을 조립하여 앱을 만들 수 있다. 코두는 마이크로소프트에서 개발한 게임 개발 도구로, 3D 환경에서 게임을 만들 수 있다.4. 2. 멀티미디어
- Max/MSP는 실시간 음악 및 멀티미디어 응용 프로그램 제작을 위한 환경이다.
- 퓨어 데이터는 Max/MSP와 유사한 기능을 제공하는 오픈 소스 환경이다.
- VVVV는 실시간 비디오 합성 및 인터랙티브 미디어 제작에 특화된 툴킷이다.
- 터치디자이너는 실시간 멀티미디어 콘텐츠 제작을 위한 시각적 프로그래밍 언어이다.
4. 3. 게임 개발
- Unity는 비주얼 스크립팅(Bolt)을 통해 게임 로직 및 이벤트 구현이 가능하다.[18]
- Unreal Engine 4에는 블루프린트(Blueprints)라는 노드 기반 시각적 프로그래밍 언어가 있다.[18]
- CryEngine은 FlowGraph라는 노드 기반 시각적 프로그래밍 언어를 가지고 있다.
4. 4. 시스템 / 시뮬레이션
- Simulink는 매스웍스에서 개발한 동적 시스템 모델링 및 시뮬레이션 도구이다.[32]
- LabVIEW는 내셔널 인스트루먼트에서 개발한 그래픽 기반 프로그래밍 언어이다.
- GNU 라디오는 소프트웨어 정의 라디오 및 신호 처리 시스템 구현을 위한 개발 툴킷이다.[26]
4. 5. 자동화
- 오토메이터: macOS에 내장된 작업 자동화 응용 프로그램이다.[23]
4. 6. 데이터 웨어하우스 / BI
4. 7. 기타
야후! 파이프(Yahoo! Pipes)는 웹 데이터를 처리하기 위한 시각적 데이터 흐름 프로그래밍 시스템이었으나, 현재는 서비스가 종료되었다.[21]5. 한국의 시각적 프로그래밍 현황 및 과제
한국에서는 시각적 프로그래밍 언어가 교육, 게임 개발, 미디어 아트 등 다양한 분야에서 활용되고 있으며, 정부와 민간 차원에서 관련 기술 개발 및 교육 확산 노력이 이루어지고 있다.
참조
[1]
서적
Proceedings of AUTOTESTCON '94
[2]
논문
Characterizing Visual Programming Approaches for End-User Developers: A Systematic Review
[3]
서적
2014 IEEE International Symposium on Multimedia
[4]
논문
Moving Beyond Syntax: Lessons from 20 Years of Blocks Programing in AgentSheets
[5]
논문
Advances in dataflow programming languages
http://www.cs.ucf.ed[...]
2011-02-16
[6]
논문
Defining and parsing visual languages with layered graph grammars
[7]
논문
A context-sensitive graph grammar formalism for the specification of visual languages
[8]
간행물
Envision: A fast and flexible visual code editor with fluid interactions (overview)
IEEE
[9]
웹사이트
Envision
https://www.pm.inf.e[...]
[10]
간행물
PWCT: a novel general-purpose visual programming language in support of pervasive application development
[11]
서적
Beginning Ring programming
Apress
[12]
웹사이트
http://www.computerm[...]
[13]
웹사이트
Shader Editor — Blender Manual
https://docs.blender[...]
2021-01-22
[14]
웹사이트
Compositing — Blender Manual
https://docs.blender[...]
2021-01-22
[15]
웹사이트
Texture Editing — Blender Manual
https://docs.blender[...]
2021-01-22
[16]
웹사이트
Reference/Release Notes/2.92/Geometry Nodes - Blender Developer Wiki
https://wiki.blender[...]
2021-01-22
[17]
웹사이트
Geometry Nodes — Blender Manual
https://docs.blender[...]
2021-10-02
[18]
웹사이트
Babylon.js Node Material Editor
https://nme.babylonj[...]
2021-01-22
[19]
웹사이트
Construct Classic home page
http://www.scirra.co[...]
[20]
웹사이트
Construct Classic page on SourceForge
http://sourceforge.n[...]
[21]
웹사이트
Yahoo! pipes
https://web.archive.[...]
2015-01-03
[22]
문서
英語のグラフ(graph)には、節点と辺からなる「グラフ理論」などのグラフ (データ構造)、一般に言う「ネットワーク」の意味があることに注意
[23]
웹사이트
Programming For Kids | AgentCubes
https://agentsheets.[...]
[24]
웹사이트
Alice – Tell Stories. Build Games. Learn to Program.
https://www.alice.or[...]
[25]
웹사이트
Lumina Decision Systems - Analytics Software - Visual Modeling
https://lumina.com
[26]
웹사이트
CODE Visual Parallel Programming System
https://www.cs.utexa[...]
[27]
웹사이트
KSKP | 「KSKP」は、「誰もが当たり前にデータ分析・活用ができる社会」の実現に向けて、KSKアナリティクスが独自開発したデータ分析プラットフォームです。
https://www.kskp.io
[28]
웹사이트
The Lava Programming Environment
http://lavape.source[...]
[29]
웹사이트
Microsoft Robotics Studio
http://msdn2.microso[...]
[30]
웹사이트
Robotics:Microsoft RoboticsStudioで世界をシミュレートする| Microsoft Docs
https://docs.microso[...]
[31]
웹사이트
Mindscript
http://mindscript.fa[...]
[32]
웹사이트
SCADE
https://www.esterel-[...]
[33]
웹사이트
Springin’(スプリンギン)| 創造的プログラミングアプリ
https://www.springin[...]
[34]
웹사이트
Stagecast Creator
http://www.stagecast[...]
[35]
웹사이트
Subtext programming language
http://subtextual.or[...]
[36]
웹사이트
SynthMaker
http://www.synthmake[...]
[37]
웹사이트
ThingLab
https://wiki.squeak.[...]
[38]
웹사이트
Making programming child's play
https://www.toontalk[...]
[39]
웹사이트
ビスケット viscuit | コンピュータは粘土だ!!
https://www.viscuit.[...]
[40]
웹사이트
The smarter, faster way for model-based embedded development | VisSim
http://www.vissim.co[...]
[41]
웹사이트
3D-Visulanの詳細情報 : Vector ソフトを探す!
https://www.vector.c[...]
[42]
웹사이트
VSXu - music visualizer, audio visualizer, visual programming language (VPL), realtime graphics design platform
https://www.vsxu.com
[43]
논문
Advances in dataflow programming languages
http://www.ittc.ku.e[...]
2007-03-31
[44]
웹사이트
Graphical Programming Environments for Educational Robots: Open Roberta - Yet Another One?
http://ieeexplore.ie[...]
전기 전자 기술자 협회
[45]
웹인용
The Maturity of Visual Programming
https://web.archive.[...]
2019-08-31
[46]
웹사이트
Diagrammatic-graphical programming languages and DoD-STD-2167A
http://ieeexplore.ie[...]
전기 전자 기술자 협회
[47]
웹인용
Yahoo! pipes
https://web.archive.[...]
2015-01-03
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com