정확히 기억나진 않는데, 얼마 전에 LinkedIn에서 재미있는 글을 본 기억이 떠올라 적어본다.
그 글의 내용은 프로그래밍 언어별로 다른 에너지 소비량을 비교 분석하여 보여주는 것이었는데, 다른 것은 다 기억 안 나고 한 가지 아직도 선명한 것은 "C언어가 효율이 좋다"였다.
현대의 프로그래밍 언어들의 발전 방향이 개발자들이 최대한 접근 가능하고, 로직에만 신경 쓸 수 있도록 최대한 똑똑한 언어를 만드는 것이다. 심지어 "노 코드"라고 코드 짤 줄 몰라도 프로그래밍이 가능하게 발전하는 이 시대에, 우리의 지구를 위해 (?) C언어를 이용하자라고 말하는 것처럼 들려 신선한 충격이었다.
약 22년 정도 프로그래밍을 공부 및 직업으로 해오고 있는데, C 언어 같은 로우 레벨 언어 (개발자가 똑똑해서 기계가 잘 알아들을 수 있도록 꼼꼼히 작성해 주기를 기대하는 언어)는 이미 10년 이상 볼 일이 없었다. 테크 회사들 대부분이 구현 및 운용에 들이는 인건비보다는 좀 덜 효율적이더라도 인건비를 줄이고 성능 부분은 좀 더 파워풀한 장비를 이용하여 보상하는 방식을 많이 추구한다. 빠른 개발 속도 및 개발 인력 확보 차원에서 꽤나 효과적인 접근 방법이라 생각한다. 내가 왜 이 이야기를 하고 있는지 모르겠는데, 다시 본론으로 돌아와서, 해당 연구에서 재미있는 내용 일부를 가져왔다.
자세히는 안 읽어봤고, 뭐 어떤 방식으로 실험 및 비교했다고 하고, 결과는 위에서 이미 스포 했듯이 C가 에너지/시간 면에서 1등!! 메모리 사용량은 3등!!
언어 종류가 엄청 많네.. 이런 언어들도 크게 Compiled (직접 기계어로 번역, 기계에서 바로 실행 가능; e.g., C/C++), VM (중간 단계의 바이트 코드로 번역, 기계에서 실행 시 바이트 코드를 이해, 실행하는 엔진/버추얼 머신이 필요; e.g., Java), Interpreted (기계에서 실행 시에 코드를 이해, 실행하는 방식; e.g., Python)으로 크게 분류할 수 있는데, 이런 언어 특성별 에너지 효율성도 가져왔다.
이 비교 결과는 쉽게 예상됐듯이, 컴파일 언어들이 확연한 효율 보여주고 interpreted 언어가 가장 안 좋은 효율을 보여줬다. 인상 깊은 점은 자바가 생각보다 효율이 좋은 것, 그리고 Go가 생각보다 효율이 좋지 않은 것이다. 그렇다고 뭐 달라질 건 없지만 그냥 그렇단다..
요새 ML 분야에서 꽤나 유명한 Python (버전은 모름) 경우에는 상당히 효율이 떨어지는데 그래도 나는 못 버릴 것 같다. 그냥 스마트한 개발자분들이 좀 더 환경 친화적인 프로그래밍을 해주기를 기대할 뿐~ ;)
더 궁금한 사람들은 아래 링크 통해서 직접 페이퍼 읽어보시길.
Source: "Ranking Programming Languages by Energy Efficiency"
댓글