문법(Syntax)이 쉬운 프로그래밍 언어가 AI의 환각(Hallucination)을 줄여줄까?
요약
프로그래밍 언어의 문법적 장황함이 LLM의 토큰 소모와 환각(Babbling)에 미치는 영향을 분석한 연구들을 소개합니다. Java와 같은 장황한 언어보다 Python과 같이 간결한 언어가 토큰 효율성과 생성 정확도 측면에서 유리함을 데이터로 입증합니다.
핵심 포인트
- 장황한 문법은 불필요한 토큰을 팽창시켜 비용과 컨텍스트를 낭비함
- Token Sugar 연구를 통해 소스 코드 토큰을 최대 15.1% 절감 가능
- Java는 Python보다 LLM의 '횡설수설(Babbling)' 현상이 더 빈번하게 발생
- 간결한 언어 사용은 LLM의 에너지 소비를 줄이고 효율성을 높임
문법(Syntax)이 쉬운 프로그래밍 언어가 AI의 환각(Hallucination)을 줄여줄까?
"Go로 코드를 짤 때 Copilot이 Java보다 더 정확하다" — 이런 말 들어보셨나요?
혹은 "Python은 쉬워서 AI가 더 잘한다" — 이것은 사실일까요, 아니면 단순한 확증 편향(Confirmation bias)일까요?
이 질문은 겉보기에는 의견처럼 보이지만, 실제로는 이를 뒷받침하는 연구 결과가 있습니다.
이 글에서는 arXiv와 GitHub Blog의 3가지 연구를 통해 데이터로 이 질문에 답해보고, AI의 도움을 가장 잘 받고 싶다면 어떤 언어를 선택해야 하는지 결론을 내려보겠습니다.
📄 연구 1: Token Sugar — "장황할수록(Verbose) 토큰을 더 많이 소모한다"
Token Sugar: Making Source Code Sweeter for LLMs (ASE 2025)
Zhensu Sun, Chengran Yang 외 저자 — https://arxiv.org/abs/2512.08266
발견 사항:
_"불필요한 포맷팅 요소나 긴 보일러플레이트(Boilerplate) 코드와 같은 프로그래밍 언어 고유의 장황함(Verbosity)은 토큰 수(Token counts)를 팽창시킨다."
장황한(Verbose) 프로그래밍 언어 — 즉, 보일러플레이트가 많고 포맷팅 요소가 많은 언어 — 는 불필요하게 토큰 수(Token count)를 높입니다.
수치: Token Sugar는 소스 코드에서 토큰을 15.1% 줄이고, 생성(Generation) 과정에서 **11.2%**를 줄일 수 있었습니다. 이때 Pass@1 값은 동일하게 유지되었습니다. 이는 줄어든 부분이 중요한 내용이 아니라, LLM이 헛되이 생성해야 했던 문법(Syntax)상의 "쓰레기"였음을 의미합니다.
시사점:
Java: public static void main(String[] args) { System.out.println("hello"); }
Go: func main() { fmt.Println("hello") }
...
절약된 모든 토큰은 곧 절약된 비용이며, 실제 로직을 위해 남겨둘 수 있는 컨텍스트 윈도우(Context window)입니다.
📄 연구 2: Babbling Suppression — "Java가 Python보다 더 횡설수설한다"
Babbling Suppression: Making LLMs Greener One Token at a Time (2026)
Lola Solovyeva, Fernando Castor 저자 — https://arxiv.org/abs/2604.06755
발견 사항:
_"Babbling(횡설수설)은 테스트된 모든 모델에서 발생하며, Python보다 Java에서 더 높은 빈도로 나타난다."
"Babbling" (횡설수설)이란 LLM이 필요 이상으로 많은 출력(Output)을 생성하는 것을 말합니다. 예를 들어, 단 하나의 메서드만 요청했는데 클래스 전체의 getter/setter를 생성하거나, 사용하지 않는 import를 넣거나, 과도하게 긴 주석(Comment)을 다는 행위 등을 포함합니다.
이 연구에 따르면 Java가 Python보다 유의미하게 더 많은 '장황한 설명(babbling)'을 생성하며, 이를 억제함으로써 에너지 소비를 **Python의 경우 65%, Java의 경우 62%**까지 줄일 수 있습니다.
왜 Java가 더 장황할까요?
Python: def add(a, b): return a + b ← 2줄
Java: public int add(int a, int b) { ← 타입, 접근 수정자(access modifier) 필요,
return a + b; return 문장, 중괄호(bracket)
...
Java는 동일한 의도를 표현하기 위해 LLM이 더 많은 내용을 '말하도록' 강제합니다. 말할 내용이 많을수록 틀릴 확률도 높아집니다.
📄 연구 3: MultiPL-E —
- 훈련 데이터(training data)가 많을수록 → AI가 정확해짐
- 문법(syntax)이 간결할수록 → 토큰(token) 절약
- 상용구(boilerplate)를 강제하지 않을수록 → AI가 불필요한 말을 하지 않음
Python은 훈련 데이터 측면에서 압도적이며, Go는 간결함 측면에서 승리합니다. JavaScript/TypeScript는 두 측면의 균형을 이루고 있으며, Java/C++은 기능적 역량은 뛰어나지만 토큰 비용(token cost) 측면에서 불리합니다.
📚 Sources:
- Token Sugar (ASE 2025) — 장황함(verbosity) → 토큰 비효율성(token inefficiency)
- Babbling Suppression (2026) — Java는 Python보다 더 많은 불필요한 말(babble)을 함
- MultiPL-E (2022) — 교차 언어 LLM 벤치마크(cross-language LLM benchmark)
- GitHub Copilot: Token Efficiency — 2026년 6월
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기