“정적 타입이 AI 환각 버그를 막는다!” “아니, 타입 어노테이션을 생략하면 토큰이 절약된다!” — 논쟁은 많지만 데이터는 없었습니다. 그래서 누군가 직접 실험했습니다.

Ruby 커미터이자 개발자인 mame가 Claude Code(Opus 4.6)로 13개 언어에서 간단한 Git 구현체를 각 20회씩 만들며 시간과 비용을 측정했습니다. 결과는 꽤 뚜렷했습니다. Ruby, Python, JavaScript가 가장 빠르고 저렴했고, 정적 타입 언어들은 최대 2.6배 느리고 비쌌습니다.
출처: Which Programming Language Is Best for Claude Code? – DEV Community
실험 설계
작업은 두 단계로 나뉩니다. v1에서는 init, add, commit, log를 구현하고, v2에서는 status, diff, checkout, reset을 추가합니다. 비교 언어는 동적 타입(Python, Ruby, JavaScript, Perl, Lua), 타입 체커 추가(Python/mypy, Ruby/Steep), 정적 타입(TypeScript, Go, Rust, C, Java), 함수형(Scheme, OCaml, Haskell)으로 구분했습니다.
언어당 20회씩 총 600번 실행했고, 각 결과에서 소요 시간, 비용, 코드 라인 수를 측정했습니다.
동적 언어 3강의 압도적 우위
Ruby($0.36), Python($0.38), JavaScript($0.39)가 비용과 속도 모두 1~3위를 차지했습니다. 시간은 73~81초, 표준편차도 낮아 결과가 안정적이었습니다.
4위부터는 양상이 달라집니다. Go는 평균 102초지만 편차가 ±37초로 커지고, Rust는 113초에 ±55초입니다. C는 156초로 가장 느린 축에 속했고, Ruby에 Steep 타입 체커를 더한 Ruby/Steep은 187초로 순수 Ruby보다 2.6배 비쌌습니다($0.84 vs $0.36).
성능 실패도 정적 타입 진영에서만 나왔습니다. 600번 실행 중 3번의 실패가 모두 Rust(2번)와 Haskell(1번)에서 발생했고, Rust의 한 실패 로그에는 AI가 “테스트가 잘못됐다”고 주장한 내용도 담겨 있었습니다.
짧은 코드 = 빠른 생성이 아니다
코드 라인 수와 속도는 생각만큼 연결되지 않습니다. OCaml(216줄)과 Haskell(224줄)은 가장 간결한 코드를 생성했지만, 속도는 중하위권이었습니다. 저자는 이를 “사고 토큰(thinking token) 소비”로 설명합니다. 코드 자체는 짧아도, 생성 과정에서 더 많이 추론하느라 비용이 올라간다는 분석입니다.
반면 C는 517줄로 가장 많은 코드를 썼고, 당연하게도 가장 느리고 비싼 편에 속했습니다.
왜 동적 언어가 유리한가
저자는 단일 원인을 단정하기보다 복합적 요인을 제시합니다. 동적 언어는 AI 학습 데이터가 압도적으로 많고, 신규 프로젝트에서 설정 파일(Cargo.toml, package.json 등) 없이 파일 하나로 시작할 수 있어 초기 오버헤드가 작습니다. Python/mypy의 타입 체커 오버헤드(1.6~1.7배)보다 Ruby/Steep의 오버헤드(2.0~3.2배)가 큰 것도 AI가 Steep에 덜 익숙하기 때문으로 봅니다.
“2배 차이가 별것 아니지 않냐”는 질문에 저자는 정면으로 반박합니다. 프롬프트→대기→다음 작업 고민→다시 프롬프트의 반복 사이클에서 30초와 60초의 차이는 단순한 시간이 아니라 집중력과 흐름의 문제라고요.
다만 이 실험은 프로토타입 규모 작업이 전제입니다. 저자 스스로도 “대규모에서는 정적 타입이 유리할 수 있고, 누군가 검증해봐야 한다”고 인정합니다. 7가지 언어 카테고리별 세부 분석과 v1/v2 단계별 결과는 원문에서 확인할 수 있습니다.

답글 남기기