문법(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: