Mojo
От: BlackEric http://black-eric.lj.ru
Дата: 11.05.23 09:17
Оценка:
Создатель LLVM развивает новый язык программирования Mojo

Крис Латнер (Chris Lattner), основатель и главный архитектор LLVM, а также создатель языка программирования Swift, и Тим Дэвис (Tim Davis), бывший руководитель AI-проектов Google, таких как Tensorflow и JAX, представили новый язык программирования Mojo, сочетающий простоту применения для исследовательских разработок и быстрого создания прототипов с пригодностью для формирования высокопроизводительных конечных продуктов. Первое достигается благодаря использованию привычного синтаксиса языка Python, а второе за счёт возможности компиляции в машинный код, механизмов безопасной работы с памятью и задействованию средств для аппаратного ускорения вычислений.

Проект сфокусирован на использовании для разработок в области машинного обучения, но при этом преподносится как язык общего назначения, расширяющий возможности языка Python средствами системного программирования и подходящий для широкого круга задач. Например, язык применим для таких областей, как высокопроизводительные вычисления, обработка и преобразование данных. Интересной особенностью Mojo является возможность указания emoji-символа "🔥" в качестве расширения для файлов с кодом (например, "helloworld.🔥"), помимо текстового расширения ".mojo".

В настоящее время язык находится на стадии интенсивного развития и для тестирования предложен только online-интерфейс. Обособленные сборки для запуска на локальных системах обещают опубликовать позднее, после получения отзывов о работе интерактивного web-окружения. Исходные тексты компилятора, JIT и других связанных с проектом наработок планируют открыть после завершения проектирования внутренней архитектуры (модель развития рабочего прототипа за закрытыми дверями напоминает начальную стадию разработки LLVM, Clang и Swift). Так как синтаксис Mojo основан на языке Python, а система типов близка к C/C++, в будущем планируют разработать инструментарий для упрощения перевода на Mojo существующих проектов, написанных на C/C++ и Python, а также для разработки гибридных проектов, совмещающих код на Python и Mojo.



Mojo может использоваться как в режиме интерпретации с использованием JIT, так и для компиляции в исполняемые файлы (AOT, ahead-of-time). В компилятор встроены современные технологии автоматической оптимизации, кэширования и распределённой компиляции. Исходные тексты на языке Mojo преобразуются в низкоуровневый промежуточный код MLIR (Multi-Level Intermediate Representation), развиваемый проектом LLVM и предоставляющий дополнительные возможности для оптимизации обработки графа потока данных. Компилятор позволяет применять для генерации машинного кода различные бэкенды, поддерживающие MLIR.

Задействование дополнительных аппаратных механизмов для ускорения вычислений даёт возможность добиться производительности, при интенсивных вычислениях превосходящей приложения на C/C++. Например, при тестировании приложения для генерации множества Мандельброта, скомпилированное приложение на языке Mojo при выполнении в облаке AWS (r7iz.metal-16xl) оказалось в 6 раз быстрее реализации на C++ (0.03 сек. против 0.20 сек.), а также в 35 тысяч раз быстрее приложения на Python при использовании штатного CPython 3.10.9 (0.03 сек. против 1027 сек.) и в 1500 раз быстрее при использовании PYPY (0.03 сек. против 46.1 сек.).


Mojo may be the biggest programming language advance in decades (ENG)

Chris Lattner is responsible for creating many of the projects that we all rely on today – even although we might not even have heard of all the stuff he built! As part of his PhD thesis he started the development of LLVM, which fundamentally changed how compilers are created, and today forms the foundation of many of the most widely used language ecosystems in the world. He then went on to launch Clang, a C and C++ compiler that sits on top of LLVM, and is used by most of the world’s most significant software developers (including providing the backbone for Google’s performance critical code). LLVM includes an “intermediate representation” (IR), a special language designed for machines to read and write (instead of for people), which has enabled a huge community of software to work together to provide better programming language functionality across a wider range of hardware.

Chris saw that C and C++ however didn’t really fully leverage the power of LLVM, so while he was working at Apple he designed a new language, called “Swift”, which he describes as “syntax sugar for LLVM”. Swift has gone on to become one of the world’s most widely used programming languages, in particular because it is today the main way to create iOS apps for iPhone, iPad, MacOS, and Apple TV.

Unfortunately, Apple’s control of Swift has meant it hasn’t really had its time to shine outside of the cloistered Apple world. Chris led a time for a while at Google to try to move Swift out of its Apple comfort zone, to become a replacement for Python in AI model development. I was very excited about this project, but sadly it did not receive the support it needed from either Apple or from Google, and it was not ultimately successful.

Having said that, whilst at Google Chris did develop another project which became hugely successful: MLIR. MLIR is a replacement for LLVM’s IR for the modern age of many-core computing and AI workloads. It’s critical for fully leveraging the power of hardware like GPUs, TPUs, and the vector units increasingly being added to server-class CPUs.

So, if Swift was “syntax sugar for LLVM”, what’s “syntax sugar for MLIR”? The answer is: Mojo! Mojo is a brand new language that’s designed to take full advantage of MLIR. And also Mojo is Python.


Интересно, взлетит?
Мне кажется, что такой язык был нужен давно. Хотя для языков release faster не работает пожалуй. Язык надо выпускать сразу полностью готовый со всеми наворотами из коробки. Но CPython и IronPython настолько убоги, что, надеюсь, процесс пойдет.
https://github.com/BlackEric001
mojo
Re: Mojo
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 11.05.23 09:57
Оценка: +1
Здравствуйте, BlackEric, Вы писали:

BE>Интересно, взлетит?

BE>Мне кажется, что такой язык был нужен давно.

Согласен, поэтому и создали Juila: динамика, похож на Матлаб, быстрый, умеет в параллелизм и также основан на LLVM.
Но почему-то не взлетает так, как Питон.
Re[2]: Mojo
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 11.05.23 10:02
Оценка: +1
Здравствуйте, Nuzhny, Вы писали:

N>Согласен, поэтому и создали Juila: динамика, похож на Матлаб, быстрый, умеет в параллелизм и также основан на LLVM.

N>Но почему-то не взлетает так, как Питон.
Потому что нет поддержки гигантов IT индустрии. Последние 20-30 лет языки (да и вообще новшества а ИТ) взлетали только если их поддерживал Microsoft/Google/Oracle/Facebook/Amazon/кто_там_еще
Я не знаю насколько крупны Modular чтобы протолкнуть новый язык.
Re[2]: Mojo
От: Sharov Россия  
Дата: 11.05.23 10:43
Оценка: -1
Здравствуйте, Nuzhny, Вы писали:

N>Согласен, поэтому и создали Juila: динамика, похож на Матлаб, быстрый, умеет в параллелизм и также основан на LLVM.

N>Но почему-то не взлетает так, как Питон.

Попробуй пересади ds с питона, где для обучения моделек и визуализации надо всего лишь пару вызовов
сделать, на julia. Уж очень много на питоне написано. И это весьма удобно.
Кодом людям нужно помогать!
Re: Mojo
От: Mihal9  
Дата: 11.05.23 10:46
Оценка:
Здравствуйте, BlackEric, Вы писали:


Давно пора сделать язык с таким же легким синтаксисом, как у Питона, но не таким тормознутым по скорости.
Re[3]: Mojo
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 11.05.23 10:51
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте, Nuzhny, Вы писали:


N>>Согласен, поэтому и создали Juila: динамика, похож на Матлаб, быстрый, умеет в параллелизм и также основан на LLVM.

N>>Но почему-то не взлетает так, как Питон.

S>Попробуй пересади ds с питона, где для обучения моделек и визуализации надо всего лишь пару вызовов сделать, на julia.

Julia создавался как язык для data science. Все что можно написать на пайтоне с помощью numpy, scipy, pandas, tf, keras можно точно также написано на julia, вплоть до синтаксической идентичности.
Издалека вообще juia от python не отличишь.


S>Уж очень много на питоне написано. И это весьма удобно.

Да, примерно в 15 раз больше. Но основные вещи, которые делают датасаентисты на julia делаются точно также, как на пайтоне. Это не утрирование.
Re[2]: Mojo
От: kov_serg Россия  
Дата: 11.05.23 11:14
Оценка: 2 (1) +1
Здравствуйте, Nuzhny, Вы писали:

N>Но почему-то не взлетает так, как Питон.


Значит не всё гладко как рекламируют: https://habr.com/ru/articles/666332/
Re[4]: Mojo
От: Sharov Россия  
Дата: 11.05.23 11:15
Оценка:
Здравствуйте, gandjustas, Вы писали:

S>>Попробуй пересади ds с питона, где для обучения моделек и визуализации надо всего лишь пару вызовов сделать, на julia.

G>Julia создавался как язык для data science. Все что можно написать на пайтоне с помощью numpy, scipy, pandas, tf, keras можно точно также написано на julia, вплоть до синтаксической идентичности.
G>Издалека вообще juia от python не отличишь.

Примеры кода, строк на 10, на каждом языке можно увидеть?


S>>Уж очень много на питоне написано. И это весьма удобно.

G>Да, примерно в 15 раз больше. Но основные вещи, которые делают датасаентисты на julia делаются точно также, как на пайтоне. Это не утрирование.

Си библиотеки одни и те же, в этом суть. Но для питона обвязок больше(numpy). А эти обвязки используют
кучи библиотек. Это как jquery в свое время.
Кодом людям нужно помогать!
Re[5]: Mojo
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 11.05.23 11:41
Оценка: 1 (1)
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте, gandjustas, Вы писали:


S>>>Попробуй пересади ds с питона, где для обучения моделек и визуализации надо всего лишь пару вызовов сделать, на julia.

G>>Julia создавался как язык для data science. Все что можно написать на пайтоне с помощью numpy, scipy, pandas, tf, keras можно точно также написано на julia, вплоть до синтаксической идентичности.
G>>Издалека вообще juia от python не отличишь.

S>Примеры кода, строк на 10, на каждом языке можно увидеть?

https://gist.github.com/blakesanie/ac7928c38764f7d9cc04b7f1db096d8e#file-mandel-py
https://gist.github.com/Wikunia/71b6577cc525f580898e87395ead5a73#file-mandelbrot-jl

У julia в глаза бросается б-гмерзкий end, собственно только им и отличается от python



S>>>Уж очень много на питоне написано. И это весьма удобно.

G>>Да, примерно в 15 раз больше. Но основные вещи, которые делают датасаентисты на julia делаются точно также, как на пайтоне. Это не утрирование.

S>Си библиотеки одни и те же, в этом суть. Но для питона обвязок больше(numpy). А эти обвязки используют кучи библиотек. Это как jquery в свое время.

Дело скорее не в обвязках, а в том, что примеров на julia сложнее найти.
Это как раз следствие того, что меньше бабла вливается в разработку.

Насколько я знаю julia проектировался как замена матлабу, с чем успешно справляется. То что покрывает кучу кейсов использование питона — совпадение.
Re[3]: Mojo
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 11.05.23 11:48
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Попробуй пересади ds с питона, где для обучения моделек и визуализации надо всего лишь пару вызовов

S>сделать, на julia. Уж очень много на питоне написано. И это весьма удобно.

Тут самое интересное, что ds начинался не с Питона: статистика с R, а нейронки скриптовались на lua
Re[4]: Mojo
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 11.05.23 11:52
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Здравствуйте, Sharov, Вы писали:


S>>Попробуй пересади ds с питона, где для обучения моделек и визуализации надо всего лишь пару вызовов

S>>сделать, на julia. Уж очень много на питоне написано. И это весьма удобно.

N>Тут самое интересное, что ds начинался не с Питона: статистика с R, а нейронки скриптовались на lua


Python, до появления numpy\scipy (2009 год), практически не имел отношения ни к data, ни к science. А нейронные сети на пайтоне массово появились когда появился tensorflow (2015 год).
Re[5]: Mojo
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 11.05.23 12:11
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Python, до появления numpy\scipy (2009 год), практически не имел отношения ни к data, ни к science. А нейронные сети на пайтоне массово появились когда появился tensorflow (2015 год).


Ну, там ещё был Theano. Но Torch изначально использовал lua.
Re[6]: Mojo
От: Sharov Россия  
Дата: 11.05.23 17:56
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Насколько я знаю julia проектировался как замена матлабу, с чем успешно справляется. То что покрывает кучу кейсов использование питона — совпадение.



Тогда вообще о чем спор -- питон вообще язык общего назначения, вовсю используется на бэке. А матлаб
исключительно в научных целях.
Кодом людям нужно помогать!
Re[7]: Mojo
От: vdimas Россия  
Дата: 11.05.23 18:08
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Тогда вообще о чем спор -- питон вообще язык общего назначения, вовсю используется на бэке. А матлаб

S>исключительно в научных целях.

Матлаб больше на типичные инженерные задачи заточен.
Re[8]: Mojo
От: Sharov Россия  
Дата: 11.05.23 18:16
Оценка:
Здравствуйте, vdimas, Вы писали:

S>>Тогда вообще о чем спор -- питон вообще язык общего назначения, вовсю используется на бэке. А матлаб

S>>исключительно в научных целях.
V>Матлаб больше на типичные инженерные задачи заточен.

Не суть, главное что писать бэк на нем в здравом уме никто не будет. А на питоне пишут, и инженерные
задачи тоже решают.
Кодом людям нужно помогать!
Re[2]: Mojo
От: student__  
Дата: 12.05.23 08:11
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Согласен, поэтому и создали Juila: динамика, похож на Матлаб, быстрый, умеет в параллелизм и также основан на LLVM.

N>Но почему-то не взлетает так, как Питон.

Он как раз потому и не взлетает, потому что слишком много целей преследует, и некоторые друг другу противоречат.
Например, типизация динамическая (как у питона), но строгая, и когда становится известна инфа о типах, код начинает компилироваться.
Просто тупо взять готовую прогу, и скомпилировать перед релизом, со всеми зависимостями — это было невозможно.
Это шизофрения какая-то. Ты либо берешь компилируемый код со статической типизацией и сразу собираешь его с максимальной оптимизацией, либо берешь питон, и при необходимости вызывавешь из него те же скомпилированные оптимизированные библиотеки.
Идея глупая у Юлии.
Re[7]: Mojo
От: novitk США  
Дата: 12.05.23 11:28
Оценка: 1 (1)
Здравствуйте, Sharov, Вы писали:

G>>Насколько я знаю julia проектировался как замена матлабу, с чем успешно справляется. То что покрывает кучу кейсов использование питона — совпадение.

S>Тогда вообще о чем спор -- питон вообще язык общего назначения, вовсю используется на бэке. А матлаб
S>исключительно в научных целях.

Julia — язык общего назначения. Он проектировался на замену матлабу в использовании, но не в исполнение. Например стандартная библиотека реализованна в Julia на себе, а не на плюсах, как у Py/Matlab. Да, сейчас его любят за то, что на нем можно писать числодробилки со скоростью плюсов, но ничего специально перекошенного в математику в нем нет.
Re[3]: Mojo
От: novitk США  
Дата: 12.05.23 12:48
Оценка:
Здравствуйте, student__, Вы писали:

__>Он как раз потому и не взлетает, потому что слишком много целей преследует, и некоторые друг другу противоречат.

__>Например, типизация динамическая (как у питона), но строгая, и когда становится известна инфа о типах, код начинает компилироваться.
__>Просто тупо взять готовую прогу, и скомпилировать перед релизом, со всеми зависимостями — это было невозможно.
https://github.com/JuliaLang/PackageCompiler.jl
Re: Mojo
От: novitk США  
Дата: 12.05.23 12:52
Оценка:
Здравствуйте, BlackEric, Вы писали:

BE>Крис Латнер (Chris Lattner), основатель и главный архитектор LLVM, а также создатель языка программирования Swift, и Тим Дэвис (Tim Davis)

Херней Крис занялся. Лучше бы Julia помог.
Аргумент у него ровно один: Mojo будет суперсетом над Питоном, а не новым языком, включая совместимость с зоопарком.
Не взлетит.
Отредактировано 12.05.2023 12:53 novitk . Предыдущая версия .
Re[8]: Mojo
От: student__  
Дата: 12.05.23 14:56
Оценка: +1
Здравствуйте, novitk, Вы писали:

N>Julia — язык общего назначения. Он проектировался на замену матлабу в использовании


Каким-то писателем научных бумаг надоел зоопарк ЯП в виде matlab, python, fortran, C++, и он решил создать один единственный ЯП, который их заменит.
Но не поняли они, что каждый ЯП для своих нужд, что любое инженерное решение — это компромисс, и что вместо "делает лучше, чем все другие" может получиться "делает хуже, чем все другие".
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.