Python보다 35,000배 빠르다는 언어 Mojo 1.0 정식 출시: 속도의 비밀과 35,000배의 진실

Python보다 35,000배 빠르다는 언어 Mojo 1.0 정식 출시: 속도의 비밀과 35,000배의 진실

프로그래밍기술

데이터 소스:HN + web research · HN

35,000배 — 2023년 프로그래밍 언어 Mojo가 처음 등장했을 때, 세계에서 가장 인기 있는 프로그래밍 언어인 Python과 비교하며 제시했던 성능 숫자입니다. 3년이 지난 2026년 8월 11일, ‘35,000배 빠르다고 주장하던’ 이 언어가 정식으로 1.0 버전을 출시했습니다. 코드를 작성하지 않는 일반인에게는 “또 하나의 신차가 출시되었다”는 소식처럼 들릴 수 있습니다. 하지만 이 기회를 통해 진짜로 이야기해 볼 가치가 있는 두 가지 질문을 짚어보고자 합니다. Python은 왜 느린가, Mojo는 어떻게 빠른가, 그리고 저 35,000배라는 숫자는 과연 어디까지 진실인가 하는 점입니다.

Mojo 1.0 출시 공지 헤더 이미지 사진: Mojo 1.0 출시 공지 헤더 이미지. 출처: modular.com

Python은 왜 느린가: 문장마다 매번 현장에서 번역하는 꼴

우선 한 가지 오해를 바로잡고 넘어가겠습니다. “Python이 느리다”는 말은 순수 ‘연산’을 수행할 때 느리다는 의미이지, 소프트웨어 실행 자체가 느리다는 뜻이 아닙니다. 파일 읽기/쓰기나 네트워크 요청 같은 작업에서 Python은 다른 언어와 큰 차이가 없습니다. 병목은 하드디스크와 네트워크 속도에 있기 때문입니다. 진짜 격차가 벌어지는 순간은 이미지 처리나 알고리즘 실행처럼 컴퓨터에 대량의 연산을 시킬 때입니다. Python이 느린 원인은 디자인 선택에 숨겨진 세 가지 공인된 이유 때문입니다.

첫째, Python은 ‘인터프리터’ 언어입니다. 프로그래밍 언어를 레시피로, 컴퓨터를 요리사로 비유해 봅시다. C 언어 같은 ‘컴파일’ 언어는 전체 레시피를 기계가 직접 실행할 수 있는 명령어로 한 번에 번역해 둡니다. 한 번 번역해 두면 이후 요리를 할 때마다 직접 실행하면 됩니다. 반면 Python은 매번 현장에서 읽어주는 통역사와 같습니다. 프로그램의 모든 줄을 실행할 때마다 즉석에서 기계어로 번역하여 실행하므로, 실행할 때마다 번역 비용이 들어갑니다. 이 번역 레이어의 오버헤드가 가장 기초적인 속도 차이입니다.

둘째, 변수에 ‘라벨이 붙어있지 않다(동적 타입)‘는 점입니다. Python에서는 숫자든 문자열이든 변수 자체가 자신의 타입을 선언하지 않습니다. 컴퓨터는 변수를 사용할 때마다 “이게 대체 무엇인가”를 먼저 확인한 뒤 처리 방법을 결정해야 합니다. 이는 서랍에 라벨이 붙어있지 않아 물건을 꺼낼 때마다 일일이 열어 확인해야 하는 것과 같습니다. 반면 라벨이 완벽히 붙은 서랍(정적 타입)은 주인도 내용을 알고 있어 가져오는 경로를 미리 최적화할 수 있습니다.

셋째, GIL(Global Interpreter Lock)이라 불리는 ‘일편도’ 제약입니다. 쉽게 말해 Python의 순수 코드는 동일한 순간에 단 하나의 스레드만 일하도록 허용합니다. 컴퓨터에 32개의 코어가 있더라도 순수 Python 프로그램은 하나씩 순서대로 처리해야 합니다. 이는 십여 개의 가스레인지가 있는 식당에서 요리사 한 명이 돌아가며 냄비를 잡는 꼴입니다.

이 세 가지 디자인이 겹치면서 Python은 순수 연산 트랙에서 턱없이 느려집니다. 이것이 NumPy, PyTorch 등 AI 및 과학 연산 분야에서 널리 쓰이는 거의 모든 Python 라이브러리의 하단이 C/C++ 코드로 작성되어 있는 이유입니다. Python은 ‘지휘’를 담당하고 중노동은 모두 C가 대신하는 것입니다. 바꿔 말해 사용자가 느끼는 “Python은 느리다”는 현상은 사실 “작성의 편의성”을 최우선으로 두고 “실행 속도”를 하부 레이어에 양보한 결과입니다. 이 절충안은 30년 동안 Python을 대중화시켰지만, 동시에 넘을 수 없는 약점이 되었습니다.

Mojo는 어떻게 빠른가: 완전히 새로운 트랙으로의 전환

Mojo는 Modular 사가 2023년 5월 선보인 언어입니다. 이 회사의 공동 창업자인 크리스 라트너(Chris Lattner)는 애플의 Swift 언어와 컴파일러 인프라 LLVM의 제작자로, 컴파일러 제작 분야에서는 홈그라운드 경기를 치르는 셈입니다. Mojo의 속도는 상술한 세 가지 ‘지연 요인’을 하나씩 해체한 데서 나옵니다.

Mojo는 컴파일 언어입니다. 프로그램 전체를 미리 기계어로 번역한 후 실행하므로 번역 오버헤드는 한 번만 지불합니다. 이것이 1단계 가속입니다. 그 뒤에 위치한 MLIR이라는 컴파일러 하부 구조는 2단계 가속을 가져옵니다. 동일한 코드에서 컴파일러가 일반 PC의 CPU, 그래픽카드의 GPU, 각종 AI 전용 칩 등 다양한 칩에 맞춰 가장 적절한 기계어 명령을 각각 생성합니다. 과거의 방식이 “브랜드별 주방마다 레시피를 따로 쓰는” 것이었다면, MLIR은 “하나의 레시피로 모든 주방에 자동 맞춤”하는 방식입니다.

또한 Mojo는 라벨을 붙이는 정적 타입과 Rust 스타일의 메모리 관리 방식을 도입했습니다. 컴파일러가 실행 전에 각 데이터의 타입을 알고 있으므로 사전에 대량의 최적화를 진행할 수 있으며, 흔한 메모리 오류를 컴파일 단계에서 차단할 수 있습니다. 개발자 입장에서 1.0 정식 버전은 문법이 더 이상 자주 바뀌지 않아 장기 프로젝트에 도입하기 적합하다는 실용적인 의미도 갖습니다.

인간적인 요소도 고려되었습니다. Mojo의 문법은 Python과 최대한 유사하게 설계되어 Python 개발자가 새로운 ‘외국어’를 처음부터 배울 필요가 없습니다. 물론 공식 로드맵의 표현도 조용히 변경되었습니다. 처음에는 “Python의 완전한 상위 집합(superset)“이 되겠다고 했으나, 현재는 “완전한 상위 집합이 될지 여부는 미정”이라고 적혀 있습니다. 이는 Mojo가 ‘빠른 Python’이라는 초기 구상에서 ‘Python을 닮은 새로운 언어’로 거리를 두고 있음을 뜻합니다.

Mojo의 속도는 트랙 자체를 바꾸는 데서 나옵니다. 번역 방식, 타입 시스템, 하드웨어 맞춤을 모두 다시 시작한 것입니다. 고속철도의 속도 향상 논리가 그렇듯, 트랙 시스템이 바뀌면 속도의 차원이 달라집니다. Mojo의 메인 무대는 AI 칩 프로그래밍입니다. 현재 그래픽카드용 프로그램을 작성하려면 엔비디아의 전용 언어인 CUDA를 거쳐야 해서 특정 칩 제조사에 귀속됩니다. Mojo가 목표로 하는 것은 하나의 코드로 모든 칩에서 구동되는 대체재를 제공하는 것입니다.

35,000배는 진짜다, 하지만 발밑의 ‘트랙’을 바로 봐야 한다

이제 핵심 질문입니다. 이 35,000배라는 숫자는 어떻게 측정된 것일까요?

이 숫자는 2023년 Mojo 공개 당시 공식 데모에서 나온 것으로, 테스트 항목은 유명한 만델브로 집합(Mandelbrot set) 프랙탈 연산이었습니다. 이는 조밀한 수학적 루프 연산입니다.

만델브로 집합 프랙탈 사진: 만델브로 집합 프랙탈 — 35,000배 벤치마크 테스트에 사용된 집중적 수학 연산의 예. 출처: 위키미디어 공용

비교 대상은 ‘순수 Python 손코딩 루프’였습니다. 이는 인터프리터 실행, 타입 체크, 단일 스레드 오버헤드가 삼중으로 중첩되는 Python의 가장 취약한 시나리오입니다. 반면 Python이 NumPy처럼 하단이 C로 최적화된 라이브러리를 사용할 경우, 격차는 35,000배에서 약 12배로 급격히 줄어듭니다. 12배 역시 여전히 상당하지만 완전히 다른 차원의 이야기입니다. 이 비교 조건은 당시 기술 커뮤니티(Slashdot 등)에서도 지적된 바 있습니다.

이것이 의미하는 바는 무엇일까요? 35,000배는 거짓이 아니지만, 모든 상황에 적용되는 보증서라기보다는 특정 트랙에서의 ‘단목 우승’ 상장에 가깝습니다. 대부분의 일반 프로그램은 하드디스크 읽기/쓰기, 네트워크 대기, 데이터베이스 조회에서 병목이 발생하므로 언어를 바꾼다고 해서 속도가 크게 향상되지 않습니다. 이번 1.0 출시에 대해 Hacker News의 108개 댓글 중 많은 이들이 평가를 내렸습니다. 한 사용자는 1.0 출시 공지에 PyTorch(AI 분야의 주요 프레임워크)와의 직접적인 성능 비교조차 제시되지 않았다며 “이것 자체가 많은 것을 설명해 준다”고 지적했고, 또 다른 사용자는 “우리가 이제 1.0이라 부르기로 결정했다는 발표에 불과하다”고 농담조로 평가했습니다.

새 언어가 치러야 할 진짜 전쟁: 생태계, 오픈소스, 그리고 39억 달러

언어 자체의 속도는 입장에 불과합니다. Python은 30년 동안 수십만 개의 기존 라이브러리(이미지 처리, 데이터 분석, 웹, AI 등)를 구축했습니다. 새 언어가 아무리 빠르더라도 이 전체 생태계를 옮겨오는 데는 막대한 비용이 들며, 이는 Python의 가장 깊은 해자이자 Mojo가 넘어야 할 가장 높은 산입니다.

Mojo의 커뮤니티 지표는 나쁘지 않습니다. 표준 라이브러리 오픈소스화 이후 200명 가까운 기여자가 1,100개 이상의 변경 사항을 제출했고 20만 줄 이상의 코드가 수정되었습니다. 하지만 컴파일러 자체는 여전히 비공개 상태이며, 공식 발표에 따르면 2026년 내에 오픈소스화할 예정입니다. 이는 댓글 창에서 가장 집중된 의구심입니다. “컴파일러가 오픈소스화되지 않으면 사용하지 않겠다”는 반응이 반복되고 있으며, 1.0 공지의 헤더 이미지에 대해 “AI 느낌이 너무 강해 마케팅 페이지 같다”는 비판도 나왔습니다. 8월 18일 Modular 사가 샌프란시스코에서 개최하는 ModCon 행사에서 오픈소스 관련 소식이 나올지 주목받고 있습니다.

또한 피할 수 없는 사건이 있습니다. 2026년 7월 29일, 칩 거인 퀄컴(Qualcomm)이 39억 달러에 Modular 인수 절차를 완료했으며 창업자 라트너가 퀄컴 임원으로 취임했습니다. 이를 두고 “인재 인수(acqui-hire)이며 제품은 방치될 수 있다”는 시선도 있고, “막대한 금액은 시장의 기대를 입증한다”는 평가도 있습니다. 일반 독자들에게 이 거래는 한 가지 명확한 신호를 전달합니다. “하나의 코드로 모든 칩을 구동한다”는 구상을 제대로 실현하는 것에는 엄청난 상업적 가치가 존재한다는 점입니다.

마치며

Mojo에 대해 섣불리 결론을 내릴 수는 없습니다. 1.0은 경이로운 이정표이지만 긴 언어 경쟁의 한 정거장에 불과합니다. 언어의 경쟁이 당장 일반 사용자 손의 소프트웨어를 바꾸지는 않습니다. Python은 새로운 언어의 등장으로 사라지지 않으며, 이미 AI와 데이터 세계의 기초가 되었습니다. Mojo의 성패는 향후 2년 동안 생태계가 확장될 수 있는지, 그리고 컴파일러 오픈소스 약속이 이행되는지에 달려 있습니다.

코드를 작성하지 않는 독자들에게 이 사건에서 기억할 만한 점은 또 다른 차원에 있습니다. 누군가 “35,000배 빠르다”와 같은 숫자를 제시할 때, “어떤 상황에서, 누구와 비교하여, 무엇을 측정한 것인가?”라고 물어볼 필요가 있습니다. 숫자 뒤에 숨겨진 조건은 숫자 자체보다 훨씬 더 정직합니다.

참고 링크:

  • Modular 공식 블로그 《Modular 26.5: Mojo 1.0 is here!》
  • Hacker News 커뮤니티 토론 《Mojo 1.0》(item id 49261128)
  • 위키백과 《Mojo (programming language)》 항목
  • Slashdot 초기 보도: Mojo 출시 및 35,000배 숫자에 대한 커뮤니티 토론
  • 퀄컴의 39억 달러 Modular 인수 관련 보도