Несколько дней назад появилась новость о том, что Крис Латтнер, основатель и главный архитектор LLVM и Тим Дэвис, бывший руководитель проектов искусственного интеллекта в Google выпустил «Mojo», новый язык программирования, на основе Python, который устраняет проблемы с реализацией и производительностью Python.
Упоминается, что Моджо что сочетает в себе простоту использования для исследований и разработок и быстрое прототипирование с адекватностью для высокопроизводительных конечных продуктов. Первое достигается за счет использования знакомого синтаксиса языка Python, а второе — за счет возможности компиляции в машинный код, механизмов безопасного управления памятью и использования средств аппаратного ускорения вычислений.
О Моджо
Этот новый язык программирования фокусируется на использовании для разработки машинного обучения, но даe представлен как язык общего назначения который расширяет возможности языка Python при системном программировании и подходит для широкого круга задач.
Например, язык применим к таким областям, как высокопроизводительные вычисления, обработка данных и преобразование данных. Интересной особенностью Mojo является возможность указать символ эмодзи «🔥» в качестве расширения для файлов кода.
Проект рассчитан на задействование аппаратных ресурсов систем, имеющихся в системе в расчетах. Например, графические процессоры, специализированные ускорители машинного обучения и инструкции векторной обработки (SIMD) могут использоваться для запуска приложений Mojo и распараллеливания вычислений.
Причина разработки отдельного подмножества языка Python, а не присоединения к существующей работе по оптимизации CPython, указана как:
Подход к построению, интеграция возможностей программирования системы и использование принципиально иной внутренней архитектуры, позволяющей выполнять код на графических процессорах и различных аппаратных ускорителях. При этом разработчики Mojo намерены максимально придерживаться поддержки CPython.
Mojo можно использовать как в режиме JIT-интерпретации, так и для компиляции в исполняемые файлы. (АОТ, досрочно). Компилятор имеет встроенные современные технологии самооптимизации, кэширования и распределенной компиляции.
Код исходный код на языке Mojo преобразуется в низкоуровневый промежуточный код MLIR (Multi-Level Intermediate Representation), разработанный проектом LLVM и предоставляющий дополнительные функции для оптимизации обработки графов потоков данных.
Использование дополнительных аппаратных механизмов для ускорения вычислений позволяет добиться производительности, которая при интенсивных вычислениях превосходит приложения C/C++.
Крис Латтнер отвечает за создание многих проектов, на которые мы все сегодня полагаемся, хотя мы, возможно, даже не слышали обо всем, что он построил! В рамках своей докторской диссертации он начал разработку LLVM, которая коренным образом изменила способ построения компиляторов и сегодня составляет основу многих наиболее широко используемых в мире лингвистических экосистем.
Затем он выпустил Clang, компилятор C и C++, который работает поверх LLVM и используется большинством ведущих мировых разработчиков программного обеспечения (включая предоставление основы для критически важного для производительности кода) из Google).
При оценке производительности в области устранения неполадок с машинным обучением стек ИИ Modular Inference Engine, написанный на языке Mojo, по сравнению с решением на основе библиотеки TensorFlow оказался в 3 раза быстрее на системе с процессором Intel.
Однако Крис увидел, что C и C++ не в полной мере используют возможности LLVM, поэтому, работая в Apple, он разработал новый язык под названием «Swift», который он описывает как «синтаксический сахар для LLVM».
Стоит отметить, что язык поддерживает статическую типизацию и безопасные низкоуровневые функции памяти которые напоминают функции Rust, такие как отслеживание жизни и заимствование переменных (проверка кредита).
Помимо средств безопасной работы с указателями язык также предоставляет функции для низкоуровневой работы, например, можно получить прямой доступ к памяти в небезопасном режиме с помощью типа указателя, вызвать отдельные инструкции SIMD или получить доступ к аппаратным расширениям, таким как TensorCores и AMX.
В настоящее время, язык находится в стадии интенсивного развития и предлагается только интерфейс онлайн попробовать. В будущем обещают выпустить отдельные сборки для запуска на локальных системах позже, после получения отзывов о работе интерактивной веб-среды.
Открытый исходный код компилятора, JIT и другие связанные с проектом разработки планируются после завершения проектирования внутренней архитектуры (модель разработки закрытого рабочего прототипа напоминает раннюю стадию разработки LLVM, Clang и Swift).
Поскольку синтаксис Mojo основан на Python, а система типов близка к C/C++, в будущем планируется разработать набор инструментов, облегчающих перевод существующих проектов, написанных на C/C++ и Python, в Mojo, а также как разрабатывать гибридные проекты, сочетающие код Python и Mojo.
Наконец, если вам интересно узнать об этом больше, вы можете ознакомиться с подробностями По следующей ссылке.
интересная пирамида это…. (без акцентов)