"Python으로 ML 코드를 짜다 보면 핵심 루프 한 줄 때문에 C++로 다시 옮긴 경험, 다들 한 번씩 있다."
Modular가 만든 Mojo가 1.0 베타로 올라오면서, 이 패턴을 줄여보겠다는 약속이 다시 화제다. 새 언어를 따라가야 할지, 지금 30분만 투자해 감을 잡으면 충분할지 정리해본다.
📌 핵심 3줄 요약
- Mojo 1.0 Beta는 Modular의 AI/시스템용 언어가 API 안정화 단계에 진입했다는 신호다.
- 문법은 Python과 의도적으로 호환되지만,
fn·타입·소유권·SIMD를 1급 시민으로 다뤄 컴파일된다. - 지금 시작한다면 공식 Magic CLI로 설치 → Hello World → 수치 함수 한 개 컴파일까지 30분이면 충분하다.
1. Mojo가 정확히 뭔가
Mojo는 LLVM·Swift를 만든 Chris Lattner 공동창업의 Modular Inc.가 개발하는 언어다. MLIR을 백엔드로 쓰고, Python 문법과 의도적으로 호환되도록 설계됐다. 들여쓰기 블록·def·데코레이터가 그대로 동작한다.
차이는 그 위에 얹힌다. fn 키워드로 strict 타입·소유권 모드를 선택하면 같은 코드가 C++/Rust 수준으로 컴파일된다. SIMD·벡터 연산은 언어의 1급 개념이다. Modular는 이 점을 "AI를 위한 슈퍼셋"이라고 표현한다.

2. 1.0 Beta가 의미하는 것
1.0 Beta는 API 안정화·정식 버전 진입 단계를 뜻한다. 0.x 시기처럼 매주 문법이 흔들리지 않고, 학습한 코드가 정식 버전에서도 그대로 굴러갈 가능성이 높다는 신호다. Beta인 만큼 표준 라이브러리·툴체인은 채워지는 중이다.
또 하나의 흐름은 오픈소스화다. Modular는 Mojo를 Apache 2.0 기반으로 단계적으로 공개해 왔고, GitHub modular/mojo에서 진행 상황을 따라갈 수 있다.
3. 설치와 Hello World
설치 경로는 Magic CLI(또는 modular install)로 통일돼 있다. macOS·Linux는 공식 스크립트 한 줄로 끝나고, Windows는 WSL2를 권장한다.

# 1) Magic CLI 설치 (docs.modular.com/mojo 참고)
curl -ssL https://magic.modular.com/ | bash
# 2) 새 프로젝트
magic init hello_mojo --format mojoproject
cd hello_mojo
# 3) 첫 파일
echo 'fn main():
print("Hello, Mojo")' > main.mojo
# 4) 실행
magic run mojo main.mojo
여기서 fn main()은 strict 모드 함수다. def main():으로 바꿔도 동작하지만, 이때는 Python 호환 모드가 된다.
4. Python과 어디서 갈리나
가장 자주 묻는 질문이다. 표면 문법은 같지만 의도된 차이가 있다.
| 구분 | Python (def) | Mojo (fn) |
|---|---|---|
| 타입 | 동적 | 정적·필수 명시 |
| 변수 | 자유 할당 | var(가변) 명시 |
| 실행 | 인터프리트 | AOT 컴파일 |
| 가속 | NumPy 등 외부 라이브러리 | SIMD·벡터 1급 시민 |
따라서 Mojo의 효용은 "Python 전체 대체"가 아니라, 수치·벡터 핫패스를 같은 언어 안에서 컴파일하고 싶을 때 가장 크다. 공식 데모 기준으로는 mandelbrot 같은 수치 루프에서 큰 격차를 보여주지만, 실제 도입 시 워크로드에 따라 결과가 달라진다.
⚠️ 단점과 주의할 점
- 표준 라이브러리가 얕다 — 파일 I/O·HTTP·DB 드라이버는 아직 Python 생태계 호출에 의존하는 부분이 많다.
- Windows는 1급 지원이 아니다 — WSL2 우회가 표준 경로다.
- 학습 곡선 —
fn·소유권·SIMD를 이해해야 진짜 성능이 나온다.def만 쓰면 Python 대비 큰 이점이 없다. - 정식 1.0 일정은 유동적 — Beta 표기인 만큼 도입 결정 전 공식 블로그 릴리스 노트 확인.
🚀 지금 바로 할 일
- docs.modular.com/mojo에서 OS별 설치 명령을 복사해 30분짜리 Hello World 세션을 잡는다.
- 본인 프로젝트의 가장 느린 수치 함수 1개를 골라
fn+ 타입 명시로 옮겨보고 시간을 비교한다. - github.com/modular/mojo의 Issues·Discussions를 구독해 1.0 정식 일정·Breaking change를 추적한다.
💬 의견
Mojo를 실제 사이드 프로젝트나 ML 파이프라인에 끼워본 분이 있다면, 어떤 작업에서 Python 대비 체감이 크게 났는지 댓글로 공유 부탁드립니다. 다음 글은 "Mojo로 NumPy 함수 한 개를 옮겨보기"를 다룰 예정입니다.
함께 보면 좋은 글
- MCP 시작 가이드 — 외부 API·DB 연동을 Plugins(MCP) 쪽에서 풀고 싶을 때 함께 보면 Skills와의 역할 분담이 분명해진다.
- Cursor 시작 가이드 — 같은 워크플로를 다른 에디터에서 어떻게 만드는지 비교해 보고 싶다면.
- Claude Projects vs Custom GPTs — 컨텍스트 주입 방식이 제품마다 어떻게 다른지 큰 그림을 잡는 데 도움이 된다.
- OpenAI Agents SDK 튜토리얼 — 같은 "에이전트 + 도구" 개념을 OpenAI 쪽에서는 어떻게 표현하는지 대조해 볼 수 있다.
참고 자료
작성자: AI/시스템 프로그래밍 분야의 한국어 기술 블로그 운영자. Python·Rust·C++ 백엔드와 ML 파이프라인을 다루며, 새 언어가 나올 때마다 "정말 내 핫패스를 줄여주는가"를 기준으로 살펴봅니다.
'AI 튜토리얼' 카테고리의 다른 글
| Claude 플러그인 설치·배포 가이드: Skills와 차이 (1) | 2026.05.10 |
|---|---|
| OpenAI Realtime API 음성 모델 시작 가이드 (1) | 2026.05.09 |
| Scrapling 입문: 자가 적응 셀렉터로 깨지지 않는 파이썬 크롤러 만들기 (0) | 2026.05.07 |
| OpenAI Symphony 완벽 가이드: 이슈가 곧 에이전트 파이프라인 (0) | 2026.05.06 |
| Claude Agent Skills 완벽 가이드: 첫 스킬 만들기 (0) | 2026.05.05 |