뉴스레터 전문 보기,
https://maily.so/kkumaeunsonyeon/posts/e9o0897qz8w
"아직은 작은 물결이지만, 메이저가 될 내일을 꿈꿉니다"
흔히 프로그래밍 언어는 '이미 만들어진 도구'라고 생각하기 쉽습니다. 하지만 여기 "모든 언어는 결국 사람이 만든 것인데, 나라고 못 만들까?" 라는 당찬 물음에서 시작해 자신만의 언어를 구축해 나가는 개발자가 있습니다.
이번 긱프로덕트 메이커 인터뷰에서는 Wave의 탄생 비화부터 LLVM 백엔드를 구축하며 겪었던 기술적 난재, 그리고 운영체제와 브라우저를 Wave로 직접 만들겠다는 거대한 포부까지 가감 없이 담았습니다.
“Wave는 완성된 언어라기보다 함께 만들어가는 언어입니다. 누군가 이 언어를 발견하고 '이걸로 뭔가 만들어보고 싶다'고 느끼는 순간, 그분이 바로 Wave가 기다리던 주인공입니다”
시스템 프로그래밍의 미래를 직접 설계하고 싶은 개발자라면, LunaStev님이 던지는 이 신선한 파도에 함께 몸을 실어보시겠습니까?
Q. 루나님 안녕하세요. 먼저 인터뷰에 응해주셔서 감사합니다. 본인 소개 부탁드려요.
A. 안녕하세요. 2006년생 개발자 LunaStev입니다. 보통은 루나라고 불리고 있고, 본명은 전영재입니다.
Q. 현재 Wave는 어떤 형태로 몇 명이서 개발을 하고 있나요?
A. Wave는 MPL-2.0 라이선스를 사용하는 오픈 소스 프로젝트로 개발되고 있으며, 현재는 저 혼자 메인 개발을 담당하고 있습니다. 다만 오픈 소스 프로젝트인 만큼, 구조적으로는 메인테이너인 저와 기여자들로 이루어진 형태라고 볼 수 있고, 앞으로도 외부 기여를 적극적으로 환영하고 있습니다.
Q. Wave를 개발할 수 밖에 없었던 배경이 있었나요?
A. 처음에는 단순한 호기심에서 시작했습니다. 프로그래밍을 하다 보니 “이 언어는 어떻게, 누가 만들었을까?”라는 생각이 들었고, 그 계기로 여러 프로그래밍 언어의 역사와 탄생 배경을 찾아보게 되었습니다. 그 과정에서 모든 언어가 결국 사람이 직접 설계하고 만들어왔다는 사실이 인상 깊었고, 자연스럽게 “그렇다면 나도 직접 만들어볼 수 있지 않을까?”라는 생각으로 이어졌습니다.
Q. Wave를 개발하기 전 주로 사용했던 프로그래밍 언어로 인해 겪고 있던 핵심 문제점이 있었나요?
A. 프로젝트 성격에 따라 여러 언어를 사용해왔지만, 주로 사용했던 언어는 C와 Rust였습니다. C는 문법이 단순하고 강력한 언어이지만, 그 단순함의 대가로 많은 기능을 직접 구현해야 하고, 특히 메모리 제어에서 포인터가 지나치게 부담스럽다는 점이 문제로 느껴졌습니다. 반면 Rust는 C보다 훨씬 안전한 언어이지만, 언어 자체가 복잡하고 소유권 개념으로 인해 코드가 과도하게 길어지는 경우가 많다고 느꼈습니다. 이 두 언어를 사용하며 느낀 장단점을 바탕으로, C의 간결함을 유지하면서도 Rust의 일부 개념을 선택적으로 가져온 언어를 만들고 싶다는 생각이 들었고, 그것이 Wave의 출발점이 되었습니다.
Q. Wave란 프로그래밍 언어의 철학은 어떤것이 있을까요?
A. Wave 공식 문서에는 “강력한 고수준 추상화와 정밀한 저수준 제어의 완벽한 공존”이라고 다소 거창하게 표현되어 있습니다. 하지만 개인적으로 Wave의 철학을 한 문장으로 표현하자면, C 언어의 현대화라고 생각합니다. 기존의 저수준 언어가 가진 강점은 유지하되, 현대적인 개발 환경에서 요구되는 구조와 명확성을 갖춘 언어를 만들고자 했습니다.
Q. Wave 언어의 문법 타입과 시스템 개발 방식에 대한 평가를 해주세요
A. Wave는 타입 추론을 사용하지 않고, 모든 타입을 명시적으로 작성하도록 설계된 언어입니다. 문법은 단순한 C 계열을 기반으로 하고 있으며, 편의성보다는 예측 가능성과 안정성을 우선시합니다. 불편하게 느껴질 수는 있지만, 코드가 어떤 방식으로 동작하는지 개발자가 명확하게 인지할 수 있고, 그 점이 시스템 개발에서는 중요한 장점이라고 생각합니다.
Q. Wave 언어는 어떤 유형의 개발자들을 대상으로 설계하셨나요?
A. Wave는 특정 유형의 개발자만을 명확히 타깃으로 삼아 설계된 언어는 아닙니다. 오히려 누군가가 이 언어를 발견하고, “이걸로 뭔가 만들어보고 싶다”고 느끼는 순간부터 그 사람이 Wave의 대상이 된다고 생각합니다. Zig나 Bun처럼, 처음부터 거대한 사용자층을 상정하기보다는 필요와 문제의식에서 출발해 자연스럽게 사용자가 모이는 언어가 되는 것이 더 중요하다고 보고 있습니다. Wave 역시 특정 분야를 강요하기보다는, 누군가에게는 시스템 언어로, 또 누군가에게는 새로운 실험의 도구로 선택될 수 있는 하나의 선택지가 되기를 바랍니다. 결국 Wave의 대상은 직군이나 역할이 아니라, “이 언어로 무언가를 직접 만들어보고 싶다”는 동기를 가진 개발자들이라고 생각합니다.
Q. Wave 언어 초기 셋팅 방법에 대해 알려주세요
A. Wave의 초기 설치 방법은 공식 웹사이트의 설치 문서에도 안내되어 있습니다. 가장 간단한 방법은 아래 명령어를 사용하는 것으로, 최신 릴리즈 버전을 바로 설치할 수 있습니다. curl -fsSL https://wave-lang.dev/install.sh | bash -s -- latest
Q. Wave를 개발하면서 가장 기억에 남는 순간이 있었다면 언제였나요?
A. Wave 개발 초창기에 파서에 대한 개념을 제대로 이해하지 못한 채, 파서와 AST를 분리해서 구현하려고 시도했던 시기가 가장 기억에 남습니다. 그 상태로 약 6개월 동안 시행착오를 겪었는데, 어느 순간 “파서의 출력이 곧 AST다”라는 기본적인 개념을 깨닫게 되었고, 그 이후에는 파서를 빠르게 구현해 실제 릴리즈까지 이어질 수 있었습니다.
Q. Wave를 개발하면서 가장 난이도가 높았던 부분은 무엇이였나요?
A. LLVM을 백엔드로 사용하는 개발 환경을 구축하는 과정이 가장 어려웠습니다. 언어 구현 자체보다도 툴체인과 빌드 환경을 안정적으로 구성하는 데 많은 시간을 썼던 기억이 있습니다.
Q. Wave 언어의 학습 곡선과 사용 난이도는 어떤가요?
A. 개인적으로는 C와 Rust의 중간 정도, 혹은 C보다 약간 쉬운 수준이라고 평가하고 있습니다. 다만 명시적인 타입과 저수준 개념에 익숙하지 않다면 초반에는 다소 부담이 될 수 있습니다.
Q. 이것 하나 때문이라도 Wave를 써야한다 라고 자랑할 요소는 무엇인가요?
A. 아직은 명확하게 하나만 꼽기 어렵지만, 직관적으로 설계된 인라인 어셈블리 문법과 타입 시스템은 Wave의 강점 중 하나라고 생각합니다. 저수준 제어를 필요로 하는 상황에서 언어가 방해되지 않는다는 점을 중요하게 보고 있습니다.
Q. Wave 언어를 사용함으로써 체감할 수 있는 정량적 변화는 무엇인가요?
A. 아직 언어 자체가 개발 중인 단계이기 때문에, 성능이나 생산성 측면에서 명확한 정량적 지표를 제시하기는 어렵습니다. 현재로서는 언어의 가능성을 검증하는 단계라고 보는 것이 맞다고 생각합니다.
Q. Wave는 어떤 유형의 개발자분들에게 특히 잘 맞나요?
A. 기반이 어느 정도 완성된다면 웹 백엔드 개발자분들에게도 충분히 활용될 수 있을 것이라고 생각합니다. 특히 컴파일러, 운영체제, 엔진 등 시스템 개발에 관심 있는 개발자분들에게는 잘 맞는 언어가 될 수 있을 것 같습니다.
Q. 반대로 잘 맞지 않을 수 있는 개발자 유형은 무엇인가요?
A. Python처럼 높은 수준의 추상화에 익숙한 개발자분들에게는 Wave가 다소 어렵게 느껴질 수 있을 것이라고 생각합니다. Wave는 내부 동작을 명확히 드러내는 방향의 언어이기 때문에, 그 부분이 장벽이 될 수 있습니다.
Q. Wave를 사용하면서 주의하면 좋은 팁을 알려주세요.
A. Wave는 릴리즈 중이지만 그래도 아직 개발 중인 언어이기 때문에, 현재로서는 실제 서비스나 본 프로젝트에 사용하기에는 무리가 있다고 말씀드릴 수 있습니다. 버그도 많고, 표준 라이브러리 역시 충분히 성숙하지 않은 상태입니다. 다만 장기적으로는 Wave를 활용해 운영체제, 브라우저, 게임 엔진 등을 직접 개발하는 것이 목표이기 때문에 이러한 문제들은 점차 해결해 나갈 예정입니다. 현재 단계에서는 취미 프로젝트나 알고리즘 연습용으로 사용하는 것이 가장 적절하다고 생각합니다.
Q. Wave 언어를 한 문장으로 표현한다면 어떻게 표현할 수 있을까요?
A. C와 Rust 사이 어딘가에 위치한 언어이자, 현재 한국에서 비교적 활발히 개발되고 있는 드문 프로그래밍 언어라고 표현하고 싶습니다.
Q. 다양한 유형의 개발자분들에게 Wave를 추천한다면 어떻게 말할 수 있을까요?
A. Wave는 아직 완성된 언어라기보다는, 함께 만들어가고 있는 언어입니다. 저수준 시스템에 관심이 있거나, 언어와 컴파일러가 어떻게 동작하는지 직접 경험해보고 싶은 개발자라면 한 번쯤 사용해보기에 좋은 선택지라고 생각합니다.
Q. 앞으로 개선될 부분은 어떤 것들이 있을까요?
A. 개선해야 할 부분은 정말 많습니다. 아직 테스트도 충분하지 않기 때문에, 알고리즘 연습이나 간단한 실험용으로 사용해 보시고, 버그나 불편한 점이 있다면 GitHub 이슈로 남겨주셨으면 합니다. 기여와 피드백이 Wave를 발전시키는 데 큰 도움이 됩니다.
Q. 장기적으로 Wave로 기대하는 방향이 있다면 무엇일까요?
A. 매우 장기적인 이야기이지만, 꾸준히 개발이 이어진다면 언젠가는 메이저 프로그래밍 언어 중 하나로 성장할 가능성도 있다고 생각합니다. 그 가능성을 현실로 만드는 것이 현재의 목표입니다.
Q. Wave 커뮤니티 멤버분들에게 전하고 싶은 한마디가 있다면?
A. 아직 커뮤니티 규모는 아주 작지만, 응원해 주고 조언을 아끼지 않는 분들께 정말 감사하게 생각하고 있습니다. 스타를 눌러주신 분들, 블로그를 읽고 피드백을 주신 분들 모두에게 항상 마음속으로 감사하다는 말씀을 드리고 싶습니다.
인터뷰 요약,
탄생 배경 및 철학: 'C언어의 현대화'
- 하이브리드 지향: C언어의 단순함과 강력함은 유지하되, 포인터 제어의 부담을 줄이고 Rust의 복잡한 소유권 개념보다는 간결한 안정성을 선택적으로 수용했습니다.
- 명확성과 예측 가능성: 타입 추론을 배제하고 모든 타입을 명시적으로 작성 하게 하여, 개발자가 코드의 동작 방식을 완벽히 장악할 수 있도록 설계되었습니다.
- 공존의 가치: 강력한 고수준의 추상화와 정밀한 저수준 제어가 함께 어우러지는 것을 목표로 합니다.
기술적 특징 및 사용성
- 백엔드: LLVM을 활용한 안정적인 툴체인 구축을 지향합니다.
- 학습 곡선: C언어와 Rust 사이의 난이도로, 저수준 개념에 익숙하다면 직관적인 인라인 어셈블리 문법 등을 통해 강력한 제어권을 얻을 수 있습니다.
- 설치 방법: curl -fsSL https://wave-lang.dev/install.sh | bash -s -- latest
대상 사용자 및 권장 용도
- 추천: 시스템 프로그래밍(OS, 엔진, 컴파일러)에 관심이 있거나, 언어의 내부 동작을 직접 경험하며 함께 언어를 키워나가고 싶은 개발자
- 비추천: Python과 같은 고수준 추상화나 자동화된 편의성에 익숙한 경우 다소 투박하게 느껴질 수 있습니다.
- 현재 단계: 실제 서비스 도입보다는 알고리즘 연습, 취미 프로젝트, 컴파일러 학습용 으로 권장합니다.
향후 비전: ‘한국형 메이저 언어를 향해’
Wave는 단순한 개인 프로젝트를 넘어, 장기적으로 운영체제와 브라우저를 개발할 수 있는 메이저 프로그래밍 언어로의 성장을 꿈꾸고 있습니다. 현재는 1인 개발 체제이지만, MPL-2.0 라이선스 아래 오픈 소스로 운영되며 전 세계 기여자들의 피드백을 기다리고 있습니다.
“Wave는 완성된 언어가 아니라, 함께 만들어가는 언어입니다”
지금 바로 Wave의 첫 번째 파도에 올라타 보시는 건 어떨까요?
루나님의 도전을 격하게 응원합니다 :)
Wave 소개 바로가기, https://www.wave-lang.dev/ko/docs/intro/
Wave 웹사이트 바로가기, https://www.wave-lang.dev/ko/
Wave 커뮤니티 바로가기, https://discord.gg/3nev5nHqq9