yozm.tech
피드로 돌아가기
news.hada.ioHOTAI 재작성

1+1 풀려다 함수형 언어 만든 개발자의 삽질기

한 개발자가 산술식 이진 트리 과제에서 시작해 C언어로 'graphLang'이라는 함수형 프로그래밍 언어와 그래프 축약 엔진을 구현했습니다. 덧셈, 뺄셈 같은 개별 연산을 함수 적용으로 일반화하고, 변수와 함수를 동일한 값으로 취급하며 클로저와 가비지 컬렉터까지 직접 만들었습니다. 이 과정에서 메모리 최적화와 성능 개선이라는 흥미로운 도전 과제들을 해결해 나갔습니다.

13시간 전·2026.09.30·읽기 2분·neo https://news.hada.io/user/neo

산술식을 이진 트리로 변환하는 단순한 자료구조 과제에서 출발한 한 개발자가 결국 C언어로 'graphLang'이라는 함수형 프로그래밍 언어와 그래프 축약 엔진을 직접 구현해냈습니다. 덧셈과 뺄셈 같은 개별 연산을 '함수 적용(function application)'이라는 개념으로 일반화하고, 변수와 함수를 모두 이름으로 조회할 수 있는 값으로 취급하는 등 함수형 프로그래밍의 핵심 아이디어를 적용했습니다. 이 프로젝트는 클로저(closure), 가비지 컬렉터(garbage collector), 사용자 정의 메모리 할당기, REPL(읽기-평가-출력 루프), FFI(외국 함수 인터페이스)까지 포함하는 방대한 규모로 발전했습니다.

개발자는 초기 '1+1+1' 같은 산술식을 이진 트리로 평가하는 과정에서, 모든 연산자가 'Expr × Expr → Expr' 형태를 가진다는 점에 주목했습니다. 이를 'Func Expr Expr | Val' 형태로 일반화하여 평가기가 함수가 무엇을 하는지보다 어떻게 적용하는지만 알면 되도록 설계했습니다. 특히, 사용자 정의 함수를 C 함수 포인터가 아닌 매개변수와 본문 트리를 가진 '클로저 노드'로 표현하여, 다른 함수에 전달하거나 반환하고 단계적으로 평가할 수 있게 했습니다. 또한, 고정 크기 아레나 할당기의 용량 한계를 '청크 할당기(chunk allocator)'로 해결하고, 사용이 끝난 노드를 회수하기 위해 '표시 후 쓸기(mark-and-sweep) 가비지 컬렉터'를 추가했습니다. 이 GC 덕분에 피보나치 수열(fib(40)) 계산 시 메모리 사용량이 12GB 이상에서 약 1.7MB로 획기적으로 줄었습니다.

이 프로젝트는 단순한 과제 해결을 넘어, 저수준 언어인 C로 고수준 함수형 언어의 핵심 개념들을 직접 구현하며 겪는 실제적인 문제 해결 과정을 보여줍니다. 메모리 관리, 성능 최적화, 복잡한 데이터 구조 설계 등 개발자가 마주할 수 있는 다양한 난관과 이를 극복하는 창의적인 접근 방식은 많은 이들에게 영감을 줍니다. 비록 fib(40) 계산에 6분이 걸리는 등 성능 개선 과제가 남아있지만, 이 경험은 프로그래밍 언어의 내부 동작 원리를 깊이 이해하고 자신만의 도구를 만들어낼 수 있다는 가능성을 제시하며, 향후 꼬리 호출 최적화(TCO), 렉서/파서 구현 등 후속 작업에 대한 기대를 높이고 있습니다.

1인 창업자를 위한 기회 분석
AI 분석 · 참고용이며 검증이 필요합니다
3/10
약한 신호
왜 3점인가

언어 구현 자체는 기술적 난이도가 높고 시장 진입 장벽이 크며, 1인 창업자가 상용화하기에는 매우 어렵습니다.

문제 / 미충족 수요

복잡한 시스템에서 특정 로직을 효율적으로 처리하기 위한 도메인 특화 언어(DSL)나 경량 런타임 환경에 대한 수요가 존재합니다.

한국 시장
국내 있음한국에서도 DSL 및 임베디드 언어 개발 수요는 있으나, 대부분 기존 언어(Python, Lua 등)를 활용하며, C로 직접 구현하는 사례는 드뭅니다.
수익 모델

B2B SaaS 구독, 컨설팅 · 돈 내는 주체: 특정 도메인에서 복잡한 로직을 효율적으로 관리하고 싶어 하는 기업의 개발팀 또는 CTO

1인 실현 가능성
2/5

언어 설계 및 런타임 구현은 고도의 기술적 이해와 많은 시간이 필요하며, 1인이 상용 수준으로 만들기에는 큰 도전입니다.

진입 지점 (Wedge)

특정 산업 분야(예: 금융, 게임 스크립팅)에서 반복되는 복잡한 계산 로직을 위한 초경량 DSL 런타임 개발 및 컨설팅

이번 주 첫 실험

특정 산업 도메인의 반복적인 계산 로직을 10개 이상 수집하고, 이를 간결하게 표현할 수 있는 DSL의 최소 문법을 설계해봅니다.

Original source
이 글은 news.hada.io의 기사를 yozm.tech가 한국어로 재작성한 버전입니다.
원문 보기