Представьте себе мир, в котором программировать весь стек машинного обучения и инфраструктуры искусственного интеллекта так же просто, как написать простой код. Мир, в котором программисты могут больше сосредоточиться на создании и инновациях, а не на борьбе со сложностями различных языков и фреймворков. Что ж, это мир, который Modular, дальновидная технологическая компания, стремится создать.

После многих лет исследований и разработок компания Modular наконец-то представила Mojo — революционный язык программирования, предназначенный для объединения мировой инфраструктуры машинного обучения и искусственного интеллекта. В отличие от существующих языков, которые требуют использования нескольких фреймворков и библиотек, Mojo упрощает весь процесс, предлагая универсальное решение для программирования всего стека машинного обучения и инфраструктуры искусственного интеллекта.

Что отличает Mojo от других языков, так это его мощное метапрограммирование во время компиляции, интеграция методов адаптивной компиляции, кэширование на протяжении всего процесса компиляции и другие функции, которые не поддерживаются существующими языками. С Mojo разработчики теперь могут писать код, который не только эффективен и действенный, но и более прост для понимания и сопровождения.

Появление Mojo было встречено с волнением и ожиданием в технологической отрасли, и многие предсказывают, что он произведет революцию в нашем подходе к машинному обучению и программированию искусственного интеллекта. По мере того, как все больше разработчиков начинают использовать этот новый язык, мы можем только представить, какие бесконечные возможности откроются.

Одной из основных целей Mojo является решение проблем, связанных с гетерогенными системами, широко распространенными в машинном обучении. Это означает создание модели программирования, ориентированной на ускорители, ЦП и другие устройства ускорения ИИ. Mojo также стремится обеспечить полную совместимость с экосистемой Python, предсказуемую низкоуровневую производительность и низкоуровневый контроль, а также возможность развертывания подмножеств кода в ускорителях.

Mojo построен на совершенно новой кодовой базе, но концептуально он не начинается с нуля. Используя Python, Mojo может значительно упростить усилия по проектированию, поскольку большая часть синтаксиса уже определена. Mojo извлекает выгоду из огромной работы над другими языками, такими как Clang, Rust, Swift, Julia, Zig, Nim и т. д., и использует экосистему компилятора MLIR.

Mojo уже поддерживает многие основные функции Python, включая асинхронность/ожидание, обработку ошибок, вариативность и т. д. Однако он все еще очень ранний, и в нем отсутствуют многие функции. Mojo еще даже не поддерживает классы! Mojo также намеренно отличается от Python, и команда, стоящая за ним, стремится ввести новые ключевые слова и добавить несколько грамматических производств.

Одной из самых захватывающих особенностей Mojo является его потенциал для предоставления расширенного набора Python и немедленного включения CPython для поддержки длинной экосистемы. Для программиста на Python ожидается, что Mojo будет сразу знаком, а также предоставит новые инструменты для разработки кода системного уровня, которые позволят вам делать то, для чего Python возвращается к C и C++. Mojo не пытается убедить мир в том, что «статический — это хорошо» или «динамический — это хорошо» — убеждение в том, что и то и другое хорошо, когда используется для правильных приложений, и что язык должен позволять программисту делать выбор.

Подход Mojo к метапрограммированию

Одной из ключевых особенностей Mojo является его мощное метапрограммирование во время компиляции, которое позволяет программистам писать код, изменяющий другой код до того, как он будет скомпилирован. Это делается с помощью функции, называемой макросами, которая позволяет программисту писать код, который генерирует другой код.

Макросы в Mojo похожи на макросы в других языках программирования, таких как C и Lisp, но с некоторыми ключевыми отличиями. Например, в Mojo макросы всегда гигиеничны, что означает, что они не мешают другому коду в программе. Это делает макросы более надежными и простыми в использовании, чем в других языках, где они могут вызывать непреднамеренные побочные эффекты.

Макросы Mojo также интегрированы с остальной частью языка, что позволяет программистам использовать их для создания кода, использующего преимущества других функций Mojo, таких как адаптивная компиляция и кэширование.

Будущее Mojo

Mojo по-прежнему является относительно новым языком, и предстоит проделать большую работу для достижения его высоких целей. Однако команда Modular стремится сделать Mojo первоклассным языком для машинного обучения и системного программирования и активно работает над улучшением его совместимости с Python и поддержкой ускорителей.

По мере того, как все больше разработчиков начинают использовать Mojo и вносить свой вклад в его развитие, мы можем ожидать еще больше инноваций и улучшений в этом захватывающем новом языке. Являетесь ли вы инженером по машинному обучению, системным программистом или просто интересуетесь изучением новых языков программирования, на Mojo определенно стоит обратить внимание.