처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.05.01 72

함수형 프로그래머가 Zig를 봐야 하는 이유: 시스템 언어의 새로운 가능성

Hacker News 원문 보기

왜 갑자기 함수형 프로그래머가 Zig를?

함수형 프로그래밍이라고 하면 보통 Haskell, OCaml, Scala 같은 언어가 떠오르잖아요. 반면에 Zig는 C를 대체하려고 만든 저수준 시스템 언어라서 "이건 우리 동네 얘기가 아닌데?"라고 느낄 수도 있어요. 그런데 최근 한 함수형 프로그래머가 "Zig를 한 번 진지하게 들여다봐야 한다"고 주장하는 글이 올라오면서 흥미로운 논의가 시작됐습니다.

핵심 주장은 이거예요. Zig가 비록 함수형 언어는 아니지만, 함수형 프로그래머가 평소에 중요하게 여기는 가치들 — 명시성, 단순함, 추론 가능성 — 을 시스템 프로그래밍 영역에서 매우 잘 구현해 놓았다는 겁니다. 그러니까 Haskell이나 OCaml로 짜다가 "여긴 진짜 빠르게 돌려야 해" 싶은 부분이 있을 때, Rust 같은 복잡한 옵션 말고 Zig가 좋은 짝꿍이 될 수 있다는 얘기죠.

Zig의 어떤 점이 함수형 정신과 통할까

첫째는 컴파일 타임 실행(comptime) 이에요. 이게 뭐냐면, 컴파일하는 그 순간에 일반적인 Zig 코드를 그대로 실행해서 타입을 만들거나 값을 계산할 수 있는 기능이에요. 별도의 매크로 언어를 따로 배울 필요가 없거든요. 그냥 평소 짜던 함수에 comptime을 붙이면 컴파일 타임에 돌아가는 거예요. 이게 함수형 진영에서 사랑받는 "제너릭은 결국 타입을 다루는 함수다"라는 개념이랑 정확히 맞닿아 있어요. Haskell의 타입 클래스나 OCaml의 펑터(functor)를 떠올리면 비슷한 느낌이죠.

둘째는 숨김 없는 제어 흐름입니다. Zig는 "보이는 게 전부다(no hidden control flow)"를 원칙으로 삼아요. 연산자 오버로딩도 없고, 예외도 없고, RAII로 몰래 호출되는 소멸자도 없어요. 함수형 프로그래머들이 모나드를 사랑하는 이유 중 하나가 "부수효과(side effect)를 타입으로 명시적으로 드러내자"는 거잖아요. Zig의 철학이 그것과 묘하게 닮아있어요. 메모리 할당 같은 부수효과가 있으면 반드시 함수 인자로 allocator를 넘기게 되어 있어서, 누가 메모리를 잡고 푸는지가 시그니처만 봐도 명확해요.

셋째는 에러 처리 방식이에요. Zig는 에러를 값으로 다루는데, 이게 Haskell의 Either나 Rust의 Result와 비슷해요. !T 표기를 쓰면 "성공하면 T이고 실패하면 에러"라는 뜻이죠. 함수형 프로그래머한테는 너무 익숙한 패턴이에요.

그럼 Rust랑은 뭐가 다른가

많은 분이 "그거 Rust로 다 되는 거 아니야?"라고 물을 거예요. 글쓴이의 답은 "Rust는 강력하지만 함수형의 어떤 측면을 받아들이는 대신 무거운 타입 시스템과 빌림 검사(borrow checker)라는 큰 짐을 같이 짊어진다"는 거예요. Rust로 코드를 짜다 보면 "이 라이프타임을 어떻게 만족시키지?" 하는 고민에 시간을 한참 쓰게 되거든요. 반면 Zig는 메모리 안전성에 대한 보장은 Rust보다 약하지만, 언어 자체가 단순해서 머리에 다 들어와요. 표준이 작아서 한 사람이 전체를 이해할 수 있는 수준이에요.

또 함수형에서 자주 쓰는 "불변성을 기본으로"의 정신도 Zig에 살아 있어요. 변수는 기본이 const이고, 바꾸려면 var라고 명시해야 해요. 이게 별것 아닌 것 같지만 코드를 읽을 때 뇌의 부담을 확 줄여줍니다.

업계 흐름에서 보면

시스템 언어 진영은 지금 재밌는 시기예요. C는 여전히 강력하지만 안전성 이슈가 계속 제기되고, Rust는 사실상 차세대 시스템 언어 자리를 차지했지만 학습 곡선이 가팔라요. 그 사이에 Zig, Odin, Hare 같은 "C의 정신적 후계자"들이 등장하고 있어요. Zig는 그중에서도 "단순함"을 가장 강하게 밀고 있는 언어이고, Bun 런타임이 Zig로 만들어지면서 인지도가 많이 올라갔죠.

함수형 진영에서 보면, OCaml이 최근 멀티코어 지원을 추가하면서 시스템 프로그래밍 쪽으로 욕심을 내고 있고, Haskell도 GHC 백엔드 개선에 신경을 쓰고 있어요. 그런데 "그냥 빠른 코드를 직접 짜고 싶다"는 욕구를 채워주기엔 한계가 있거든요. 이 빈자리에 Zig가 들어올 수 있다는 게 글쓴이의 관점이에요.

한국 개발자한테는 어떤 의미일까

실무에서 당장 Zig로 다 갈아엎자는 얘기는 아니에요. 다만 게임 엔진, 임베디드, 고성능 백엔드 일부 모듈, FFI(외부 함수 인터페이스)가 필요한 라이브러리 작성 같은 영역에서 Zig는 진지하게 검토할 만해요. 특히 기존 Python이나 Node 생태계에 네이티브 모듈을 끼워 넣을 때 Rust보다 입문 장벽이 낮습니다.

그리고 Haskell이나 Scala, F#을 좋아하는 분이라면 Zig를 배우는 게 사고 회로를 넓히는 좋은 운동이 돼요. "부수효과를 명시적으로 다룬다"는 정신이 어떻게 저수준 언어에서 구현될 수 있는지 보면 함수형 개념이 더 입체적으로 와닿거든요.

마무리

결국 이 글의 메시지는 단순해요. 언어의 패러다임 라벨에 갇히지 말고, 그 언어가 어떤 사고방식을 가능하게 하는지를 보자는 거죠. Zig는 함수형 언어가 아니지만 함수형 프로그래머가 좋아할 만한 가치들을 시스템 영역에서 잘 살려두고 있어요.

여러분은 어떻게 생각하세요? 시스템 언어 하나 더 배워야 한다면 Rust와 Zig 중에 어느 쪽에 끌리시나요? 그리고 "명시성"이라는 가치를 실무 코드에서 얼마나 중요하게 보시는지도 궁금해요.


🔗 출처: Hacker News

이 뉴스가 유용했나요?

이 기술을 직접 배워보세요

파이썬으로 자동화를 시작해보세요

파이썬 기초부터 자동화까지 실전 강의.

파이썬 강의 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.