Mojo: общая характеристика
Статья рассчитана на читателя, имеющего базовые знания о программировании, в частности о языке Python.
Mojo предназначен для решения множества задач по разработке ИИ, с которыми не может справиться ни один другой язык. Дело в том, что Mojo — это первый язык программирования, созданный с нуля с использованием MLIR (multi-level intermediate representation — мультиуровневое промежуточное представление) — инфраструктуры компилятора, которая идеально подходит для гетерогенного оборудования, от CPU и GPU до различных ASIC’ов на основе ИИ. Mojo разработан как расширенная версия Python, так как его создатели являются приверженцами Python и его сообщества. Но им не удалось улучшить Python настолько, чтобы воплотить все свои идеи.
Поскольку Mojo — это продвинутый Python++, знающим Python многое в коде Mojo покажется знакомым. Однако Mojo в первую очередь предназначен для программирования высокопроизводительных систем со множеством особенностей — строгой проверкой типов, безопасностью памяти, технологиями компилятора нового поколения и многими другими. Это сближает Mojo с такими языками, как C++ и Rust.
Синтаксис Mojo
Чтобы понять основную логику синтаксиса Mojo, выведем “Hello World!”.
Как уже упоминалось, Mojo является расширенной версией Python, поэтому синтаксис у него почти такой же.
$ mojo
Welcome to Mojo! 🔥
Expressions are delimited by a blank line.
Type `:quit` to exit the REPL and `:mojo help repl` for further assistance.
1> print("Hello, world!")
2.
Hello, world!
Объявление функций в Mojo
Функции в Mojo могут быть объявлены с помощью fn
или def
.
def greet(name):
return "Hello, " + name + "!"
fn greet2(name: String) -> String:
return "Hello, " + name + "!"
Оба варианта имеют одинаковый вывод.
Для получения более подробной информации о синтаксисе и его обновлениях обратитесь к официальной документации Mojo.
Сравнение производительности Mojo и Python
Разработчики Mojo заявляют о значительном приросте производительности по сравнению с Python в определенных сценариях.
Это подтверждают приведенные ниже данные из официальной документации Mojo.
Другие возможности Mojo
1. Удобство использования и программирования
Mojo позволяет писать все на одном языке.
Пишите на Python или масштабируйте до “голого железа”. Программируйте множество низкоуровневых аппаратных средств ИИ. Не требуется ни C++, ни CUDA.
2. Высокая производительность
Mojo снимает ограничения производительности Python.
Используйте всю мощь аппаратного обеспечения, включая несколько ядер, векторные блоки и экзотические ускорители, самый передовой в мире компилятор и гетерогенную среду выполнения. Достигните производительности на уровне C++ и CUDA без лишних сложностей.
3. Полная совместимость с Python
Mojo предоставляет доступ ко всей экосистеме Python.
Оцените истинную совместимость с экосистемой Python. Убедитесь в бесшовном взаимодействии произвольно выбранных библиотек, например NumPy или Matplotlib, и вашего пользовательского кода с Mojo.
Вот пример MAKE_PLOT:
def make_plot(m: Matrix):
plt = Python.import_module("matplotlib.pyplot")
fig = plt.figure(1, [10, 10 * yn // xn], 64)
ax = fig.add_axes([0.0, 0.0, 1.0, 1.0], False, 1)
plt.imshow(image)
plt.show()
make_plot(compute_mandelbrot())
Сообщество Mojo
Mojo уже доступен для Linux и Mac OS и, надеемся, в скором времени будет доступен и для пользователей Windows.
Mojo впервые заявил о себе в августе 2023 года. Его предварительная версия была выпущена 28 марта 2024 года, за 13 дней до этой статьи. С момента появления языка растет его сообщество, продолжая расширяться благодаря недавнему релизу Mojo.
Более 300 проектов с открытым исходным кодом создано сообществом Mojo.
Чтобы увидеть другие проекты сообщества, кликните здесь.
Заключение
Изучите функционал Mojo, чтобы расширить возможности Python в процессе постижения науки о данных. Помните: оба языка обладают уникальными преимуществами, предлагая обширную экосистему Python для давно сформировавшихся проектов и потенциальную скорость Mojo для передовых исследований. Надеюсь, пока Mojo находится в стадии разработки, эта статья поможет вам принять взвешенное решение о том, какой инструмент наиболее подходит для ваших нужд.
Читайте также:
- Графовые сверточные сети: введение в GNN
- Преобразование речи в текст с помощью ИИ на Python: пошаговый гайд
- Генерация ответа, дополненная результатами поиска (RAG): от теории к реализации на LangChain
Читайте нас в Telegram, VK и Дзен
Перевод статьи M Awais Nazir: Will ‘Mojo’ Programming Language be going to replace ‘Python’