# Λ-2D: 프로그래밍 언어로서의 드로잉 탐구

> Clean Markdown view of GeekNews topic #17677. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17677](https://news.hada.io/topic?id=17677)
- GeekNews Markdown: [https://news.hada.io/topic/17677.md](https://news.hada.io/topic/17677.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-11-10T09:54:39+09:00
- Updated: 2024-11-10T09:54:39+09:00
- Original source: [media.mit.edu](https://www.media.mit.edu/projects/2d-an-exploration-of-drawing-as-programming-language-featuring-ideas-from-lambda-calculus/overview/)
- Points: 1
- Comments: 1

## Topic Body

### 프로젝트λ-2D: 그림을 프로그래밍 언어로 탐구

- **개요**: 프로젝트λ-2D는 그림을 통해 프로그래밍을 할 수 있는 새로운 언어를 탐구하는 연구임. 람다 계산법의 아이디어를 기반으로 하여, 그림을 통해 코드 작성이 가능하도록 설계됨.

- **비언어적 프로그래밍 언어**: ASCII 기반 언어인 Befunge와 asciidots, 이미지 기반 언어인 Piet 등 비언어적 프로그래밍 언어들이 존재함. 이러한 언어들에 영감을 받아 새로운 언어를 개발함.

- **목표**:
  - 그림으로 프로그램을 작성하는 장점을 활용하여 텍스트 기반 언어로는 불가능한 기능을 포함함.
  - 명령어가 너무 적거나 많지 않도록 조정하여 사용의 용이성을 높임.
  - 시각적으로 매력적인 프로그램을 그릴 수 있도록 하여, 예술 작품처럼 감상할 수 있게 함.

- **람다 계산법**: 람다 계산법은 함수 적용과 함수 정의라는 두 가지 명령어만을 가짐. 각각의 명령어에 적합한 기호를 개발함.

- **데이터 흐름**: 기호를 연결하는 선을 통해 데이터가 흐를 수 있도록 설계함. 추가적인 기호를 도입하여 사용성을 높임.

- **프레임과 GUI 요소**: 캔버스의 특정 영역을 프레임으로 설정하여 데이터를 활용할 수 있도록 함. 슬라이더와 같은 GUI 요소를 추가하여 프로그램을 동적으로 제어할 수 있게 함.

- **편집기 소프트웨어**: 사용자가 디지털로 프로그램을 그릴 수 있는 편집기를 개발함. 5x5 픽셀의 기호를 사용하여 그리드 캔버스에 쉽게 배치할 수 있음.

- **출력 문제 해결**: 순수 함수형 언어의 특성상 "출력" 명령어를 구현하기 어려움. 이를 해결하기 위해 캔버스를 함수에 전달하여 변경된 캔버스를 반환받는 방식으로 재정의함.

- **파서 개발**: λ-2D 프로그램을 자바스크립트로 변환하는 파서를 개발함. 결과물은 복잡하지만 작동함.

- **프로그래밍 경험**: 새로운 언어로 프로그래밍하는 경험은 마인크래프트나 팩토리오와 비슷하지만 연구로서의 가치가 있음.

- **시각화와 소리**: 프로그램 실행을 시각화하고, 실행 중인 프로그램을 음악처럼 들을 수 있는 가능성을 탐구함.

- **향후 계획**: λ-2D를 개선하고, 그림을 통한 계산 시스템에 통합할 수 있는 새로운 프로그래밍 언어를 설계할 계획임.

- **온라인 데모**: λ-2D의 베타 버전을 온라인에서 체험할 수 있으며, 파서와 편집기의 소스 코드는 곧 GitHub에 공개될 예정임.

## Comments



### Comment 31098

- Author: neo
- Created: 2024-11-10T09:54:39+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42085273) 
- BitGrid와 유사하지만 다른 개념에 대해 논의하며, FPGA의 궁극적 단순화로 병렬로 행진하는 비트를 상상함. 이 아이디어는 대중에게 Petaflops를 제공할 수 있는 유용성을 가질 수도 있고 아닐 수도 있음. ASIC에서 DFF가 소모하는 에너지가 중요함.
  - Von Neumann 셀룰러 오토마타와 Nobili 셀룰러 오토마타를 발견했지만, 컴퓨터 과학의 이 부분에서 발견 가능성이 적어 실망스러움.
  - FSAs가 무한한 크기의 셀 공간을 정의하며, 모든 FSAs는 상태 전이 함수나 규칙 집합에서 동일함.

- 자동화 프로젝트 엔지니어 작업이 재미있거나 친숙할 수 있음. 기능 블록 다이어그램은 기능 블록이 와이어로 연결되고, 블록 순서로 작업 순서가 정의됨. 블록은 엔진의 내장 함수와 같거나 복합체일 수 있음.
  - 제어 주기마다 다이어그램이 한 번 실행되며, 입력이 변경되지 않더라도 각 블록은 항상 한 번 실행됨.
  - 양조장부터 석유화학 공장까지의 제어 논리가 이렇게 구현됨.

- 언어가 현재 튜링 완전하지만 사용하기 매우 힘들어 디자인 규칙 #2를 위반함. Lambda Diagrams에서 1단계에서 멈췄음.

- Labview에서 이러한 작업이 수행되었지만, 진행하기 어려움. Max와 같은 소프트웨어에서도 수행되었지만, 금방 복잡해짐.

- Petri Nets에 대한 그래픽 형식 사양에 관심이 있었음. 그래픽 표현이 있다면 엔지니어들이 형식적 방법을 더 많이 사용할 것이라고 생각했지만, Petri Nets를 보여주면 관심을 잃음.
  - University of York에서 PhD를 포기하기 전, RoboChart와 RoboSim을 사용했으며, 네트워크 및 서버 세계에 더 유용하게 적응시키려는 프로젝트를 진행 중임.

- 비언어적 프로그래밍 언어의 영역이 탐구되지 않았다는 의견이 있음.

- 1987년의 "Wireworld"를 떠올리며, 8비트 카운터가 Wireworld에서 구현된 것을 본 적이 있음.

- 프로그래밍 패러다임 측면에서 Funciton과 유사함.
