
Познакомьтесь с Mojo: язык, который может заменить Python, C ++ и Cuda
25 июня 2025 г.Почему моджо все меняет
Итак, вот в чем дело - Python потрясающий, но он мучительно медленно.
Вы знаете это, я знаю это, все это знают.
Введите Mojo, запущенный в мае 2023 года блестящими умами в модульном ИИ.
Это не просто еще один язык программирования - это преобразование супергероя Python.
Созданный Крисом Латтнером (да, гений Swift и LLVM), Mojo родился из простого разочарования: почему мы должны выбирать между легкостью Python и скоростью C ++?
Добро пожаловать в Mojo - язык программирования, который обеспечивает быстрый и портативный код ЦП+графического процессора на нескольких платформах.
Но подождите, есть еще.
Ваш существующий код Python работает в Mojo без изменения одной строки.
Ноль.
Нада.
Ничего не меняется!
Думайте о Моджо как о Python, который попал в спортзал, выучил боевые искусства, и вернулся в 1000 -х сильнее, оставаясь тем же дружелюбным человеком, которого вы знаете и любите.
Команда в Modular не собиралась создавать язык - им нужны были лучшие инструменты для их платформы для искусственного интеллекта, поэтому они создали Ultimate Tool.
Не только Mojo работает с Python, вы также можете получить доступ к программированию низкого уровня для графических процессоров, TPU и даже ASIC.
Это означает, что вам больше не понадобятся C, C ++, CUDA или металл, чтобы оптимизировать генеративные рабочие нагрузки AI и LLM.
Принять Mojo - и ров Cuda исчез, и программирование на уровне аппаратного обеспечения упрощено.
Насколько это круто?
Ваш первый вкус моджо
Давайте начнем с того, что вы уже знаете:
fn main():
print("Hello, Mojo! 🔥")
Похоже на Python, верно?
Это потому, что это буквально синтаксис Python.
Ваша мышечная память уже обучена.
Вот где это становится разным - переменные с суперспособными:
fn main():
let name = "Mojo" # This is immutable and blazing fast
var count: Int = 42 # This is mutable with type safety
let pi = 3.14159 # Smart enough to figure out the type
print("Language:", name, "Count:", count, "Pi:", pi)
Увидеть этоlet
ключевое слово?
Это говорит компилятору «это никогда не меняется», что открывает магию серьезной оптимизации.
Аvar
Ключевое слово говорит: «Это может измениться», но вы можете добавить типы для дополнительной скорости, когда вам это нужно.
Теперь вот где это становится интересным - двойные функциональные режимы:
fn multiply_fast(a: Int, b: Int) -> Int:
return a * b # Compiled, optimized, rocket-fast
def multiply_python(a, b):
return a * b # Good old Python flexibility
fn main():
print("Fast:", multiply_fast(6, 7))
print("Flexible:", multiply_python(6, 7))
Использоватьfn
Если вы хотите максимальную скорость с безопасностью типа.
Использоватьdef
Когда вы хотите гибкости Python.
Вы можете буквально смешивать и сочетать в той же программе.
Начните сdef
, оптимизировать сfn
позже.
Вот интересная петля:
fn main():
let numbers = List[Int](1, 2, 3, 4, 5)
var total = 0
for num in numbers:
total += num[] # That [] tells Mojo to optimize aggressively
print("Numbers:", numbers, "Sum:", total)
# This loop processes a million items faster than Python can blink
for i in range(1000000):
pass # Automatically vectorized by the compiler
Это явное[]
Синтаксис может выглядеть странно, но это ваше секретное оружие для того, чтобы сказать компилятору именно то, что вы хотите оптимизировать.
Изменяющие игру особенности моджо
Есть причины, по которым Mojo, когда он полностью развит, может захватить весь мир.
Совместимость с нулевой стоимостью Python (ваши знания о программировании безопасны)
Помните все те библиотеки Python, которые вы любите? Они все еще работают:
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
fn main():
let data = np.array([[1, 2], [3, 4], [5, 6]])
let df = pd.DataFrame(data, columns=['x', 'y'])
let model = LinearRegression()
print("All your favorite libraries work instantly!")
Это огромно.
Нет миграционных головных болей, не переписывая миллионы строк кода.
Ваши массивы Numpy, DataFrames Pandas и модели Scikit-Learn работают точно так же, как всегда.
Разница?
Теперь они могут работать вместе с кодом, который в 1000 раз быстрее, когда вам это нужно.
Симд векторизация сделана простой (параллельная обработка для смертных)
Проверьте это - автоматическая параллельная обработка:
from algorithm import vectorize
from sys.info import simdwidthof
fn vector_magic():
alias size = 1000000
var a = DTypePointer[DType.float32].alloc(size)
var b = DTypePointer[DType.float32].alloc(size)
var result = DTypePointer[DType.float32].alloc(size)
@parameter
fn vectorized_add[width: Int](i: Int):
let a_vec = a.load[width=width](i)
let b_vec = b.load[width=width](i)
result.store[width=width](i, a_vec + b_vec)
vectorize[vectorized_add, simdwidthof[DType.float32]()](size)
Что@parameter
Декоратор делает магию с компиляцией - он создает специализированные версии вашей функции для различных архитектур процессора.
Ваш код автоматически использует все доступные ядра процессора и инструкции SIMD, не задумываясь об этом.
Эта единственная функция может быть в 8 раз до 128x быстрее, чем эквивалентный код Python.
И многие другие тесты проходят через крышу!
Программирование графического процессора без головной боли
Хотите использовать свой GPU?
Вот как это просто:
from gpu import GPU
from tensor import Tensor
fn gpu_power():
@gpu.kernel
fn matrix_multiply(a: Tensor[DType.float32], b: Tensor[DType.float32]) -> Tensor[DType.float32]:
return a @ b # Just matrix multiplication, but on GPU
let big_matrix_a = Tensor[DType.float32](Shape(2048, 2048))
let big_matrix_b = Tensor[DType.float32](Shape(2048, 2048))
let result = matrix_multiply(big_matrix_a, big_matrix_b)
Нет программирования CUDA, нет кошмаров по управлению памятью, нет головных болей конфигурации ядра.
А@gpu.kernel
Декоратор автоматически генерирует оптимизированный код GPU для NVIDIA, AMD и Apple GPU.
Тот же код работает на любом графическом процессоре без изменений.
Это революционное и огромное улучшение по сравнению с существующим инструментом!
Параметрическое программирование (шаблоны сделаны правильно)
Теперь Моджо становится действительно умным:
struct SmartMatrix[rows: Int, cols: Int, dtype: DType]:
var data: DTypePointer[dtype]
fn __init__(inout self):
self.data = DTypePointer[dtype].alloc(rows * cols)
fn get(self, row: Int, col: Int) -> SIMD[dtype, 1]:
return self.data.load(row * cols + col)
fn show_parametric_power():
let small_int_matrix = SmartMatrix[10, 10, DType.int32]()
let big_float_matrix = SmartMatrix[1000, 500, DType.float64]()
# Each gets its own optimized code generated at compile time
Компилятор создает совершенно различный оптимизированный код для каждой комбинации параметров.
Ваша целочисленная матрица 10x10 получает различные оптимизации, чем ваша плавающая матрица 1000x500.
Это производительность на уровне шаблона C ++ с более чистым и более читаемым синтаксисом.
Безопасность памяти без сбора мусора
Вот как Mojo предотвращает утечки и сбои памяти:
struct SafePointer[T: AnyType]:
var data: Pointer[T]
fn __init__(inout self, value: T):
self.data = Pointer[T].alloc(1)
self.data.store(value)
fn __moveinit__(inout self, owned other: Self):
self.data = other.data
other.data = Pointer[T]() # Original pointer is now empty
fn __del__(owned self):
if self.data:
self.data.free() # Automatic cleanup
Это безопасность памяти в стиле ржавчины с легкостью использования в стиле Python.
Никаких паусов сбора мусора, без утечек памяти, без использования ошибок.
Память очищается точно, когда вы ожидаете, а не когда какой -то коллектор мусора чувствует себя так.
Адаптивная компиляция (ИИ, который оптимизирует ваш код)
Это серьезные инновации!
@adaptive
fn smart_algorithm(data: List[Int]) -> Int:
var sum = 0
for item in data:
sum += item[]
return sum
А@adaptive
Декоратор сообщает компилятору генерировать несколько версий вашей функции.
Система выполнения профилирует ваше фактическое использование и выбирает самую быструю версию для ваших конкретных шаблонов данных.
Ваш код становится умнее, чем больше он работает!
Расширенные функции, которые делают моджо неудержимым
Вычисление времени компиляции
Хотите перенести работу со времени выполнения, чтобы составить время?
Легкий:
@parameter
fn compile_time_fibonacci(n: Int) -> Int:
@parameter
if n <= 1:
return 1
else:
return n * compile_time_fibonacci(n - 1)
fn main():
alias fib_result = compile_time_fibonacci(15)
print("Fibonacci 15:", fib_result) # Calculated while compiling
Сложные расчеты случаются во время компиляции, а не при запуске вашей программы.
Это означает, что нулевая стоимость выполнения для вещей, которые могут быть выяснены заранее.
Это огромный, дальновидный скачок в дизайне языка программирования.
Я ожидаю, что другие языки программирования будут последовать их примеру!
Система признаков для общего программирования
Черты позволяют написать код, который работает со многими различными типами:
trait Addable:
fn __add__(self, other: Self) -> Self
struct Vector2D(Addable):
var x: Float32
var y: Float32
fn __add__(self, other: Self) -> Self:
return Vector2D(self.x + other.x, self.y + other.y)
fn add_anything[T: Addable](a: T, b: T) -> T:
return a + b # Works with any type that implements Addable
Напишите один раз:
Используйте с любым совместимым типом:
Получите оптимизированный код для каждого конкретного типа.
Прямые операции SIMD
Хотите поговорить напрямую с векторными единицами вашего процессора?
fn simd_playground():
let data = SIMD[DType.float32, 8](1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0)
let squared = data * data
let fma_result = data.fma(data, data) # Fused multiply-add
let shuffled = data.shuffle[4, 5, 6, 7, 0, 1, 2, 3]()
Прямой доступ к инструкциям вектора процессора с безопасностью типа.
Операции, которые потребуют 8 циклов процессора, теперь возьмут 1!
Стандартная библиотека MOJO: простота встречает практичность
Стандартная библиотека включает в себя функции для всех видов задач.
List[T]
Дает вам динамические массивы, которые являются защищенными типами и молниеносными.
Dict[K, V]
Обеспечивает хэш-таблицы, оптимизированные для реальных моделей использования.
String
Обрабатывает как ASCII, так и Unicode эффективно без обычных штрафов на производительность.
Tensor[dtype]
Ваш шлюз к графическому ускорению численных вычислений.
Управление памятью сделано простым
DTypePointer[dtype]
дает вам низкоуровневый контроль с безопасностью высокого уровня.
Buffer[T]
Обеспечивает автоматическое управление памятью для временных данных.
Reference[T]
реализует заимствования с нулевой копией для максимальной эффективности.
Библиотека алгоритмов, которая на самом деле помогает
vectorize
Автоматически распространяет ваши петли по всем доступным ядрам процессоров.
parallelize
Распределяет работу по темам с помощью умной балансировки нагрузки.
sort
Предоставляет специализированные алгоритмы сортировки для различных типов данных и размеров.
Математика и числа, созданные для производительности
Нативная поддержка комплексных чисел, произвольную точность математики и линейная алгебра.
Автоматическая дифференциация для машинного обучения без внешних зависимостей.
Статистические функции, которые являются точными и ярко -быстрыми.
Системная интеграция без компромисса
Файл ввод/вывод, который автоматически оптимизирует для SSD против HDD против сетевого хранилища.
Сетевое программирование с асинхронной/ожидающей поддержки высокопроизводительных серверов.
Кроссплатформенное резьбу, которое на самом деле работает последовательно.
Примеры использования, когда Mojo может доминировать
Машинное обучение, которое масштабирует
- Обучающие модели с более высокой предварительной обработкой данных на 10-1000x (некоторые источники претендуют на 35000x).
- Теперь вы можете предварительно обработать наборы данных, которые занимались часами за считанные минуты.
- Системы вывода в реальном времени обрабатывают миллионы запросов в секунду на обычном оборудовании.
- Компьютерная обработка видеопотоков 4K в режиме реального времени на устройствах.
- Повышение производительности означает, что вы можете делать больше с менее дорогим оборудованием.
Научная революция
- Климатические модели, которые раньше нуждались в суперкомпьютерах, теперь работают на рабочих станциях.
- Моделирование складывания белка с беспрецедентной скоростью и точностью.
- Модели финансового риска с микросекундной точностью для высокочастотной торговли.
- Квантовые симуляции, которые приближаются к производительности фактических квантовых компьютеров (по крайней мере, для обозримого будущего).
Высокопроизводительные веб-сервисы
- Серверы API обрабатывают миллионы одновременных соединений, не нарушая пота.
- Аналитическая обработка в режиме реального времени терабайты данных в час.
- Серверы игры, поддерживающие тысячи игроков с задержкой субмиллисекунды.
- Криптовалютная добыча и валидация блокчейна при максимальной теоретической эффективности.
Edge Computing и IoT Magic
- Умные камеры, которые выполняют обнаружение и отслеживание объектов в реальном времени.
- Автономные системы транспортных средств с критически важными требованиями к производительности.
- Промышленная автоматизация с обработкой датчиков в реальном времени и управлении.
- Медицинские устройства, которые выполняют сложные вычисления в рамках строгих бюджетов питания.
Трансформация финансовых технологий
- Алгоритмические торговые системы с наносекундным временем выполнения.
- Модели оценки риска обрабатывают рыночные данные по мере его прибытия.
- Обнаружение мошенничества анализирует схемы транзакций мгновенно.
- Протоколы DEFI с оптимизированным выполнением смарт -контракта.
Блокчейн и крипто -революция
- Прокачающая производительность позволяет разработчикам заменить Голанга на моджо.
- Программное обеспечение для майнинга Crypto получает огромный импульс с возможностью напрямую манипулировать ASIC.
- Ожидайте Mojo SDK для всех крипто -майнинговых рамок.
- Безопасность памяти моджо, заимствованная у ржавчины, должна ускорить принятие.
Квантовое усыновление ИИ
- Самая большая революция в квантовых вычислениях - Quantum AI, где Mojo - идеальное совпадение.
- Существующие библиотеки Python имеют полную совместимость, такую как IBM Qiskit и Google CIRQ.
- Квантовые вычисления могут быть легко смоделированы с помощью графических процессоров, где моджо - король.
- Квантовые вычисления могут увидеть повышение производительности 100x-10000x.
Генеративное ускорение ИИ
- DeepSeek смог работать дешево из-за оптимизации GPU низкого уровня.
- С моджо эта оптимизация низкого уровня доступна для всех.
- Рус Куда может исчезнуть в течение ночи.
- Самая умная вещь, которую NVIDIA может сделать, - это принять сами Моджо и Макса!
Начало работы: ваше путешествие начинается сейчас
Установка удивительно проста
В настоящее время Mojo работает на Linux (Ubuntu 18.04+, Centos 7+) и MacOS (10,15+).
Скоро наступит поддержка Windows - команда работает над этим.
И когда это произойдет - я вижу во всем мире усыновление.
И в долгосрочной перспективе я также вижу развертывание мобильных устройств, Edge и IoT!
Вам понадобится 8 ГБ оперативной памяти, 16 ГБ рекомендуется для плавного сборника.
Установка занимает менее 5 минут с официальным установщиком.
Настройка вашей среды разработки
# Install the Modular SDK
curl -fsSL https://get.modular.com | sh -
modular install mojo
# Check if everything works
mojo --version
mojo run --help
Полностью изготовленный отладчик LLDB включен с Mojo, а также прекрасно интегрированная поддержка завершения кода с Hover и Doc Hints.
Расширение кода VS дает вам выделение синтаксиса, проверку ошибок и интегрированную отладку.
Создание вашего первого проекта
# Start a new project
mkdir awesome-mojo-project && cd awesome-mojo-project
mojo package init my-package
# Build and run
mojo build main.mojo
./main
Система пакетов автоматически обрабатывает зависимости, управление версиями и кроссплатформенным распределением.
Тестирование вашего кода
from testing import assert_equal
fn test_addition():
assert_equal(2 + 3, 5)
print("Math still works!")
fn main():
test_addition()
Встроенная структура тестирования включает в себя возможности сравнительного анализа.
Экосистема моджо-модулярной Github Github
Официальные репозитории
- Модульная платформа (включает в себя Max & Mojo)
- Внести свой вклад в разработку, создав учетную запись на GitHub.
- Основное репо имеет всеобъемлющие документы, примеры и отслеживание проблем.
Компоненты с открытым исходным кодом
- По состоянию на февраль 2025 года компилятор Mojo находится в закрытом испании со стандартной библиотекой с открытым исходным кодом.
- Стандартная библиотека использует лицензию Apache 2.0, поэтому вы можете внести свой вклад и изменять свободно.
- Компания планирует открыть исходные кости на весь язык, как только будет готова более зрелая версия.
Максимальная платформа: инфраструктура AI Enterprise
- Платформа MAX полностью революционизирует инфраструктуру AI AI Gen.
- Затраты уменьшатся, оптимизация оборудования теперь может быть сделана LLMS, контролируемая людьми -экспертами, и:
- Тот же язык, который используется для разных оборудования. (см. ниже)
Multi-Hardware Magic
- Тот же код работает на процессорах, графических процессорах, TPU и пользовательских чипах AI без модификации.
- Автоматическое профилирование находит оптимальную конфигурацию аппаратного обеспечения для вашей рабочей нагрузки.
- Динамическая балансировка нагрузки распределяет работу в смешанных аппаратных средах.
Модель оптимизации трубопровод
- Автоматическое квантование сокращает модели на 75% при сохранении точности.
- Оптимизация графика устраняет избыточные операции и сливает их для скорости.
- Оптимизация макета памяти уменьшает кэш пропускает и улучшает поток данных.
Макс - это не просто архитектура - это зверь!
Инструменты развертывания производства
- Развертывание Kubernetes-Con-Come доступно с автоматическим масштабированием на основе спроса.
- Структура A/B тестирования также предоставляется для сравнения производительности модели в производстве.
- Мониторинг в реальном времени и предупреждение о проблемах производительности.
Функции, представленные в 2025 году
- Улучшенная поддержка модели большой языка с помощью эффективных механизмов внимания.
- Оптимизация вычислений по краям для мобильных и IoT -устройств.
- Бесплатная интеграция с крупными облачными поставщиками.
- Многопользовательская поддержка для обслуживания нескольких моделей из одной инфраструктуры.
Проверка реальности: что Mojo еще не может сделать - но со временем будет
Ограничения платформы
- Поддержка Windows все еще находится в разработке, что ограничивает принятие предприятий.
- По моему мнению, как только поддержка Windows будетвзорваться.
- И вы уже можете запустить Mojo в Windows с подсистемой Windows для Linux (WSL)!
- Мобильные платформы (iOS и Android) еще не поддерживаются для развертывания Edge.
- У некоторых облачных провайдеров нет доступных моно-оптимизированных экземпляров.
Экосистема растут боли
- Сторонняя библиотечная экосистема крошечная по сравнению с обширным хранилищем Python.
- Документация имеет пробелы, особенно для продвинутых функций.
- У Stack Ouplow есть меньше ответов на моджо, чем вы хотели бы.
Ограничения инструмента
- Поддержка IDE в основном против кода с основной функциональностью.
- Инструменты профилирования и отладки менее зрелые, чем устоявшиеся языки.
- Управление пакетами новее и менее богато функциями, чем PIP или Conda.
Проблемы кривой обучения
- Функции могут быть объявлены с использованием либо FN, либо DEF, причем FN обеспечивает сильное набор печати - эта двойственность сбивает с толку новичков.
- Понимание, когда использовать
let
противvar
VS VS Python в стиле занимает практику. - Концепции владения памятью являются новыми для разработчиков языков, созданных мусором.
Корпоративные зависимости
- Тяжелая зависимость от дорожной карты модуля для эволюции языка.
- Неопределенность в отношении долгосрочных обязательств с открытым исходным кодом против коммерческих интересов.
- Потенциальная блокировка поставщика для проектов с использованием максимальной платформы значительно.
Производительность Gotchas
- Некоторые библиотеки Python еще не были оптимизированы для характеристик Моджо.
- Компиляция JIT может повлиять на время запуска для краткосрочных сценариев.
- Использование памяти может быть выше, чем Python в определенных сценариях.
Будущее яркое: что будет дальше
Python и Mojo напоминают мне C и C ++, но для генеративного AI вместо ООП.
Краткосрочные победы (2025-2027)
Windows и Mobile Support будут разблокировать рынки корпоративных и краев.
Университеты начнут преподавать Mojo, создавая новое поколение разработчиков.
Крупные компании по искусственному ИИ заменит узкие места Python на реализации Mojo.
Экосистема достигнет критической массы с сотнями готовых к производству библиотек.
Среднесрочное преобразование (2027-2030)
Mojo стремится стать полным суперсет питона с собственной динамически растущей экосистемой инструментов.
Новые проекты AI/ML по умолчанию по умолчанию в Mojo для производительности производства.
Научные вычисления будут постепенно мигрировать из Фортрана и C ++ в Mojo.
Облачные провайдеры будут предлагать моджоптимизированные случаи со специализированным ускорением.
Долгосрочная революция (2030+)
Моджо может стать ориентированным языком для критических приложений везде.
Производители оборудования будут проектировать чипы с моджо-специфическими функциями.
Язык будет влиять на дизайн языка программирования следующего поколения.
Школы будут преподавать Mojo как основной вычислительный язык.
Потенциальные проблемы впереди
Существует ограниченная конкуренция со стороны Юлии, ржавчины, углерода и других языков производительности, и причина, по которой я говорю, ограниченность, из -за поддержки Mojo для Python.
Но Mojo необходимо сбалансировать совместимость с питоном с потребностями в эволюции языка.
Сообщество с открытым исходным кодом и требования к коммерческой платформе должны быть сбалансированы.
Следует поддерживать разнообразные аппаратные архитектуры, а также стратегии оптимизации.
Заключение: почему моджо все меняет
Вот итог: Mojo устраняет ложный выбор между фрагментацией системы и производительностью системы.
Ваши навыки на питоне остаются ценными - они становятся просто более сильнее.
Улучшение производительности 10-10000x открывают приложения, которые были ранее невозможны.
Модель программирования Unified CPU+GPU упрощает современные ИИ и научные вычисления.
Даже в блокчейне и крипто -майнинге прямой доступ к графическим процессорам и ASICS дает Mojo огромное преимущество.
Справочный список Криса Латтнера со Swift и LLVM дает уверенность в будущем Моджо.
Время идеальное - требования ИИ, потребности в вычислении по крае и требования к повышению производительности разработчиков сходятся.
А генеративное искусство ИИ, поедающее мир, является идеальным вариантом использования для Mojo.
Я считаю, что развивающиеся страны, такие как Индия, должны принять Mojo вместо Cuda, чтобы построить свои LLM, LMM и SLM.
Это не только заставляет нас меньше полагаться на NVIDIA, но и вычислительные затраты также уменьшатся из -за более высокой производительности.
Функция безопасности Rust Memory и совместимость с Python-это глазурь и вишня на торте.
Как только Mojo будет доступен для Windows, я вижу ускоренное поглощение во всей индустрии программирования.
И основной причиной этого является 100% поддержка чистого питона.
Если модульный делает все правильно, и открывает весь код:
Я вижу, что Моджо оказывает огромное влияние.
Во всем мире.
Если вы не начали с Mojo, сделайте это сегодня!
Реальный вопрос не заключается в том, добьется ли Моджо.
Это будет готово, будет ли вы, когда это трансформирует вашу отрасль.
И это больше не вопрос, если, но когда.
Если не приписано другим источникам, изображения были сгенерированы Leonardo.ai по этой ссылке:https://app.leonardo.ai/
Claude Sonnet 4 использовался в этой статье с тяжелым редактированием, модель доступна здесь:https://claude.ai/
Оригинал