본문으로 건너뛰기
피드

코드를 2차원으로 쓰면 뭐가 달라질까

general 약 7분
vote
0
댓글
북마크

이 글은 프로그래밍 언어가 꼭 왼쪽에서 오른쪽으로만 흘러야 하냐는 질문에서 출발해, 2차원 공간을 쓰는 식 표현과 연산자 정의를 실험한다. 닭장 자동문 예시, 양자컴퓨팅의 보조 비트 초기화, 3비트 덧셈기까지 이어지면서 공간적 문법이 사고방식을 어떻게 바꿀 수 있는지 보여준다.

  • 1

    2차원 문법을 쓰면 3항 연산이나 체이닝을 선형 코드보다 직관적으로 표현할 수 있다는 실험이다

  • 2

    andFlip, maj, uma 같은 연산자를 통해 양자 회로의 계산과 되돌리기 구조를 한 표현식 안에 담는다

  • 3

    Befunge, Orca, Racket #2d, Hexagony, 래더 로직, 스프레드시트까지 공간 언어의 계보를 훑는다

  • 이 글의 출발점은 단순함. 왜 코드는 꼭 한 줄에서 왼쪽에서 오른쪽으로만 읽어야 하냐는 질문임

    • a < b 같은 비교식을 세로로 써도 되지 않냐는 장난스러운 아이디어에서 시작함
    • 물론 IDE와 파서가 2차원 배치를 이해해야 하니 현실 구현은 빡세지만, 글은 그 제약을 잠깐 내려놓고 생각 실험을 밀어붙임
  • 첫 번째 동기는 3항 연산을 infix로 예쁘게 쓰기 어렵다는 문제임

    • 파이썬의 x and y and z는 사실 2항 연산을 이어 붙인 형태에 가까움
    • 글쓴이는 andFlip이라는 연산자를 소개함. 두 입력이 모두 참이면 대상 값을 뒤집는 연산임
    • 선형 문법으로 쓰면 어색한데, 2차원 배치를 허용하면 '대상'과 '조건'을 공간적으로 분리할 수 있음
  • 닭장 자동문 예시가 꽤 좋음. 그냥 x and y and z가 아니라 토글이 필요하기 때문임

    • x는 조도계가 황혼이나 새벽 임계값을 넘었는지 여부
    • y는 그 값이 5분 동안 안정적으로 유지됐는지 여부
    • z는 문이 최근에 토글되지 않았는지 여부
    • 구름이 지나가며 x만 잠깐 켜져도 y를 통과하지 못하니 문은 그대로 있음

ℹ️참고

> 여기서 핵심은 조건을 만족하는 동안 문 상태를 계속 따라가게 하는 게 아니라, 조건이 맞는 순간 한 번만 토글하고 유지하는 것임. 그래서 단순한 and보다 andFlip 모델이 더 잘 맞음.

  • 글은 여기서 양자컴퓨팅 쪽으로 방향을 튼다. 임시 변수 t1을 다시 0으로 되돌리는 문제가 나오기 때문임

    • t1을 중간 계산에 쓰면 표현식은 더 이상 순수 함수처럼 보이지 않음
    • 같은 토글 연산을 다시 적용하면 t1을 원래대로 돌릴 수 있다는 점을 이용해, 계산과 정리를 한 2차원 표현식에 넣음
    • 이 구조가 CCCX 게이트와 닮았다고 설명함. 중간값을 만들고 다시 지우는 'uncompute'가 중요하기 때문임
  • 더 어려운 퍼즐은 t1의 초기값을 모를 때임

    • t1이 0이라고 가정하면 같은 연산을 반복해서 지울 수 있음
    • 하지만 t1이 n이라는 알 수 없는 불리언이면 단순 반복으로는 원하는 결과가 깨질 수 있음
    • 글은 같은 계산 블록을 위아래로 배치해 t1을 원래 n으로 되돌리면서 t2에는 올바른 결과를 남기는 식을 제시함
  • 이 부분은 borrowed ancilla 개념과 연결됨

    • borrowed ancilla는 빌려 쓰는 더러운 임시값 같은 것임. 계산에는 쓰지만 끝나면 원래 상태로 돌려줘야 함
    • 글쓴이는 같은 회로를 Qiskit 코드와 회로 다이어그램으로도 보여주며, 2차원 문법이 둘의 중간 지점처럼 읽힌다고 주장함
  • 이어서 majuma라는 연산자를 공간적으로 정의함

    • maj는 세 입력의 majority를 계산하는 게이트로, 양자 ripple-carry adder에서 다음 carry를 만드는 데 쓰임
    • uma는 UnMajority and Add의 줄임말로, maj가 남긴 더러운 중간 상태를 되돌리면서 합을 더하는 역할을 함
    • 결국 3비트 덧셈기를 한 덩어리의 2차원 표현식으로 만들고, b 와이어에는 a + b, c3에는 carry-out을 남기며, c0와 a 와이어는 원래대로 복구한다고 설명함
  • 글 후반은 공간 언어 미니 투어임

    • Befunge는 1993년에 나온 2차원 언어로, 명령 포인터가 격자를 돌아다니며 실행됨
    • Orca는 각 문자가 주변 값을 읽고 아래에 결과를 쓰는 라이브코딩 시퀀서임
    • Racket의 #2dcond는 실제 동작하는 2차원 조건문 확장임
    • Hexagony는 육각형 격자 위에서 실행되고, 래더 로직은 공장 PLC에서 쓰이는 회로식 표현임
    • 스프레드시트도 가장 성공한 공간 언어로 언급됨. 모든 수식이 2차원 좌표에 살고 주변 셀을 읽기 때문임
  • 결론은 언어가 사고를 만든다는 쪽에 가까움

    • 터미널은 명령을 왼쪽에서 오른쪽으로 쓰게 만들었고, 키보드는 ASCII 중심 기호를 자연스럽게 만들었음
    • 그래서 우리가 코드를 수평 텍스트로 생각하는 건 기술 환경의 산물일 수 있다는 주장임

기술 맥락

  • 이 글에서 실제로 선택한 기술적 방향은 '문법을 1차원 토큰 스트림으로만 보지 말자'예요. 일반적인 파서는 텍스트 순서가 곧 의미의 순서인데, 글쓴이는 y축까지 의미 공간으로 쓰면 3항 연산이나 회로식 계산을 더 직접적으로 표현할 수 있다고 봐요.

  • 왜 양자 회로 예시가 계속 나오냐면, 양자 계산에서는 중간값을 만들고 다시 되돌리는 구조가 중요하기 때문이에요. 선형 코드로는 변수 추적이 앞뒤로 튀지만, 회로 다이어그램은 원래 와이어와 게이트의 공간 배치로 이걸 보여주거든요.

  • majuma는 단순히 이상한 연산자 놀이가 아니에요. ripple-carry adder에서 carry를 전파하고 다시 정리하는 역할이 있어서, 계산과 uncompute가 붙어 있는 구조를 보여주기 좋은 예시예요.

  • 현실 언어로 만들려면 파서, 에디터, 커서 이동, diff, 포매터가 전부 달라져야 해요. 그래서 당장 범용 언어가 되긴 어렵지만, 스프레드시트나 래더 로직처럼 특정 도메인에서는 이미 2차원 사고가 훨씬 자연스럽다는 게 글의 포인트예요.

실무 언어 제안이라기보다는 '언어의 모양이 생각의 모양을 바꾼다'는 글에 가깝다. 그래도 양자 회로나 스프레드시트처럼 이미 공간적으로 생각하는 영역을 보면, 코드가 1차원이어야 한다는 믿음이 꽤 터미널 중심 편견일 수도 있다.

댓글

댓글

댓글을 불러오는 중...

general

“직원은 AI로 대체한다면서 CEO는 왜 예외임?”을 찌르는 풍자 사이트

OverpAId는 실제 제품이 아니라, AI 자동화와 임원 보상 논리를 비꼬는 풍자 사이트다. 글은 기업들이 지원 업무, 공급망, 코드 작성은 AI가 대체할 수 있다고 말하면서 정작 추상적 의사결정과 발표를 맡는 경영진은 자동화 논의에서 빠지는 모순을 찌른다. 마지막에는 AI가 결정을 내렸을 때 책임 소재가 사라지는 문제도 같이 던진다.

general

내가 안 짠 코드를 리뷰할 때 진짜 봐야 하는 것들

코드 리뷰는 단순히 diff에 코멘트 다는 일이 아니라, 변경의 의도와 시스템 맥락을 복원하는 별도 기술이라는 글이다. 특히 AI가 빠르게 PR을 쌓아 올리는 상황에서는 핵심 경로, 실패 케이스, 보안, 테스트 증거를 먼저 보고 리뷰 우선순위를 명확히 해야 한다고 말한다.

general

폐쇄된 클라이밋닷거브, 공공 데이터 덕분에 클라이밋닷어스로 되살아나다

미국 정부의 기후 정보 사이트 Climate.gov가 예산 삭감으로 내려간 뒤, 전직 NOAA 관련자들이 Climate.us로 핵심 자료를 복원했어. 15년 넘게 쌓인 기후 지도, 교육 자료, 기후 지표 보고서, 삭제된 제5차 국가기후평가까지 되살린 배경에는 미국 정부 데이터가 법적으로 퍼블릭 도메인이라는 점이 있었어. 다만 운영은 기부에 의존하고 있어, 공공 인프라를 민간이 임시로 떠받치는 불안정한 구조도 같이 드러나.

general

AI 시대에도 인간 관리자가 남는 이유는 결국 ‘책임’ 때문임

생성형 AI가 기업 경영의 많은 판단을 도와도, 인간 관리자의 역할이 사라지지는 않는다는 주장이다. 글은 공감, 검증, 실행, 책임이라는 네 가지 영역에서 AI가 아직 인간 관리자를 대체하기 어렵다고 설명한다.

general

서로 1만 달러 주고받으면 매출 1만 달러? 스타트업 매출 놀이를 비꼰 풍자 사이트

LARP는 창업자끼리 같은 금액을 서로 주고받은 것처럼 장부에 기록해 매출을 만든다는 설정의 풍자 사이트다. 실제 제품, 고객, 현금 이동 없이도 연간 반복 매출(ARR)을 부풀릴 수 있다는 식으로, 스타트업의 매출 인정과 상호 거래 관행을 날카롭게 비꼰다.