AI Sparkup

최신 AI 쉽게 깊게 따라잡기⚡

코딩 에이전트엔 동적 언어가 토큰 효율적이라는 통념의 함정

“동적 언어가 코딩 에이전트의 토큰을 덜 먹는다”—구글 AI 요약까지 그렇게 답할 만큼 굳어진 통념입니다. 그런데 실제 규모의 작업에 붙여보면 이 순위가 무너집니다.

AI 생성 이미지

이 통념을 데이터로 뜯어본 사람은 엔지니어 댄 루(Dan Luu)입니다. 그는 자주 인용되는 토큰 효율 비교들이 실제로 무엇을 측정하고 있는지 되짚은 뒤, 규모 있는 과제로 직접 실험을 돌려 결과를 확인했습니다.

출처: What’s the best programming language for coding agents? – Dan Luu

통념은 어디서 왔나

널리 인용된 마틴 앨더슨의 분석이 출발점입니다. 여러 언어로 같은 문제를 풀게 한 뒤 토큰 수를 비교했더니, 가장 비효율적인 C와 가장 효율적인 Clojure 사이에 2.6배 차이가 났다는 것. 배열 언어 J는 평균 70토큰으로 Clojure(109토큰)의 절반 수준이었고요. 타입 선언을 생략하는 간결한 동적 언어가 코드가 짧아 토큰을 덜 쓴다는 이야기입니다.

이 결론은 검색에도 스며들었습니다. “동적 vs 정적 언어 토큰 비용”을 검색하면 구글 AI 요약이 같은 글을 인용하며 “동적 타입 언어가 대체로 토큰 비용이 낮다”고 답할 정도죠.

함정은 ‘문제가 너무 쉽다’는 데 있다

댄 루가 짚은 핵심 허점은 벤치마크에 쓰인 문제가 사소하다는 점입니다. J로 70토큰, Clojure로 109토큰에 풀리는 문제라면 사실상 문제라고 할 것도 없죠. 원문은 Rosetta Code의 예제를 썼습니다.

이런 사소한 과제에선 작업의 대부분이 ‘답을 출력하는 것’ 자체입니다. 그래서 간결한 언어가 유리해 보이지만, 조금이라도 ‘진짜 일’이 필요한 문제로 넘어가면 그 격차가 희석됩니다. 사소한 과제의 성능은 일반화되지 않는다는 것.

두 번째로 자주 인용되는 벤치마크에도 방법론 오류가 있었습니다. 한 테스트가 존재하지 않는 경로를 실행하려다 실패했고, 뒤이은 에이전트가 그 경로를 자기 실행 파일로 심볼릭 링크하는 바람에 이후 채점이 전부 엉뚱한 실행 파일로 돌아갔죠. “Rust가 실패했다”는 결론이 실은 채점 순서가 꼬인 결과였던 겁니다.

그래서 직접 돌려봤다

댄 루는 남의 평가에 기대는 대신 자기 실험을 돌렸습니다. 결과를 보기 전에 예상을 먼저 적어두는 방식으로요. 그가 95% 확신으로 적은 건 “동적 대 정적 언어라는 전체 주장은 성립하지 않는다”, 98% 확신으로 적은 건 “J 같은 희귀 언어의 우위도 유지되지 않는다”였습니다.

실험은 사소한 예제 대신 규모 있는 과제를 골랐습니다. 인터넷이 막힌 컨테이너 안의 에이전트에게 zstd 압축 규격 문서(RFC)만 주고, 완전한 zstd 디코더를 구현하게 한 거죠. 테스트는 에이전트에게 주지 않았습니다. GPT-5.6 Sol로 medium과 ultra 두 수준에서 돌렸고요.

핵심은 medium 결과만 떼어 보면 동적 언어가 더 좋아 보이는 착시가 생기지만, 과제를 바꾸면 결과가 크게 출렁인다는 데 있습니다. 언어 하나로 ‘토큰 효율 순위’를 매길 만큼 안정적인 신호가 아니라는 뜻이죠.

개발자에게 남는 것

정리하면 “에이전트 비용을 아끼려면 동적 언어로 짜라”는 조언은 사소한 벤치마크가 만든 착시에 가깝습니다. 실제 작업에서 언어별 토큰 차이는 과제에 따라 요동치고, 코드 길이 말고 다른 요인이 결과를 좌우합니다.

그렇다고 이 글이 “정적 언어가 낫다”고 뒤집는 것도 아닙니다. 요점은 그럴듯한 벤치마크 하나로 언어를 고르지 말라는 쪽에 가깝죠. 익숙하고 팀에 맞는 언어를 쓰되, 토큰 비용이 정말 걱정이라면 남의 사소한 벤치마크가 아니라 내 실제 작업에 가까운 조건으로 재보는 게 낫다는 것.

해보려면

환경: 원문 실험은 GPT-5.6 Sol을 medium·ultra 두 수준에서 사용했습니다. 인터넷이 차단된 컨테이너에 zstd RFC(정오표 포함)만 주고 완전한 디코더를 구현하게 했고, 테스트 코드는 에이전트에게 제공하지 않았습니다.

걸리는 지점: Rosetta Code 같은 사소한 문제에선 간결한 동적 언어가 토큰을 덜 먹지만, 실제 규모의 작업에선 그 이점이 희석됩니다. 결과가 과제마다 크게 출렁여 언어 하나로 순위를 매기기 어렵고요. J 같은 희귀 언어는 AI 훈련 데이터 자체가 적어, 벤치마크 밖에서는 별개의 문제를 안습니다.

참고자료:


AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)

Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다