Jump to content

Моджо (язык программирования)

Моджо
Парадигма
Семья Питон
Разработано Крис Лэттнер
Разработчик Модульная Инк.
Впервые появился 2023 ; 1 год назад ( 2023 )
Предварительный выпуск
24.4 [1] / 24 мая 2024 г .; 2 месяца назад ( 24.05.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]
  • Моджо Функции 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]

См. также

[ редактировать ]
  1. ^ «Журнал изменений Моджо» . Модульный . Проверено 14 апреля 2024 г.
  2. ^ Jump up to: а б «Руководство по программированию Mojo🔥» . docs.modular.com . Модульный. 2023 . Проверено 26 сентября 2023 г. Mojo — это язык программирования, который так же прост в использовании, как Python, но обладает производительностью C++ и Rust. Более того, Mojo предоставляет возможность использовать всю экосистему библиотек Python.
  3. ^ «Почему Mojo🔥 — язык для технологии компиляторов нового поколения» . docs.modular.com . Модульный. 2023 . Проверено 26 сентября 2023 г. Хотя многие другие проекты сейчас используют MLIR, Mojo — это первый основной язык, разработанный специально для MLIR, что делает Mojo уникальным инструментом при написании кода системного уровня для рабочих нагрузок ИИ.
  4. ^ Jump up to: а б с Криль, Пол (4 мая 2023 г.). «Язык Mojo объединяет Python и MLIR для разработки искусственного интеллекта» . Инфомир .
  5. ^ Jump up to: а б Егулалп, Сердар (7 июня 2023 г.). «Первый взгляд на язык Mojo» . Инфомир .
  6. ^ Дойчер, Мария (7 сентября 2023 г.). «Modular делает свой оптимизированный для искусственного интеллекта язык программирования Mojo общедоступным» . Кремниевый угол . Проверено 11 сентября 2023 г.
  7. ^ «Моджо для Mac OS» . Модульный . Проверено 19 октября 2023 г.
  8. ^ «Моджо 🔥: Язык программирования для всего ИИ» . www.modular.com . Проверено 28 февраля 2024 г.
  9. ^ «Модульная модульность: следующий большой шаг в Mojo🔥 с открытым исходным кодом» . www.modular.com . Проверено 28 мая 2024 г.
  10. ^ Крил, Пол (04 мая 2023 г.). «Язык Mojo объединяет Python и MLIR для разработки искусственного интеллекта» . Инфомир . Проверено 28 мая 2024 г.
  11. ^ «Следует ли Джулии использовать MLIR в будущем?» . Юлия Язык программирования . 20 февраля 2024 г. Проверено 28 мая 2024 г.
  12. ^ «Почему Mojo🔥 | Модульные документы» . docs.modular.com . Проверено 28 мая 2024 г.
  13. ^ https://llvm.org/devmtg/2023-10/slides/keynote/Mojo.pdf .
  14. ^ Ховард, Джереми (4 мая 2023 г.). «fast.ai — Mojo может стать крупнейшим достижением языка программирования за последние десятилетия» . фаст.ай. ​Проверено 28 мая 2024 г.
  15. ^ Клэберн, Томас (5 мая 2023 г.). «Modular находит свое Mojo, надмножество Python со скоростью уровня C» . Регистр . Проверено 8 августа 2023 г.
  16. ^ «Журнал изменений Mojo🔥» .
  17. ^ «Модульность: унифицированная расширяемая платформа, расширяющая возможности вашего искусственного интеллекта» . www.modular.com . Проверено 14 апреля 2024 г.
  18. ^ «Модуль: Моджо🔥 — Наконец-то он здесь!» . www.modular.com . Проверено 14 апреля 2024 г.
  19. ^ «Модульная версия: Mojo🔥 теперь доступна на Mac» . www.modular.com . Проверено 14 апреля 2024 г.
  20. ^ «Modular открывает исходный код основных компонентов своего языка программирования Mojo AI» . КремниевыйУГОЛ . 28 марта 2024 г. Проверено 28 мая 2024 г.
  21. ^ "mojo/stdlib/README.md в ночное время ·modularml/mojo" . Гитхаб . Проверено 28 мая 2024 г.
  22. ^ Латтнер, Крис; Пиенаар, Жак (2019). Учебник по MLIR: инфраструктура компилятора для конца закона Мура (технический отчет) . Проверено 30 сентября 2022 г.
  23. ^ Латтнер, Крис; Амини, Мехди; Бондугула, Удай; Коэн, Альберт; Дэвис, Энди; Пиенаар, Жак; Риддл, Река; Шпейсман, Татьяна; Василаче, Николай; Зиненко Александр (29.02.2020). «MLIR: инфраструктура компилятора для конца закона Мура». arXiv : 2002.11054 [ cs.PL ].
  24. ^ «Модульная документация — руководство по программированию Mojo🔥» . docs.modular.com . Проверено 19 октября 2023 г.
  25. ^ Jump up to: а б с «Модульная документация — руководство по программированию Mojo🔥» . docs.modular.com . Проверено 31 октября 2023 г.
  26. ^ «Добро пожаловать в Моджо 🔥» . Гитхаб . Модульный. 31 октября 2023 г. Проверено 31 октября 2023 г.
  27. ^ «Собственность и заимствование | Модульные документы» . Модульный . Проверено 29 февраля 2024 г.
  28. ^ «Руководство по программированию Mojo🔥» . Модульный. Архивировано из оригинала 11 июня 2023 г. Проверено 11 июня 2023 г. Все значения, передаваемые в функцию def Python, используют ссылочную семантику. Это означает, что функция может изменять передаваемые в нее изменяемые объекты, и эти изменения видны за пределами функции. Однако такое поведение иногда удивляет непосвященных, поскольку вы можете изменить объект, на который указывает аргумент, и это изменение не будет видно за пределами функции. Все значения, передаваемые в функцию определения Mojo, по умолчанию используют семантику значений. По сравнению с Python это важное отличие: функция def Mojo получает копию всех аргументов — она может изменять аргументы внутри функции, но изменения не видны вне функции.
  29. ^ «Модульная документация — дорожная карта Mojo🔥 и острые края» . docs.modular.com . Проверено 31 октября 2023 г.
  30. ^ «Журнал изменений llama2.mojo🔥» . Гитхаб .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c37c11cbe60ff5c095cd4129a114a647__1719620340
URL1:https://arc.ask3.ru/arc/aa/c3/47/c37c11cbe60ff5c095cd4129a114a647.html
Заголовок, (Title) документа по адресу, URL1:
Mojo (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)