전문 · CHAPTER 02

트릿과 큐브 — 세 갈래의 셈

컴퓨터는 0과 1로 세운 이진 세계에서만 작동한다고 배웠다. 비트(bit)는 두 상태만 표현한다. 그런데 현실의 셈에는 세 번째 자리가 있다 — "참", "거짓", 그리고 "아직 모른다". 이 세 번째 갈래를 프로그래밍 언어의 바닥부터 쌓아 만든 것이 한선씨다.

트릿: 세 값을 가진 한 자리

비트가 한 자리에 0 또는 1을 담듯이, 트릿(trit)은 한 자리에 세 개의 값을 담는다. 한선씨는 균형3진법을 사용한다. 세 값은 음(-1), 영(0), 양(+1)이다.

이를 4상(四象)이라 부르면:

  • T(Trit = +1): 데이터를 나타낸다.
  • O(Omne = 0): 화이트홀 — 가시선(可視線) 위의 명령어 영역. "여기는 뭘 할 곳이다"를 표시한다.
  • A(Anti = -1): 체이닝. 다음 동작의 흐름을 그린다.
  • U(Unit = -0): 블랙홀 — 비가시선(非可視線)의 경계. 어디로 갈지, 얼마나인지 모르는 영역을 품는다. 코드에서는 큐브 사이 띄어쓰기로 나타나지만, 그 본질은 "정해지지 않은 상태", 즉 -0이라는 고유한 값이다.

비유하자면, 균형3진은 양팔저울이다. 추를 왼쪽에 놓으면 음(-1), 오른쪽에 놓으면 양(+1), 양쪽에 같은 무게를 놓으면 영(0)이다. 이 대칭성 덕분에 음수가 자연스럽게 내장되고, 부호를 따로 표현할 필요가 없다. 그리고 저울이 기울지도 않은 채 두 팔이 공중에 떠 있는 상태 — 그것이 U(-0)의 의미다.

큐브: 27트릿의 기본 단위

한선씨의 메모리와 연산의 기본 단위는 큐브다. 3×3×3 = 27개의 트릿이 모여 하나의 큐브를 이룬다.

트릿이 알파벳 한 글자라면, 큐브는 세 글자로 이루어진 낱말이다. crownyc.c v10.3 VM은 이 큐브를 기본 연산 단위로 삼는다. ISA729 — 729개의 가능한 명령 공간 중 867개의 유니크 opcode가 이 큐브 위에서 실행된다. 큐브 내 27개의 셀은 영역별로 역할이 나뉜다. 첫 번째 3×3은 옴(O, 화이트홀)으로 명령을 읽고, 두 번째는 티(T)로 데이터를 담고, 세 번째는 음(U, 블랙홀)으로 다음 상태를 제시한다.

균형3진의 수학적 장점

균형3진에서 자연반올림 나눗셈이 깔끔하게 떨어진다. 한선씨의 나눗셈 규칙은:

나머지의 절댓값이 제수의 절반 이내다 — |r| ≤ |b|/2

예를 들어 100을 2로 나누면 50이다(나머지 0). 99를 2로 나누면 50이다(나머지 -1). 이는 양팔저울의 대칭성에서 자연히 나오는 규칙이다. 가장 가까운 정수값으로 떨어지므로, 양수만 다루는 이진 나눗셈보다 수치 오차를 줄인다.

하지만 함정이 있다. 이진탐색 패턴 (lo + hi) / 2는 올림으로 튀어 무한루프에 빠질 수 있다. NURBS 곡선의 FindSpan 함수 같은 수치 해석 코드에서 이 버그가 실제로 나타났다. 선형 스캔으로 우회해야 한다. 하지만 이것도 넘었다. 고정소수점.한선 라이브러리가 스케일된 정수(스케일 1000 = 소수 3자리)로 루트, 사인, 코사인까지 구현하며, 최대오차를 0.001로 제한했다. 나눗셈 함정도 알았고, 수치 해석도 이미 진행 중이다.

3값 논리: 모름이 일급 시민

2진 논리는 참과 거짓만 안다. Kleene의 3값 논리는 세 번째 상태 "모름(O, 0)"을 인정한다. 한선씨는 이를 언어에 내장했다. 키워드 모르면이 조건문에 등장한다.

의의는 깊다. 데이터가 없을 때 거짓으로 억지 떨어뜨리지 않고, "모름"을 그대로 들고 있다가 다음 연산에 넘길 수 있다. 불완전한 정보 아래서도 언어가 정직하게 작동한다는 뜻이다. 이것이 한선씨 철학의 절정이다 — "화이트홀(가시선의 옴)과 블랙홀(비가시선의 음)의 경계를 존중하며, 모름을 정직하게 비워 두는 언어".

실제로 움직이는 엔진

이것은 종이 이론이 아니다. crownyc.c v10.3은 867개의 유니크 opcode로 27트릿 큐브를 바이트 단위로 실행한다. 3진 산술이 네이티브로 구현되어 있다:

  • 삼진인코딩: 정수를 균형3진 큐브로 변환
  • 삼진덧셈: 큐브 두 개를 더함 (캐리 전파)
  • 삼진곱: 자연반올림을 보존하며 곱셈

210개 등록 서비스 중 71개가 순수한선씨(crownyc.c 기반)로 작동 중이다. TOAU(한선씨 바이너리 포맷)로 컴파일된 8836개의 소스 파일이 실행되고 있다.

물리적 벽을 넘어서

한선씨의 초기 한계로 알려진 것들을 하나씩 돌파하고 있다:

부동소수점 부재에서 고정소수점으로의 전환: 초기에는 정수연산만 지원했다. 하지만 테슬라가 정수 스케일링(스케일 1000 = 소수 3자리)으로 부동소수점 없이 제어계산을 푼 사례를 따라, 고정소수점.한선 라이브러리를 실제로 구현했다. 루트2는 1414(=√2×1000)로 계산되고, 삼각함수는 스케일된 정수로 정확히 0.001 이내의 오차로 작동한다. 나눗셈도 여기서 검증했다.

정수 오버플로: 약 1410억(±1.41×10¹¹) 대에서 래핑된다. 큰 곱셈이 필요하면 먼저 1000으로 축소한 후 연산하는 패턴이 정착했다.

TLS는 외부 연계로: 한선씨 자체는 TLS를 구현하지 않지만, stunnel을 통한 무중단 간접 사용이 안정화되었다. 157개 업스트림이 이 구조로 실행 중이다.

텍스트 스트리밍 확대: 단일 읽기는 16KB, 문자열 최대 64KB에서 출발했지만, WAL(Write-Ahead Logging) 패턴으로 수백MB의 파일 직렬화를 이미 구현했다.

이 경계를 더 넘으려면 연구가 계속된다. 현재의 한선씨는 이 지점이다 — 한계를 아는 것과, 그 한계를 실제로 넘기 시작하는 것은 다르다.

세 갈래의 의미

비트 기반 세계가 틀린 것이 아니다. 한선씨는 이진을 버리는 게 아니라, 흑과 백 사이에 "모름"의 자리를 정직하게 비워 두는 선택을 한 것이다. 트릿이 모여 큐브가 되고, 큐브가 867 opcode VM 위에서 회전하며, 화이트홀(옴, 0)은 가시선 위의 명령을 담고, 블랙홀(음, -0)은 비가시선의 비결정 상태를 담는다. 그 경계를 존중하면서 "모름"을 일급 시민으로 대우하는 언어가 실제로 작동한다. 그리고 그 경계도 천천히 밀어나가고 있다.

이것이 세 갈래의 셈이다.

내 맘 –

독자 게시판 — 함께 읽고 남기는 곳

불러오는 중…

크라우니 책방에 가입하고 무료로 읽기

첫 번째 책은 선물이에요. 가입하면 100맘을 드리니까, 두 번째 책부터 자유롭게 읽을 수 있어요. 친구를 추천하면 50맘도 생겨요.