최근 수정 시각 : 2024-07-19 12:08:57

Mojo(프로그래밍 언어)

프로그래밍 사이트 선정 프로그래밍 언어 순위 목록
{{{#!wiki style="margin: 0 -10px -5px; word-break: keep-all"
{{{#!wiki style="display: inline-table; min-width: 25%; min-height: 2em;"
{{{#!folding [ IEEE Spectrum 2024 ]
{{{#!wiki style="margin: -5px 0"
<rowcolor=#fff> 스펙트럼 부문 상위 10개 프로그래밍 언어 직업 부문 상위 10개 프로그래밍 언어
1 Python 1 SQL
2 Java 2 Python
3 JavaScript 3 Java
4 C++ 4 TypeScript
5 TypeScript 5 SAS
6 SQL 6 JavaScript
7 C# 7 C#
8 Go 8 HTML
9 C 9 Shell
10 HTML 10 C++
}}}
}}}
}}}
[ Stack Overflow 2024 ]
||<tablewidth=100%><width=9999><-4><bgcolor=#FFA500><tablebgcolor=#fff,#222> 2024년 Stackoverflow 설문조사 기준 인기 상위 25개 프로그래밍 언어 ||
1 JavaScript 14 Rust
2 HTML, CSS 15 Kotlin
3 Python 16 Lua
4 SQL 17 Dart
5 TypeScript 18 어셈블리어
6 Bash 19 Ruby
7 Java 20 Swift
8 C# 21 R
9 C++ 22 Visual Basic
10 C 23 MATLAB
11 PHP 24 VBA
12 PowerShell 25 Groovy
13 Go
[ TIOBE 2024 ]
||<tablewidth=100%><width=9999><-4><bgcolor=deepskyblue><tablebgcolor=#fff,#222> 2024년 8월 기준 검색어 점유율 상위 20개 프로그래밍 언어 ||
1 Python 11 MATLAB
2 C++ 12 Delphi / Object Pascal
3 C 13 PHP
4 Java 14 Rust
5 C# 15 Ruby
6 JavaScript 16 Swift
7 SQL 17 Assembly language
8 Visual Basic 18 Kotlin
9 Go 19 R
10 Fortran 20 Scratch
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px);"
{{{#!folding [ 21위 ~ 50위 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
21 COBOL 36 Scala
22 Classic Visual Basic 37 Transact-SQL
23 LISP 38 PL/SQL
24 Prolog 39 ABAP
25 Perl 40 Solidity
26 (Visual) FoxPro 41 GAMS
27 SAS 42 PowerShell
28 Haskell 43 TypeScript
29 Dart 44 Logo
30 Ada 45 Wolfram
31 D 46 Awk
32 Julia 47 RPG
33 Objective-C 48 ML
34 VBScript 49 Bash
35 Lua 50 Elixir
}}}}}}}}} ||
[ PYPL 2024 ]
||<tablewidth=100%><width=9999><-4><bgcolor=green><tablebgcolor=#fff,#222> 2024년 8월 기준 검색어 점유율 상위 20개 프로그래밍 언어 ||
1 Python 11 Objective-C
2 Java 12 Go
3 JavaScript 13 Kotlin
4 C# 14 MATLAB
5 C/C++ 15 PowerShell
6 R 16 VBA
7 PHP 17 Dart
8 TypeScript 18 Ruby
9 Swift 19 Ada
10 Rust 20 Lua

}}} ||
프로그래밍 언어 목록 · 분류 · 문법
모조
Mojo
파일:Mojo_logo_black_revision.png파일:Mojo_logo_revision.png
<colbgcolor=#fff,#1f2023> 개발 크리스 래트너
출시일
파일:홈페이지 아이콘.svg | 파일:GitHub 아이콘.svg파일:GitHub 아이콘 화이트.svg
1. 개요2. 역사3. 상세4. 사용 방법5. 여담6. 관련 문서

[clearfix]

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처럼 비호환성으로 문제가 되는 일이 없어지기 때문.

현재 모듈러 공식 웹페이지에서 설치 및 사용이 가능하며, 꾸준한 기능 추가와 업데이트가 이루어지는 중이다.

파이썬 개발자들 스스로 반 농담상 '느린 언어'라고 자조하긴 하지만 실제로 구현체뿐만이 아니라 구조적으로도 문제가 다수 있었고(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은 아직이다.#

한국시간 2024년 3월 29일 기준 핵심 구성요소가 오픈소스로 풀렸다! Github

5. 여담

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

6. 관련 문서


[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 확장기능을 설치해서 사용해야 한다.