Руководство Mojo¶
Добро пожаловать в руководство Mojo, ваше полное руководство по языку программирования Mojo🔥!
В сочетании со справочником по Mojo API, эта документация содержит все необходимое для написания высокопроизводительного кода Mojo для центральных и графических процессоров. Если вы видите что-то, что можно улучшить, пожалуйста, сообщите о проблеме или отправьте запрос на получение документов на GitHub.
О Mojo¶
Mojo - это язык системного программирования, специально разработанный для высокопроизводительной инфраструктуры искусственного интеллекта и разнородного аппаратного обеспечения. Его Python-подобный синтаксис упрощает изучение программистам Python и полностью интегрирует существующую экосистему Python, включая множество библиотек для искусственного интеллекта и машинного обучения.
Это первый язык программирования, созданный с нуля с использованием MLIR - современной инфраструктуры компиляторов для разнородного оборудования, от центральных и графических процессоров до других ASIC—систем искусственного интеллекта. Это означает, что вы можете использовать один язык для написания всего своего кода, от высокоуровневых приложений искусственного интеллекта до низкоуровневых ядер графических процессоров, без использования каких-либо аппаратных библиотек (таких как CUDA и ROCm).
Подробнее об этом читайте в документе Mojo vision doc.
Ключевые функции¶
-
Синтаксис и взаимодействие с Python: Mojo использует (и расширяет) синтаксис Python и интегрируется с существующим кодом Python. Совместимость Mojo работает в обоих направлениях, поэтому вы можете импортировать библиотеки Python в Mojo и создавать привязки Mojo для вызова из Python. Читайте о взаимодействии с Python.
-
Типы, основанные на структурах: Все типы данных, включая базовые типы, такие как String и Int, определяются как структуры. В сам язык не встроены никакие типы. Это означает, что вы можете определять свои собственные типы, которые обладают всеми теми же возможностями, что и стандартные библиотечные типы. Подробнее о структурах.
-
Traits с нулевой стоимостью: система трейтов Mojo решает проблему статической типизации, позволяя вам определять общий набор поведений, которые могут реализовывать типы (структуры). Это позволяет вам писать функции, которые зависят от трейтов, а не от конкретных типов, подобно интерфейсам в Java или протоколам в Swift, за исключением проверки типов во время компиляции и отсутствия затрат на производительность во время выполнения. Читайте о трейтах.
-
Владение значением: система владения Mojo гарантирует, что только одна переменная "владеет" определенным значением в данный момент времени, так что Mojo может безопасно освободить значение, когда закончится срок службы владельца, и в то же время позволяет вам обмениваться ссылками на это значение. Это обеспечивает защиту от таких ошибок, как использование после освобождения, двойное освобождение и утечки памяти, без дополнительных затрат на сборщик мусора. Прочитайте о владении.
-
Метапрограммирование во время компиляции: система параметризации Mojo обеспечивает мощное метапрограммирование, при котором компилятор генерирует уникальную версию типа или функции на основе значений параметров, аналогично шаблонам C++, но более интуитивно понятным. Читайте о параметризации.
-
Переносимость аппаратного обеспечения: Mojo разработан с нуля для поддержки разнородного аппаратного обеспечения — компилятор Mojo не делает предположений о том, написан ли ваш код для центральных процессоров, GPU или для чего-то еще. Вместо этого поведение оборудования регулируется библиотеками Mojo, о чем свидетельствуют такие типы, как
SIMD, который позволяет писать векторизованный код для процессоров, и пакетgpu, который позволяет программировать на GPU, не зависящем от аппаратного обеспечения. Читайте о программировании на GPU.
Get started¶
Начните работу с Mojo
Установите Mojo и изучите основы языка, создав полноценную программу Mojo
Начните программировать на GPU
Изучите основы программирования на GPU с Mojo
Головоломки на GPU
Научитесь программировать на графических процессорах в Mojo, решая все более сложные задачи
Совет: Чтобы использовать помощников по вайбкодингу в Mojo, ознакомьтесь с нашим руководством по использованию помощников по программированию с помощью искусственного интеллекта.