‘루(Rue)’ 언어 개발, AI 챗봇 클로드(Claude)와 함께하다
프로그래밍 언어 개발의 세계에 흥미로운 소식이 전해졌습니다. 인기 프로그래밍 언어 러스트(Rust)의 베테랑 개발자로 알려진 스티브 클랩닉(Steve Klabnik)이 새로운 시스템 프로그래밍 언어 ‘루(Rue)’를 개발하고 있는데요. 특히 주목할 점은 이 프로젝트에 인공지능 챗봇 클로드(Claude)가 공동 개발자로 참여하고 있다는 사실입니다.
‘루(Rue)’라는 이름의 숨겨진 의미
새로운 프로그래밍 언어에 ‘루(Rue)’라는 이름을 붙인 것은 프로젝트의 전망에 대한 회의적인 시각을 암시하는 것처럼 들릴 수도 있습니다. ‘rue’가 ‘후회하다’라는 뜻을 가지고 있기 때문이죠. 하지만 스티브 클랩닉은 이 이름에 더 깊은 의미가 있다고 설명합니다.
그는 과거 루비 온 레일즈(Ruby on Rails)와 러스트(Rust) 프로젝트에 참여했기 때문에, 새로운 언어의 이름이 ‘Ru’로 시작하기를 원했다고 해요. 그리고 ‘rue’는 ‘후회’라는 의미 외에도 ‘운향(Ruta graveolens)’이라는 꽃의 이름이기도 합니다. 러스트(Rust)가 ‘부식’이라는 부정적인 의미와 ‘균류’라는 긍정적인 의미를 동시에 가지는 것처럼, 루(Rue) 역시 부정적인 의미와 긍정적인 의미를 모두 포함하는 대칭성을 좋아했다고 합니다. 또한, 이름이 짧다는 점도 마음에 들었다고 하네요.
Rust의 복잡성을 넘어선 새로운 시도
루(Rue)는 가비지 컬렉션(garbage collection) 없이 메모리 안전성을 제공하면서도, 러스트(Rust)나 지그(Zig)와 같은 언어보다 더 높은 수준의 사용 편의성(ergonomics)을 목표로 하는 시스템 프로그래밍 언어입니다.
가비지 컬렉션은 자동 메모리 관리 방식을 의미하며, 명시적인 메모리 할당 해제로 인해 발생하는 메모리 오류를 줄이는 데 기여합니다. 러스트(Rust)의 강점 중 하나는 언어의 특정 부분만 사용해도 메모리 안전성을 보장할 수 있다는 점이지만, 고(Go)나 스위프트(Swift) 같은 최신 언어에 비해 학습 곡선이 가파르다는 평가를 받습니다.
스티브 클랩닉은 러스트(Rust)의 복잡성에 대한 많은 개발자들의 우려를 인지하고 있었다고 합니다. 그는 러스트(Rust)가 C나 C++와 같은 언어와 최고 성능 경쟁을 하지 않는다면 어떨까 하는 의문을 가졌습니다. 성능을 조금 양보하더라도 사용 편의성을 높이고, 언어 자체를 더 크게 만들어 전체 패키지를 단순화하는 방향을 탐색하고 싶었던 것이죠. 지난 20년간 가비지 컬렉터가 없는 메모리 안전 언어는 충분히 탐구되지 않았다고 보며, 루(Rue)를 통해 자신만의 관점을 제시하고자 합니다.
현재 공개된 코드 샘플만으로는 루(Rue)가 러스트(Rust)보다 얼마나 더 접근하기 쉬운지는 명확하지 않습니다. 흔히 사용되는 피즈버즈(Fizz Buzz) 예제만 보더라도 러스트(Rust) 버전과 크게 다르지 않기 때문입니다.
AI 챗봇 클로드(Claude)가 공동 개발자로?
루(Rue)는 대부분 러스트(Rust)로 작성되었으며, 앤트로픽(Anthropic)의 클로드(Claude) AI 모델에 크게 의존하고 있습니다. 클로드의 능력은 수많은 개발자들의 코드를 학습 데이터로 삼아 형성된 것이죠.
스티브 클랩닉은 자신의 블로그 게시물에서 루(Rue)가 자신뿐만 아니라 클로드에 의해 개발되고 있다고 명시했습니다. 심지어 개발 첫 주 요약 게시물은 클로드 단독으로 작성되기도 했습니다.
그는 올해 초 루(Rue) 개발을 시작했지만, 당시에는 LLM(Large Language Model) 활용 능력이 지금보다 부족해 시행착오를 겪었다고 합니다. 다시 시작한 이번 프로젝트에서는 2주 만에 지난번 한두 달 동안 진행했던 것보다 훨씬 더 많은 진전을 이루었다고 해요. 이는 모델의 개선뿐만 아니라, LLM을 효과적으로 사용하는 자신의 기술이 향상된 덕분이라고 설명합니다.
AI 개발 도구, 어떻게 활용해야 할까요?
스티브 클랩닉은 클로드와 같은 LLM이 반맞춤형(semi-custom) 소규모 프로젝트에서는 경험이 적은 개발자에게도 유용할 수 있다고 말합니다. 하지만 대규모 프로젝트에서는 소프트웨어 엔지니어링 지식이 더 중요하다고 강조합니다.
그는 LLM을 도구로 보아야 한다고 설명합니다. 작은 프로젝트부터 시작하여 점차 활용 범위를 넓힐 수 있다는 것이죠. 비프로그래머도 이러한 도구를 활용할 수 있지만, 도구는 전문 지식을 요구합니다. 기존 프로그래밍 지식만으로는 LLM을 효과적으로 사용하기에 충분하지 않으며, LLM 활용은 그 자체로 하나의 기술이라고 보고 있습니다. 시작하기 위한 기술 장벽은 낮지만, 가장 효과적으로 사용하기 위한 기술 장벽은 상당히 높다고 평가합니다.
클로드가 절약해 준 시간을 정확히 추정하기는 어렵지만, 스티브 클랩닉은 클로드 없이는 지금보다 훨씬 덜 진전했을 것이라고 확신합니다. 개발 2주 만에 루(Rue)는 약 7만 라인의 러스트(Rust) 코드로 이루어져 있습니다. 코드 라인 수가 전부는 아니지만, 이 정도 규모의 프로젝트를 수작업으로 진행했다면 훨씬 더 느렸을 것이고, 품질도 낮았을 가능성이 있다고 말합니다.
클로드 역시 자신의 기여도를 스스로 평가했습니다. 클로드는 언어의 핵심인 컴파일러가 적절한 도구를 활용하면 놀랍도록 빠르게 완성될 수 있음을 이번 주에 보여주었다고 언급했습니다. 아직 언어 서버 프로토콜(LSP)이나 패키지 관리자는 없지만, 실제 실행 파일을 생성하는 컴파일러와 이를 기반으로 계속 구축할 수 있는 인프라를 갖추게 되었다는 것이죠. 클로드는 130개의 커밋 중 대부분에 자신의 흔적이 남아있다고 말하며, 스티브 클랩닉이 방향을 제시하고 검토하며 어려운 설계 결정을 내렸다면, 자신은 대부분의 코드를 작성했다고 설명합니다. 이는 흔치 않은 협업 방식이며, 아직 그 의미를 완전히 파악하기는 어렵다고 덧붙였습니다.
스티브 클랩닉은 프로젝트의 미래에 대해 확신하지 않습니다. 아무도 루(Rue)를 사용하지 않아도 괜찮고, 10년 후에 주요 프로그래밍 언어가 되어도 괜찮다고 말합니다. 그는 어떤 것도 강요하려 하지 않으며, 단지 자신이 즐기는 일을 하면서 그것이 어디로 이끌지 지켜보고 있을 뿐이라고 합니다. 클로드 역시 공동 조종사(copilot)로서 이 여정에 함께하고 있습니다.
