
잠깐, Forth가 뭐였더라
혹시 Forth라는 프로그래밍 언어 들어보신 적 있나요? 1970년대에 찰스 무어(Charles Moore)가 만든 언어인데요, 지금은 거의 박물관에 있을 법한 고전 언어예요. 그런데 robida.net이라는 곳에서 이 Forth에서 영감을 받아 만든 "웹사이트 작성용 언어"를 공개했고, 개발자들 사이에서 흥미로운 반응을 얻고 있어요.
먼저 Forth가 뭔지부터 짚고 가야 이야기가 통할 것 같아요. 우리가 평소에 쓰는 언어들(JavaScript, Python 등)은 대부분 "중위 표기법"을 써요. 2 + 3 이런 식이죠. 그런데 Forth는 "후위 표기법(postfix)"을 써요. 2 3 + 이렇게 쓰는 거예요. 처음 보면 이상하지만, 이게 스택(stack)이라는 자료구조랑 찰떡궁합이에요. 2를 스택에 넣고, 3을 또 넣고, +가 나오면 위에서 두 개를 꺼내 더한 다음 결과를 다시 스택에 넣는 식이거든요.
이 새 언어는 뭐가 다른가
이번에 공개된 언어는 Forth의 스택 기반 사고방식을 가져와서 웹페이지를 만드는 도구로 재해석했어요. 기존 정적 사이트 생성기들(Jekyll, Hugo, Eleventy 같은 것들)은 보통 마크다운 파일에 YAML 헤더를 붙이고, 템플릿 엔진으로 HTML을 찍어내는 방식이죠. 그런데 이 새 언어는 접근법이 완전히 달라요. "문서를 만든다"가 아니라 "스택을 조작해서 결과적으로 HTML이 나오게 한다"는 발상이거든요.
예를 들어 평범한 정적 사이트 생성기에서 페이지 하나를 만들려면, 마크다운 본문이 있고, 그 위에 "이 페이지의 제목은 뭐고 날짜는 언제다"라는 메타데이터를 적어요. 그러면 빌드 시점에 템플릿이 둘을 합쳐 HTML을 만들어주죠. 그런데 Forth 스타일에서는 단어(word) 하나하나가 함수처럼 동작해요. "안녕하세요" h1 이라고 쓰면 "안녕하세요"를 스택에 올리고, h1이라는 단어가 그걸 꺼내서 <h1>안녕하세요</h1>로 바꿔주는 식인 거예요.
이게 왜 매력적이냐면, 사용자가 직접 "단어(word)"를 정의할 수 있다는 점이에요. 예를 들어 card라는 단어를 만들어서 "위에서 제목, 본문, 이미지 URL 세 개를 꺼낸 다음 카드 모양 HTML을 만들어줘"라고 정의해두면, 그 다음부터는 그냥 "제목" "본문" "이미지" card 한 줄로 카드 컴포넌트를 만들 수 있어요. 리액트의 컴포넌트 개념과 비슷하지만, 훨씬 더 원초적이고 직관적인 방식이에요.
왜 지금 이런 언어가 나왔을까
여기서 한 발 물러서서 큰 흐름을 봐야 해요. 최근 몇 년간 정적 사이트 도구들이 점점 무거워지고 있어요. Next.js만 해도 처음엔 가벼운 React SSR 프레임워크였는데, 지금은 라우터, 미들웨어, 서버 액션 등 별별 게 다 들어가서 학습 곡선이 가팔라졌죠. Astro, Hugo, Eleventy 같은 도구도 처음엔 단순했지만 점점 복잡해지고 있어요.
그래서 일부 개발자들 사이에서 "단순함으로 돌아가자"는 흐름이 생기고 있어요. 그런 맥락에서 Forth 같은 미니멀한 언어를 가져와서 "단어 몇 개로 모든 걸 표현하는" 접근법이 다시 조명받는 거예요. 비슷한 흐름으로는 Pollen이라는 Racket 기반의 출판용 언어, 그리고 hundredrabbits 팀이 만드는 Uxn/Varvara 같은 초미니멀 시스템이 있어요. 모두 "적은 도구로 많은 걸 표현하자"는 정신을 공유해요.
실제 코드는 어떻게 생겼나
예시 코드를 보면 이런 느낌이에요. "Hello" "World" link 라고 쓰면 "Hello"를 화면에 표시하면서 "World"로 가는 링크가 만들어지는 거예요. 사용자가 link라는 단어를 "두 개의 문자열을 꺼내서, 첫 번째는 텍스트로, 두 번째는 href로 사용하는 a 태그를 만들어라"라고 미리 정의해뒀기 때문이죠.
익숙해지면 굉장히 간결한데, 처음엔 헷갈리기 쉬워요. 스택에 뭐가 들어 있는지 머릿속으로 계속 추적해야 하거든요. 함수 호출이 깊어지면 "지금 스택 맨 위에 뭐가 있더라?"를 계속 신경 써야 해요. 그래서 Forth 계열 언어는 "한 줄을 짧게, 단어를 명확하게" 유지하는 규율이 중요해요.
한국 개발자에게 주는 시사점
솔직히 말해서, 이 언어가 당장 실무에 들어올 일은 거의 없을 거예요. 회사 프로젝트에서 "우리 블로그를 Forth 스타일 도구로 만들자"고 제안하면 팀원들이 멈칫할 게 분명하니까요. 하지만 이런 실험적인 언어들을 살펴보는 건 두 가지 의미가 있어요.
첫째, 사고방식의 확장이에요. 우리가 평소에 쓰는 함수 호출 방식(f(g(h(x))))은 사실 여러 방법 중 하나일 뿐이에요. Forth 같은 스택 기반은 x h g f라고 자연스럽게 왼쪽에서 오른쪽으로 흐르는 데이터 파이프라인을 표현해요. 이건 사실 Unix 파이프(cat file | grep foo | wc -l)와 똑같은 발상이에요. 이걸 이해하면 함수형 프로그래밍의 합성(composition) 개념도 더 쉽게 와닿아요.
둘째, DSL(도메인 특화 언어)을 만드는 감각을 기를 수 있어요. 사이드 프로젝트로 직접 작은 언어를 만들어보는 건 컴파일러나 인터프리터를 깊이 이해하는 가장 좋은 방법 중 하나거든요. Forth는 인터프리터 자체가 워낙 단순해서, 며칠이면 자기만의 미니 Forth를 만들어볼 수 있어요. 주말 프로젝트로 강력 추천해요.
마무리
결국 이 프로젝트가 말해주는 건 "오래된 아이디어가 새로운 문제를 푸는 데 의외로 잘 어울릴 수 있다"는 점이에요. 50년 된 Forth의 발상이 2026년의 정적 사이트 도구로 재탄생하는 모습은, 컴퓨터 과학에 "완전히 죽은 아이디어"는 없다는 걸 새삼 느끼게 해요.
여러분이라면 어떤 "잊혀진 옛 기술"을 현대 웹 개발에 다시 끌어오고 싶으신가요? Lisp 매크로? Smalltalk의 메시지 패싱? 한번 상상해보면 재미있을 것 같아요.
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공