Mojo(프로그래밍 언어)

덤프버전 :

분류


1. 개요
2. 역사
3. 상세
4. 사용 방법
5. 여담
6. 관련 문서

print('Hello, world!')

웹사이트

1. 개요[편집]


Python의 고질적인 문제인 느린 실행 속도를 개선하기 위해 제작된 파이썬의 수퍼셋(상위 호환) 언어.

2. 역사[편집]


구글 직원이자 LLVM과 Clang의 공동 개발자, Swift의 개발자이기도 한 크리스 래트너(Chris Lattner)가 개발하였다.

래트너가 세운 ML 관련 기업 Modular Inc. 에서 파이썬으로도 C, C++ 등을 빌리지 않고도 빠르게 머신러닝 태스크를 돌릴 수 있도록 제작한 것이 시초였으며, 2022년 9월 내부적으로 처음 공개되었다.#

3. 상세[편집]


가장 큰 특징은 기존의 Python 3.x와 100% 호환된다는 것으로, 이것이 정말 사실이라면 Julia 등 다른 ML 분야 언어들과는 비교도 안 되는 강점을 가지게 된다. 기본의 코드를 수정 없이 그대로 속도만 향상시킬 수 있고 개발자들이 새로운 언어와 문법을 배울 필요도 없으며 무엇보다도 Python 2.x와 Python 3.x처럼 비호환성으로 문제가 되는 일이 없어지기 때문.

다만 현재로서는 한창 개발 중이고, Python의 class 문법조차 지원하지 않으며# 개발중인 컴파일러를 오픈소스가 아닌 자사의 클라우드 내부 주피터에서만 사용할 수 있도록 해 다양한 환경에서의 fuzzing이나 리얼월드 벤치마킹이 불가능한 상태로, Modular쪽의 똑같은 코드가 몇십 배 빠르다! 라는 말을 곧이곧이 믿기에는 다소 무리가 있다. 다만 크리스 래트너는 실제로도 Swift를 성공시킨 전적이 있으니 다소 기대해봐도 좋을 듯.

파이썬 개발자들 스스로 반 농담상 '느린 언어'라고 자조하긴 하지만 실제로 구현체뿐만이 아니라 구조적으로도 문제가 다수 있었고(GIL lock 등), 결국 C/C++ 등의 저수준 언어로 네이티브 라이브러리를 개발하거나 아예 이런 문제를 해결할 새로운 언어를 필요로 했다.[1]

단순한 superset이 아니라 굉장히 저수준적인 컨트롤을 허용하는 것이 특징으로, 전반적으로 문법이나 아이디어 전체가 Rust의 영향을 지대하게 받았다.[2] 우선 소유권lifetime이 있으며 borrow checker마저 존재한다.[3][4]

MLIR를 사용해 C/C++와의 FFI를 지원하며, 기존의 Python 코드도 단순히 import만으로 불러올 수 있다.

기존의 Python 3.x와의 호환성을 위해서 파이썬 코드는 CPython 런타임을 그대로 활용한다. 따라서 Python 종속성이 많다면 그다지 성능에 이점이 없을 수도 있다.[5]

4. 사용 방법[편집]


현재는 오픈소스가 아니며, 당장 사용해 보고 싶다면 waitlist에 등록해야 한다.# 추후 오픈소스할 계획은 있다고 한다.#

웨이트리스트에 간단한 정보를 입력하면 2~3일 내로 답장이 올 것이다. 이메일로 첨부된 링크에서 Jupyter Notebook을 열어 사용해볼 수 있다.

한국시간 2023년 9월 8일 기준 로컬에서 사용할 수 있게 오픈되었다.#1#2[6]

한국시간 2023년 10월 9일 기준 Apple Silicon Mac에서 정식 네이티브를 지원하게 되었다. Intel Mac은 아직이다.#

5. 여담[편집]


확장자는
.mojo
뿐만 아니라 특이하게도
.🔥
(U+1F525) 이모지를 허용한다. 아마 언어 마케팅의 일환일 듯. 참고로 유니코드 이모지는 파일 이름으로 사용할 수 없는 문자가 아니다. 비슷한 난해한 프로그래밍 언어emojicode가 있다(...).

6. 관련 문서[편집]


파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-10-29 19:20:23에 나무위키 Mojo(프로그래밍 언어) 문서에서 가져왔습니다.

[1] Python has some well-known problems—most obviously, poor low-level performance and CPython implementation details like the global interpreter lock (GIL), which makes Python single-threaded. While there are many active projects underway to improve these challenges, the issues brought by Python go deeper and are particularly impactful in the AI field.[2] 사실 Swift 역시 러스트의 영향을 상당히 받은 언어이기도 하다.[3] The Mojo compiler implements a borrow checker (similar to Rust) that prevents code from dynamically forming mutable references to a value when there are immutable references outstanding, and it prevents multiple mutable references to the same value.[4] Mojo has a borrow checker, an influence from Rust, and in that way is dissimilar to Python.[5] We utilize CPython to run all existing Python 3 code without modification and use its runtime, unmodified, for full compatibility with the entire ecosystem. Running code this way provides no benefit from Mojo, but the sheer existence and availability of this ecosystem will rapidly accelerate the bring-up of Mojo, and leverage the fact that Python is really great for high-level programming already.[6] 단 아직 윈도우 운영체제는 지원하지 않기 때문에 vscode에 Mojo 확장기능과 WSL 확장기능을 설치해서 사용해야 한다.