일반 · CHAPTER 05

언어로 세계를 짓다 — 210개 서비스

후크: 한국어로 짠 코드가 은행을 돌린다면

프로그래밍 언어는 도구일 뿐이라고 생각하는가. 그렇다면 한선씨의 진짜 모습을 아직 모르는 것이다. 더하기, 반환, 만약, 동안. 모두 한국어다. 한국어 키워드로 짠 코드가 지금 이 순간 실제 서비스를 떠받치고 있다.

은행이 있다. 블록체인이 있다. 메신저가 돈다. DNS 서버도, 거래소도 한선씨로 짰다. 장난감 언어가 아니라 프로덕션 서비스 위에 얹혀 있는 기반이다. 210개의 서비스. 그 중 71개가 한선씨 가상기계(VM) 위에서 라이브로 살아 돈다.

"정말 그런가?" 라는 질문에 이 장이 답한다.

승: 무엇으로 짓는가

한선씨의 기반은 세 겹이다.

첫째, 가상기계(VM). crownyc.c v10.3이 867개의 유니크 연산 코드(opcode)로 27트릿 큐브를 움직인다. 3진 산술이 네이티브로 동작한다. 이것은 하드웨어처럼 단단하다. 해석 층이 아니라 실행 층이다.

둘째, 컴파일러. hanseonc_high는 4380줄, 225개의 내장함수를 품고 있다. 한국어 고수준 코드(.한선 파일)를 받아 TOAU라 불리는 기계어로 변환한다. 더 깊이 들어가면 RPN(역폴란드 표기법) 경로도 있지만, 대부분의 프로그래머는 고수준 문법에서 일한다.

셋째, 표준라이브러리 24개. 문자열, JSON, YAML, 네트워크, 라우터, 인증, 로깅, 검증, 템플릿, 환경, 날짜, 타이머, 프로세스, 버퍼, TLS, 큐, 데이터베이스, 스타일, 하드웨어까지. 무엇을 빼도 서비스를 짤 수 없는 것들이다.

이 세 겹이 갖춰지지 않았다면 210개의 서비스는 없었을 것이다. 한선씨는 처음부터 프로덕션을 염두에 두고 지어졌다.

전: 증거, 살아 도는 서비스들

숫자부터 말하자. 한선씨로 짠 서버 구현은 10종 이상이다. 웹서버, DNS서버, 블록체인, 거래소, 은행, 메신저, 인증 시스템, SSR(server-side rendering), 에이전트, CRNS(크라우니 이름 서비스). 이 중 어느 것도 장난이 아니다.

블록체인을 예로 들어보자. SHA256 해싱이 VM 안에 내장되어 있다. 블록을 연결하려면 이전 블록의 해시를 알아야 한다. 한선씨는 암호화를 자체 손으로 한다. 외부 라이브러리를 끌어와야 하는 다른 언어와 다르다. 이것은 신뢰의 문제다. 코드를 읽을 수 있다. 검증할 수 있다.

은행이 있다. 정수 산술만으로 송금과 정산을 한다. 고정소수점 수학이다. 부동소수점의 오차는 은행에서 용납되지 않는다. 한선씨는 그 점에서 정직하다. 가능한 범위를 명시하고(약 1410억대까지), 그 안에서 정확하게 계산한다.

메신저가 있다. TCP 소켓 함수가 내장되어 있다. 메시지를 보내고, 받고, 큐에 넣고, 빼고. 네트워크 통신이 언어 안에서 직접 손으로 다루어진다.

책 서버도 있다. HTML을 생성하고, 요청을 받고, 응답한다. 서버 객체 지향 프로그래밍(SSR) 패턴이 한선씨로 표현된다.

실제 숫자로 보면 이렇다. 등록된 서비스는 210개. 그 중 한선씨 VM을 사용하는 라이브 서비스는 71개다. Node.js를 사용하는 것은 102개. 한선씨가 아직 적지만, 빠르게 대체되고 있다. 한선씨 소스 파일만 해도 8836개, 컴파일된 TOAU 파일은 449개다.

이것이 "이론"이 아니라 "사실"이라는 증거다.

전: 정직한 경계

하지만 여기서 멈추면 거짓이다. 한선씨는 모든 것을 할 수 있는가? 아니다. 정직하게 말해야 할 한계가 있다.

부동소수점이 없다. 루트2를 계산하면 1이 나온다. 정수만 다룬다. 사인 함수는 정수 라디안만 입력받는다. 이것은 과학 계산이나 3D 그래픽에는 치명적이다. 하지만 금융, 메시징, 블록체인, 데이터 처리에는 오히려 도움이 된다. 오차가 없기 때문이다.

TLS(보안 통신)는 외부에 의존한다. stunnel이라는 별도 도구로 HTTPS를 처리한다. 한선씨 자체에는 TLS 라이브러리가 없다. 이것은 약점이지만, 스택을 단순하게 유지하는 선택이기도 하다.

외부 LLM(인공지능 모델)과 통신하려면 Node.js 사이드카가 필요하다. 한선씨 혼자는 불가능하다. 하지만 크라우니코드 생성엔진이 있어서, 70% 정도는 인공지능 없이도 한선씨 코드를 생성할 수 있다. 수학(98%), 문자열(98%), 네트워크(97%), 알고리즘(91%)은 강하다. 파일 I/O(74%), 자료구조(66%)는 약하다.

텍스트 스트리밍에 제한이 있다. 한 번에 읽을 수 있는 크기가 16KB까지, 문자열 변수는 64KB까지다. 메모리(메모리 전체는 48MB)가 고정되어 있고, 가비지컬렉션이 없다. 이것은 작은 임베디드 기계에서는 장점이지만, 큰 파일을 다루는 서버에서는 제약이다.

전: 대치의 현주소

그렇다면 한선씨는 얼마나 완성되었는가?

이미 순수 TOAU(컴파일된 기계어)로만 돌아가는 서비스는 32%다. 즉시 대치 가능한 것까지 합치면 72~75%. aimed라는 기업용 솔루션처럼 한선씨 주서버 + JavaScript HTTPS 브릿지를 표준화하면 90%에 닿을 수 있다. 이것은 이론이 아니라 이미 작동하는 사례다.

한선씨 코드를 자동 생성하는 엔진의 자립도도 70%다. 나머지 30%는 아직 인공지능이 필요하다. 하지만 강한 분야(수학, 문자열, 네트워크)에서는 자동 생성이 거의 완벽하다. 약한 분야도 매년 나아지고 있다.

결: 언어로 세계를 짓다

210개는 끝이 아니라 시작이다.

한국어 키워드로, 3진 구조로, 네이티브 암호화와 네트워크 함수로 서비스를 짓는다는 것. 이것이 의미하는 바는 기술 이상의 것이다. 컴퓨터의 언어가 더 이상 영어의 독점이 아니라는 뜻이다. 한국의 개발자가 한국어로 생각하듯이 코드를 쓸 수 있다는 뜻이다.

4대 벽(부동소수점·TLS·LLM·텍스트 스트리밍)은 여전히 있다. 하지만 벽을 숨기지 않는 정직함이, 오히려 신뢰를 만든다. 다음 단계는 이미 이름이 붙었다. 정수 스케일로 부동소수점을 표현하고, RPN 정통 컴파일러를 완성하고, 사이드카를 표준화하는 것. 설계된 경로가 있다.

언어로 세계를 짓는다. 71개의 라이브 서비스가 이것을 증명한다. 그리고 다음 장은 독자(혹은 다음 세대 개발자)가 쓴다. 한국어로.

내 맘 –

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

불러오는 중…

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

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