1P by neo 5일전 | favorite | 댓글 1개

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

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

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

  • 목표:

    • 그림으로 프로그램을 작성하는 장점을 활용하여 텍스트 기반 언어로는 불가능한 기능을 포함함.
    • 명령어가 너무 적거나 많지 않도록 조정하여 사용의 용이성을 높임.
    • 시각적으로 매력적인 프로그램을 그릴 수 있도록 하여, 예술 작품처럼 감상할 수 있게 함.
  • 람다 계산법: 람다 계산법은 함수 적용과 함수 정의라는 두 가지 명령어만을 가짐. 각각의 명령어에 적합한 기호를 개발함.

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

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

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

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

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

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

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

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

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

Hacker News 의견
  • 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과 유사함.