Go와 Rust, 과연 보일러플레이트(Boilerplate)는?
scc 도구(Tool)를 활용하여 다양한 프로그래밍 언어의 코드 밀도(Code Density)를 측정하고, ULOC(Unique Lines of Code)를 기준으로 분석함.
Go와 Rust의 코드 중복성(Code Redundancy)이 예상외로 유사하며, Clojure가 가장 높은 코드 밀도를 보임.
Java는 예상보다 높은 코드 밀도를 보여주며, 현대적인 언어의 코드 간결성(Code Conciseness)에 대한 의문을 제기함.
CoffeeScript와 같은 과거 언어의 간결함과 현대 언어의 코드 중복성 증가에 대한 논의가 이루어짐.
ULOC(Unique Lines of Code)를 활용한 코드 밀도 측정
본 연구는 scc 도구(Tool)를 사용하여 ULOC(Unique Lines of Code)를 계산하고, 이를 통해 각 언어의 코드 밀도를 객관적으로 측정했다. 특히, Go와 Rust의 보일러플레이트(Boilerplate) 문제를 ULOC를 통해 정량적으로 비교 분석했다. 연구 결과에 따르면, Go와 Rust는 비슷한 수준의 코드 중복성을 보이며, 이는 Rust의 라이프타임(Lifetime) 어노테이션(Annotation)과 트레이트(Trait) 바운드(Bound)가 Go의 `if err != nil` 패턴과 유사한 수준의 코드 중복성을 유발하기 때문으로 분석된다.
Clojure의 높은 코드 밀도와 Lisp 언어의 특징
Clojure를 포함한 Lisp 계열 언어들이 높은 코드 밀도를 보이는 이유는 호모아이코닉(Homoiconicity)과 같은 언어적 특징 때문이다. 이러한 특징은 적은 라인 수로도 복잡한 로직을 표현할 수 있게 해준다. Clojure는 JVM 위에서 실행되면서도 Lisp의 간결함을 유지하여, 다른 언어에 비해 훨씬 적은 보일러플레이트(Boilerplate)를 갖는 것으로 나타났다. 이는 개발 생산성 향상에 기여할 수 있는 중요한 요소로 평가된다.
Java의 예상 밖의 높은 코드 밀도
Java는 전통적으로 보일러플레이트(Boilerplate)가 많은 언어로 인식되었지만, 연구 결과에서는 예상보다 높은 코드 밀도를 보였다. 이는 Java 8 이후의 람다(Lambda) 표현식, var 키워드, 레코드(Record) 등의 도입으로 코드 간결성이 향상되었기 때문으로 분석된다. 하지만, 여전히 다른 JVM 언어인 Groovy, Scala, Kotlin에 비해서는 낮은 코드 밀도를 보이며, 현대적인 언어의 코드 간결성에 대한 의문을 제기한다.
코드 밀도와 개발 생산성의 상관관계
코드 밀도가 높다는 것은 동일한 기능을 구현하는 데 필요한 코드 라인 수가 적다는 것을 의미하며, 이는 개발 생산성 향상으로 이어진다. 하지만, 코드 밀도가 너무 높으면 가독성이 떨어지고 유지보수가 어려워질 수 있다. 따라서, 적절한 수준의 코드 밀도를 유지하는 것이 중요하다. LLM(Large Language Model)의 발전은 코드 생성 및 유지보수 방식을 변화시켜, 코드 밀도와 개발 생산성의 관계에 새로운 영향을 미칠 것으로 예상된다.