Проблема скорости Python решена?
Python царит в сфере быстрой разработки, но его ахиллесова пята — производительность. Специалисты по Data Science и ML-инженеры регулярно начинают проекты на Python, но упираются в стену, когда критически важна «сырая» скорость. Это вынуждает использовать хрупкую систему из двух языков, где ключевые компоненты переписываются на C++ или CUDA, создавая головную боль при поддержке, так как эти отдельные кодовые базы неизбежно расходятся.
Mojo обещает решить эту фундаментальную дилемму. Его главная концепция: единый Python-подобный язык, который компилируется для высокой производительности как на CPU, так и на GPU. Это позволило бы унифицировать весь рабочий процесс разработки, исключив необходимость переключаться между парадигмами или языками для разных целей выполнения. Это смелое заявление, нацеленное на обеспечение скорости уровня C при сохранении знаменитого удобства разработки на Python.
Самое убедительное доказательство появляется быстро. На стандартном MacBook демонстрация возможностей Mojo включает компиляцию рабочего GPU-ядра с помощью удивительно простого и читаемого кода. Это не теория; язык выполняет GPU-ускоренную функцию, складывая пары чисел, без использования Metal, Swift или CUDA. Это осязаемый «магический момент», который подтверждает обещание по-настоящему унифицированного, высокопроизводительного супермножества Python.
Деконструкция мифа о 68 000-кратном ускорении
Забудьте о вирусном маркетинговом хайпе. Первоначальные заявления Mojo о 35 000-кратном или даже 68 000-кратном ускорении в лучшем случае вводят в заблуждение, а в худшем — неискренни. Эти астрономические цифры возникают при сравнении полностью векторизованного, распараллеленного кода Mojo с нелепо наивным циклом Python с тройной вложенностью. Ни один профессиональный разработчик никогда не стал бы писать такую неоптимизированную реализацию на Python для критически важных задач, что делает эти сравнения бессмысленными.
Более реалистичные бенчмарки, проведенные на M4 Pro, рисуют более ясную картину. Mojo демонстрирует достойное ускорение в ~26,5 раз по сравнению с чистым Python. Важно отметить, что он также работает примерно в 2 раза быстрее, чем NumPy, библиотека, являющаяся фундаментом научного стека Python. Это различие жизненно важно: 26,5 раз — это впечатляюще, но это не те мифические цифры, о которых заявлялось изначально.
Превосходство над NumPy — это главный заголовок Mojo. Сам NumPy полагается на высокооптимизированный скомпилированный код на C для своих основных операций. Mojo не просто превосходит Python; он обходит проверенный в боях C. Это говорит о том, что Mojo достигает своего преимущества за счет превосходного управления памятью и сложных оптимизаций компилятора, превосходя даже высоконастроенный legacy-код.
Qualcomm, Open Source и подозрительные сроки
Крайне необычный, сжатый график омрачает недавние вехи Mojo и требует немедленного изучения. Qualcomm завершила приобретение Modular 29 июля. Всего две недели спустя, 11 августа, был выпущен Mojo 1.0 — при этом его основной компилятор оставался закрытым. Затем, в результате ошеломляющего разворота всего через семь дней, 18 августа, компилятор был внезапно переведен в open-source. Такая быстрая последовательность событий после поглощения — это что угодно, только не типично.
Из-за этих подозрительных сроков возникают две совершенно разные версии событий. Либо это Qualcomm агрессивно продвигает быстрое внедрение Mojo, стратегически устраняя главный барьер для разработчиков (его проприетарную природу)? Или, что более зловеще, это сигнализирует о начальной фазе более крупного корпоративного поглощения, когда инновационная технология Modular может быть вскоре поглощена, а ее долгосрочная траектория и независимое будущее теперь глубоко неопределенны под крылом корпоративного гиганта?
Хотя переход на лицензию Apache 2.0 — это, несомненно, огромная победа в плане прозрачности, которую тепло встретило сообщество разработчиков, остается важная оговорка. Modular прямо заявила, что пока не принимает внешние вклады в компилятор. Это критическое ограничение означает, что, несмотря на открытость исходного кода, проект фактически остается source-available (доступным для просмотра), а не по-настоящему управляемым сообществом, что препятствует совместной разработке, необходимой Mojo для процветания. Дополнительную информацию о языке можно найти на Mojo.
Нравится статья? Получайте такие каждое утро на почту.
одно письмо в день · отписка в два клика · без сторонних трекеров
41 изъян в «стабильном» релизе Mojo
Релиз Mojo 1.0 был объявлен вехой стабильности, однако он вышел с вопиющим противоречием. Этот якобы «стабильный» фундамент включал 41 предупреждение о нестабильном API, помечая такие фундаментальные встроенные функции, как int, print и len. Маркировка ключевых компонентов языка как нестабильных в мажорном релизе — это не просто недосмотр, это серьезный подрыв самого обещания стабильности.
Еще больше подрывает доверие полное удаление ключевого слова fn. Это критическое изменение, затронувшее десятки пакетов, произошло в тот же самый день, когда Mojo пообещала стабильность API, и все это без надлежащего процесса устаревания (deprecation). Такое пренебрежительное отношение к существующей экосистеме разработчиков — тревожный сигнал для любого языка, претендующего на широкое внедрение в продакшн.
Для разработчиков GPU-ядер Mojo предлагает действительно привлекательное решение, которое определенно стоит того, чтобы потратить несколько дней на эксперименты. Идея единого языка для CPU и GPU уникальна и мощна. Однако для более широкого сообщества разработчиков серьезные проблемы со стабильностью Mojo и вопросы непрозрачного управления, связанные с недавним приобретением компании Qualcomm, делают его рискованной ставкой. Этому языку требуется значительное созревание, прежде чем его можно будет считать надежным выбором для продакшена.
Часто задаваемые вопросы
Что такое язык программирования Mojo?
Mojo — это язык программирования, созданный компанией Modular. Он спроектирован как надмножество Python, сочетающее простоту использования Python с высокой производительностью системных языков, таких как C++ и CUDA, в первую очередь для задач ИИ и высокопроизводительных вычислений.
Насколько Mojo быстрее, чем Python?
Хотя ранние маркетинговые заявления обещали ускорение в 35 000 раз и более, они основывались на некорректных сравнениях. Реальные тесты показывают, что Mojo примерно в 26,5 раз быстрее чистого Python и примерно в 2 раза быстрее высокооптимизированного кода NumPy для определенных задач.
Действительно ли Mojo — это open source?
Да. По состоянию на август 2024 года компилятор Mojo, стандартная библиотека и основные компоненты являются открытым исходным кодом по лицензии Apache 2.0. Однако проект пока не принимает внешние вклады в сам компилятор.
Достаточно ли стабилен Mojo 1.0 для продакшена?
Несмотря на номер версии «1.0», Mojo в настоящее время вызывает серьезные опасения по поводу стабильности. Первоначальный релиз включал десятки предупреждений о нестабильном API для основных функций и содержал критические изменения, что делает его рискованным выбором для большинства современных продакшн-сред.

