Моджо (язык программирования)
Парадигма |
|
---|---|
Семья | Питон |
Разработано | Крис Лэттнер |
Разработчик | Модульная Инк. |
Впервые появился | 2023 |
Предварительный выпуск | 24.4 [1]
/ 24 мая 2024 г |
Дисциплина набора текста | |
ТЫ | Кросс-платформенный |
Лицензия | Собственный |
Расширения имен файлов | .🔥 огня ( эмоджи /U+1F525 символ Юникода ), альтернативно .mojo |
Веб-сайт | www |
Под влиянием | |
Питон , Китон [ нужна ссылка ] , C , C++ , Rust , Swift , Zig |
Mojo — это язык программирования семейства Python , который в настоящее время находится в стадии разработки. [2] [3] [4] Он доступен как в браузерах, так и в блокнотах Jupyter . [4] [5] и локально в Linux и macOS . [6] [7] Mojo стремится объединить удобство использования языков программирования более высокого уровня , в частности Python , с производительностью языков программирования более низкого уровня, таких как C++ , Rust и Zig . [8] Компилятор Mojo в настоящее время имеет закрытый исходный код и стандартную библиотеку с открытым исходным кодом, хотя Modular, компания, стоящая за Mojo, заявила о своем намерении в конечном итоге открыть исходный код самого языка программирования Mojo по мере его развития. [9]
Mojo опирается на структуру компилятора MLIR , а не непосредственно на структуру компилятора LLVM нижнего уровня, как это делают многие языки, такие как Julia, Swift, clang и Rust. [10] [11] MLIR — это новая среда компиляции, которая позволяет Mojo использовать преимущества проходов компилятора более высокого уровня, недоступных только в LLVM, и позволяет Mojo компилировать и ориентироваться не только на процессоры, включая создание кода, который может работать на графических процессорах, TPU, ASIC и других ускорителях. . Он также часто может более эффективно использовать определенные типы оптимизации ЦП напрямую, например SIMD, без прямого вмешательства разработчика, как во многих других языках. [12] [13] По словам Джереми Ховарда из fast.ai, Mojo можно рассматривать как «синтаксический сахар для MLIR», и по этой причине Mojo хорошо оптимизирован для таких приложений, как AI. [14]
История происхождения и развития
[ редактировать ]Язык программирования Mojo был создан компанией Modular Inc, которую основали Крис Латтнер , первоначальный архитектор языка программирования Swift и LLVM , и Тим Дэвис, бывший сотрудник Google . [15]
Согласно общедоступным журналам изменений, разработка Mojo началась в 2022 году. [16] В мае 2023 года первая общедоступная версия была доступна в Интернете через размещенную игровую площадку. [17] К сентябрю 2023 года Mojo стал доступен для локальной загрузки для Linux. [18] а к октябрю 2023 года он также стал доступен для загрузки на macOS Apple. [19]
В марте 2024 года компания Modular открыла исходный код стандартной библиотеки Mojo и начала принимать вклады сообщества по лицензии Apache 2.0. [20] [21]
Функции
[ редактировать ]![]() |
Mojo имеет следующие особенности и характеристики:
- Mojo использует предполагаемую статическую типизацию. [24]
- Mojo был создан для легкого перехода с Python. Язык имеет синтаксис, аналогичный синтаксису Python, и позволяет пользователям импортировать модули Python . [25]
- Mojo не имеет открытого исходного кода, но в будущем планируется сделать его открытым. [26]
- В Mojo есть средство проверки заимствований , созданное под влиянием Rust . [27]
- Mojo планирует добавить внешний интерфейс функций для вызова кода C/C++ и Python.
- Mojo не совместим с Python 3 по исходному коду, предоставляя только подмножество своего синтаксиса , например, отсутствует глобальное ключевое слово, понимание списков и словарей, а также поддержка классов. Кроме того, Mojo также добавляет функции, которые обеспечивают производительное низкоуровневое программирование: fn для создания типизированных , скомпилированных функций и «struct» для оптимизированных для памяти альтернатив классам . Структуры Mojo поддерживают методы , поля , перегрузку операторов и декораторы . [5]
- Моджо Функции def по умолчанию используют семантику значений (функции получают копии всех аргументов, и любые изменения не видны за пределами функции), тогда как функции Python используют ссылочную семантику (функции получают ссылку на свои аргументы и любую модификацию изменяемого аргумента внутри функции). видно снаружи). [28]
- Файлы Mojo используют .🔥 или Расширение файла .mojo . [2]
Примеры программирования
[ редактировать ]В Mojo функции можно объявлять, используя оба fn (для исполнительных функций) или def (для совместимости с Python). [25]
Основные арифметические операции в Mojo с функция защиты :
def sub(x, y):
"""A pythonic subtraction."""
res = x - y
return res
и с фн функция :
fn add(x: Int, y: Int) -> Int:
"""A rustacean addition."""
let res: Int = x + y
return res
Как Mojo использует была уткой let для объявлений изменяемых и неизменяемых переменных соответственно отражает синтаксис Swift. В Свифте, var используется для изменяемых переменных, а let предназначен для констант или неизменяемых переменных. [25]
Объявление и использование переменных в Mojo:
fn main():
let x = 1
let y: Int
y = 1
var z = 0
z += 1
Использование
[ редактировать ]Mojo SDK позволяет программистам Mojo компилировать и выполнять исходные файлы Mojo локально из командной строки и в настоящее время поддерживает Ubuntu и macOS. [29] Кроме того, существует расширение Mojo для Visual Studio Code, которое обеспечивает завершение кода и всплывающие подсказки.
модель вывода LLaMA2, написанная на Mojo. В январе 2024 года была опубликована [30]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Журнал изменений Моджо» . Модульный . Проверено 14 апреля 2024 г.
- ^ Jump up to: а б «Руководство по программированию Mojo🔥» . docs.modular.com . Модульный. 2023 . Проверено 26 сентября 2023 г.
Mojo — это язык программирования, который так же прост в использовании, как Python, но обладает производительностью C++ и Rust. Более того, Mojo предоставляет возможность использовать всю экосистему библиотек Python.
- ^ «Почему Mojo🔥 — язык для технологии компиляторов нового поколения» . docs.modular.com . Модульный. 2023 . Проверено 26 сентября 2023 г.
Хотя многие другие проекты сейчас используют MLIR, Mojo — это первый основной язык, разработанный специально для MLIR, что делает Mojo уникальным инструментом при написании кода системного уровня для рабочих нагрузок ИИ.
- ^ Jump up to: а б с Криль, Пол (4 мая 2023 г.). «Язык Mojo объединяет Python и MLIR для разработки искусственного интеллекта» . Инфомир .
- ^ Jump up to: а б Егулалп, Сердар (7 июня 2023 г.). «Первый взгляд на язык Mojo» . Инфомир .
- ^ Дойчер, Мария (7 сентября 2023 г.). «Modular делает свой оптимизированный для искусственного интеллекта язык программирования Mojo общедоступным» . Кремниевый угол . Проверено 11 сентября 2023 г.
- ^ «Моджо для Mac OS» . Модульный . Проверено 19 октября 2023 г.
- ^ «Моджо 🔥: Язык программирования для всего ИИ» . www.modular.com . Проверено 28 февраля 2024 г.
- ^ «Модульная модульность: следующий большой шаг в Mojo🔥 с открытым исходным кодом» . www.modular.com . Проверено 28 мая 2024 г.
- ^ Крил, Пол (04 мая 2023 г.). «Язык Mojo объединяет Python и MLIR для разработки искусственного интеллекта» . Инфомир . Проверено 28 мая 2024 г.
- ^ «Следует ли Джулии использовать MLIR в будущем?» . Юлия Язык программирования . 20 февраля 2024 г. Проверено 28 мая 2024 г.
- ^ «Почему Mojo🔥 | Модульные документы» . docs.modular.com . Проверено 28 мая 2024 г.
- ^ https://llvm.org/devmtg/2023-10/slides/keynote/Mojo.pdf .
- ^ Ховард, Джереми (4 мая 2023 г.). «fast.ai — Mojo может стать крупнейшим достижением языка программирования за последние десятилетия» . фаст.ай. Проверено 28 мая 2024 г.
- ^ Клэберн, Томас (5 мая 2023 г.). «Modular находит свое Mojo, надмножество Python со скоростью уровня C» . Регистр . Проверено 8 августа 2023 г.
- ^ «Журнал изменений Mojo🔥» .
- ^ «Модульность: унифицированная расширяемая платформа, расширяющая возможности вашего искусственного интеллекта» . www.modular.com . Проверено 14 апреля 2024 г.
- ^ «Модуль: Моджо🔥 — Наконец-то он здесь!» . www.modular.com . Проверено 14 апреля 2024 г.
- ^ «Модульная версия: Mojo🔥 теперь доступна на Mac» . www.modular.com . Проверено 14 апреля 2024 г.
- ^ «Modular открывает исходный код основных компонентов своего языка программирования Mojo AI» . КремниевыйУГОЛ . 28 марта 2024 г. Проверено 28 мая 2024 г.
- ^ "mojo/stdlib/README.md в ночное время ·modularml/mojo" . Гитхаб . Проверено 28 мая 2024 г.
- ^ Латтнер, Крис; Пиенаар, Жак (2019). Учебник по MLIR: инфраструктура компилятора для конца закона Мура (технический отчет) . Проверено 30 сентября 2022 г.
- ^ Латтнер, Крис; Амини, Мехди; Бондугула, Удай; Коэн, Альберт; Дэвис, Энди; Пиенаар, Жак; Риддл, Река; Шпейсман, Татьяна; Василаче, Николай; Зиненко Александр (29.02.2020). «MLIR: инфраструктура компилятора для конца закона Мура». arXiv : 2002.11054 [ cs.PL ].
- ^ «Модульная документация — руководство по программированию Mojo🔥» . docs.modular.com . Проверено 19 октября 2023 г.
- ^ Jump up to: а б с «Модульная документация — руководство по программированию Mojo🔥» . docs.modular.com . Проверено 31 октября 2023 г.
- ^ «Добро пожаловать в Моджо 🔥» . Гитхаб . Модульный. 31 октября 2023 г. Проверено 31 октября 2023 г.
- ^ «Собственность и заимствование | Модульные документы» . Модульный . Проверено 29 февраля 2024 г.
- ^ «Руководство по программированию Mojo🔥» . Модульный. Архивировано из оригинала 11 июня 2023 г. Проверено 11 июня 2023 г.
Все значения, передаваемые в функцию def Python, используют ссылочную семантику. Это означает, что функция может изменять передаваемые в нее изменяемые объекты, и эти изменения видны за пределами функции. Однако такое поведение иногда удивляет непосвященных, поскольку вы можете изменить объект, на который указывает аргумент, и это изменение не будет видно за пределами функции. Все значения, передаваемые в функцию определения Mojo, по умолчанию используют семантику значений. По сравнению с Python это важное отличие: функция def Mojo получает копию всех аргументов — она может изменять аргументы внутри функции, но изменения не видны вне функции.
- ^ «Модульная документация — дорожная карта Mojo🔥 и острые края» . docs.modular.com . Проверено 31 октября 2023 г.
- ^ «Журнал изменений llama2.mojo🔥» . Гитхаб .
Внешние ссылки
[ редактировать ]- Программное обеспечение искусственного интеллекта
- Кроссплатформенное программное обеспечение
- Языки программирования высокого уровня
- Мультипарадигмальные языки программирования
- Интерфейс ноутбука
- Языки программирования
- Языки программирования, созданные в 2023 году
- Python (язык программирования)
- Текстоориентированные языки программирования
- Реализации Python (языка программирования)
- Программное обеспечение, использующее лицензию Apache