Blockly

Blockly는 Google을 중심으로 개발되는 오픈 소스 블록 기반 시각적 프로그래밍 라이브러리다. 사용자는 텍스트 문법을 직접 입력하는 대신 기능과 자료를 나타내는 그래픽 블록을 작업 공간에 배치하고 연결하여 프로그램을 구성할 수 있다. Blockly 자체는 특정한 독립 실행형 언어...

분류블록 기반 시각적 프로그래밍 라이브러리
개발Google 및 오픈 소스 공동체
주요 구현 언어JavaScript, TypeScript
프로그램 표현연결 가능한 그래픽 블록
실행 방식대상 언어 소스 코드 생성
사용자 인터페이스workspace, toolbox, flyout
확장성사용자 정의 블록 및 코드 생성기
제공 코드 생성JavaScript, Python, Lua 등
주요 분야프로그래밍 교육, 웹 앱 편집기
배포 형태웹 기반 라이브러리
소스 공개오픈 소스
실행 호스트웹 브라우저와 호스트 애플리케이션
공식 문서Google Blockly

Blockly는 Google을 중심으로 개발되는 오픈 소스 블록 기반 시각적 프로그래밍 라이브러리다. 사용자는 텍스트 문법을 직접 입력하는 대신 기능과 자료를 나타내는 그래픽 블록을 작업 공간에 배치하고 연결하여 프로그램을 구성할 수 있다. Blockly 자체는 특정한 독립 실행형 언어 또는 완성된 IDE 하나를 뜻하지 않으며, 다른 웹 애플리케이션에 시각적 편집과 코드 생성 기능을 삽입하기 위한 도구로 설계되었다.[1]

Blockly의 화면에는 블록을 배치하는 workspace, 선택 가능한 블록을 정리하는 toolbox, 블록 목록을 표시하는 flyout이 있다. 블록은 명령문 또는 값·표현식의 역할에 따라 연결할 수 있는 단자를 가지며, 호스트 애플리케이션은 블록의 종류와 색상, 입력 필드와 연결 규칙을 원하는 작업에 맞게 정의할 수 있다. 사용자가 작성한 그래프는 단순한 그림이 아니라 코드 생성이나 다른 데이터 처리로 변환할 수 있는 구조화된 프로그램 표현이다.

Blockly의 실행 흐름은 일반적으로 블록을 직접 CPU에서 실행하는 방식이 아니라 작업 공간의 블록 그래프를 순회해 JavaScript·Python·Lua·Dart·PHP 같은 대상 언어의 소스 코드로 바꾸는 것이다. 각 블록의 생성기는 연산자 우선순위와 문장 결합, 들여쓰기 등 대상 언어의 규칙을 고려해 출력을 구성한다. 개발자는 별도의 생성기를 작성해 다른 언어 또는 자체적인 도메인 특화 언어에도 연결할 수 있다.[2]

Blockly는 프로그래밍 입문 교육뿐 아니라 로봇 제어, 간단한 자동화, 데이터 흐름 구성과 웹 기반 편집기에서 사용된다. 텍스트의 문법 오류 대신 연결할 수 있는 블록의 형태로 일부 구조적 제약을 표현할 수 있는 것이 장점이며, Scratch 같은 완성된 교육용 개발 환경과는 구현·제품의 범위가 다르다. 시각적 편집과 코드 생성 라이브러리라는 정체성은 언어 자체보다 프로그래밍 환경을 제작하는 기술에 가깝다.

역사

Google의 개발

오픈 소스 보급

개념

시각적 블록

프로그램 구조

사용자 인터페이스

workspace

toolbox

블록 연결

블록 시스템

명령 블록

값 블록

사용자 정의 블록

코드 생성

JavaScript

Python과 기타 언어

생성기 확장

프로그램 저장과 직렬화

호스트 애플리케이션 통합

Scratch 및 다른 시각적 언어와의 관계

활용 분야

관련 문서

  1. Google Blockly — Visual glossary ↩
  2. Blockly — Code Generation ↩