Опубликован выпуск инструментария языка программирования Mojo 24.3, позволяющего компилировать проекты на локальной системе. В состав включены компоненты, необходимые для разработки приложений на языке Mojo, включая компилятор, runtime, интерактивную REPL-оболочку для сборки и запуска программ, отладчик, дополнение к редактору кода Visual Studio Code (VS Code) с поддержкой автодополнения ввода, форматирования кода и подсветки синтаксиса, модуль для интеграции с Jupyter для сборки и запуска Mojo notebook. Исходные тексты стандартной библиотеки Mojo открыты под лицензией Apache 2.0 c исключениями от проекта LLVM, допускающими смешивание с кодом под лицензией GPLv2. Исходный код компилятора планируют открыть после завершения проектирования внутренней архитектуры...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=61111
Слишком поздно. Julia уже вытесняет Python из ниши Data Science и Big Data.
Ну, это вряд ли, конечно. Маловероятно, так скажем.
Есть тип людей, которым кажется, что чем больше им нравится вещь, тем больше она вытесняет. Называются гуманитарии.
Вытеснение идет полных ходом, я смотрю:
https://trends.google.com/trends/explore?q=%2Fm%2F...,%2Fm%2F0j3djl7&hl=ru
> JuliaА она научилась наконец в реальную компиляцию или только для приманки так и осталось на бумаге где кроме ПриветМир в 200 мегов ничего больше не комипилится ?
Любой язык с индексацией с единицы идёт прямиком ффтопку. Потому что считать индексы в массивах очень неудобно становится. Простейший способ это сделать - это считать всё так, как будто индексация идёт с нуля, а потом добавить единицу. Только единицу придётся добавлять на каждый доступ. Я что, похож на идиота, чтобы такое говно, мне ставящее палки в колёса, использовать?
> Я что, похож на идиота, чтобы такое говно, мне ставящее палки в колёса, использовать?Ну почему же "похож"?... Вполне возможно так и есть.
Первый элемент массива - это первый, а не нулевой. Впрочем, у Джулии, например, есть банальные слова-заменители begin:end для первого и последнего с возможностью подставить смещение от них. И не использовать 1 или length().
нет, первый элемент массива он именно нулевой, так как идёт по смещению base + 0*sizeof(el).
А вот это есть лютое легаси с попыткой наложить на бизнес-слой ограничения технической реализации.
А если не в си, а, скажем, в расте выделить память непрерывным куском и итерироваться как по многомерному массиву (y*width + x), то превратится ли "лютое легаси" в какую-нибудь "state-of-the-art индексацию от ведущих специалистов с экспертизой в data layout"? А то индексация с единицы этот случай портит (придётся начинать разные индексы с разных чисел или вычитать единицы).Ограничения технической реализации не помешало бы наложить на бизнес-слой всего человечества. На часах ноль часов и говорят, что идёт первый час. Но... на календаре 2024, а говорят, что идёт 2024-й год. Второе тысячелетие формально кончилось с наступлением 2001-го, а праздновали на год раньше.
Или хотя бы добавить произвольную индексацию в каждый новый ЯП, если так "бизнес-слой" важен.
>[оверквотинг удален]
> превратится ли "лютое легаси" в какую-нибудь "state-of-the-art индексацию от ведущих специалистов
> с экспертизой в data layout"? А то индексация с единицы этот
> случай портит (придётся начинать разные индексы с разных чисел или вычитать
> единицы).
> Ограничения технической реализации не помешало бы наложить на бизнес-слой всего человечества.
> На часах ноль часов и говорят, что идёт первый час. Но...
> на календаре 2024, а говорят, что идёт 2024-й год. Второе тысячелетие
> формально кончилось с наступлением 2001-го, а праздновали на год раньше.
> Или хотя бы добавить произвольную индексацию в каждый новый ЯП, если так
> "бизнес-слой" важен.А при чем тут "Си" и "Раст"? Если бы я про "null-terminated strings" говорил - оно в кассу было бы, а тут-то при шта? Проблема в том, что "в повседневной жизни" для тебя "первый элемент" - ну вот "первый", а в случае с некоторыми ЯП - ну вот "нулевой", патамучтагладиолус и нам так 50 лет назад удобней было. Примерно та же мулька кстати с использованием "=" в качестве оператора присваивания - тоже овердофигища проблем на пустом месте.
Календарь с часами кстати - тоже лютейшее legacy, вызывающее дохренища проблем в том числе и у программистов - но тут не то, чтобы мы могли чего-нибудь сделать, увы. Правда с моей т.з. логика вида "И что за беда, коль в огороде лебеда? Вон, у них церква горят - ничего не говорят!" - она того-этого... ущербная, но кто-то пользуется, да.
> А при чем тут "Си"
> нам так 50 лет назад удобней былоА при чём тут 50 лет назад?
---
TL;DR:
1. индексация с нуля в принципе полезна и не является тяжёлым наследием чего-то там.2. Не надо необдуманно тащить правила из повседневной жизни. По-моему, апелляция к повседневной жизни тут вообще не работает - в ней итераторы не используют и пишут на русском. А в повседневной работе как раз итераторы вместо индексов и английская раскладка для кода. А если опускаться ниже итераторов, то мы часто опускаемся на тот уровень, где устройство железа стоит учитывать независимо от предпочтений[a].
---
1. Я же написал про непрерывный многомерный массив, можно добавить модульную арифметику, LUT-таблицы, взятие каждого n-ого элемента.2. "Бизнес-слой" в твоём понимании - работа со штуками из повседневной жизни? А в повседневной жизни не только нумерация обычно с единицы, но и те проблемы летоисчисления. И нельзя от этих проблем просто отмахнуться: "легаси". Посмотри, как человечество спустя полторы тыщи лет после создания христианского летоисчисления справляется с нумерацией этажей в лифтах. Например, так: -2, -1, *L, 2, 3, 5, ... 12, 15, 16. Лифт без 4, 13, 14 этажей (суеверия), со входом на *L этаже (да хоть на 🐱) и с пропуском нуля (можно с нулём, заменим панель в течение недели). Это уже не легаси, это так люди устроены - наши нейронки хорошо справляются с такой нестрогостью и люди хотят, чтобы было красиво/суеверно/как получится[b]. С нулевым этажом иногда неплохо получается. Причём его не пытаются называть "этажом по смещению ноль".
---
[a] Эти предпочтения (opinionated software) вообще зачастую генерируют проблемы и выглядят как детские травмы. Почему нет комментариев в JSON? Потому что если споткнёшься об отсутствие комментариев, ты в поисках объяснения прочитаешь послание от автора JSON. А иначе бы не прочитал. Почему автор Lua говорит, что это изначально язык-клей для Си[c], но сделал индексы с единицы? Потому что.[b] Ещё вот дискета на 1.44 МБ - это красиво. Не важно, что она не 1.44 МБ и не 1.44 МиБ. Apple в 2009 стала использовать десятичные приставки для объёма накопителей. Чтобы соблюдать стандарты вроде СИ? Наоборот, чтобы было красиво (круглые числа красивее), хоть и хуже (последовательное отклонение от стандарта лучше непоследовательного: объём памяти они считают по-старому, а слово гибибайт им уже некрасивое).
Ну вот если бы "нейронки хорошо справлялись" - вопросов бы не было, но они НЕ СПРАВЛЯЮТСЯ. "Хорошо" - нет. Систематически - нет. Но у нас стокгольмский синдром утенка и мы будем "выходить за границы массивов" при этом рассказывая всем, что гладиолус и НАСТОЯЩИЕ шотландцы. Сiмъ победiмъ!
ШТО? Нет, у остального человечества нейронки в головах прекрасно справляются. Может, у тебя ограничения технической реализации.Корейский счёт возраста? Ничего, можно привыкнуть. Дом номер 0? Ладно. Дом номер 01 не равен дому номер 1? Ха-ха, буду знать. Улица "минуспервая"[1]? Логично. Пропущена платформа на вокзале? Наверное, когда-то она существовала. А может и нет. ЯЗЫК АДА разрешает индексировать массивы с любого числа, даёт ключевые слова first и last? Ну молодцы, довели до ума идеи Вирта.
[1] https://www.mjt.me.uk/posts/falsehoods-programmers-believe-a.../
Эм. Вы что - думаете, что у программистов монополия на глупость? Нет.
Всё, что вы перечислили и ещё будете перечислять - С ГАРАНТИЕЙ вызывает ошибки. Многочисленные, часто. Вот только цена у них - в районе 0 и привычно игнорится. А у выхода за границы массива или там присваивания вместо сравнения цена ошибки - иногда - вот не ноль.
Третьего дня выгребли бажину из-за того, что "в энергетике х-4" - это дата "четыре дня ВПЕРЁД". Знал это разраб? Знал, он в этой энергетике 15 лет - но... Вот... Ой.
Ну это точно ограничения технической реализации.Решение пропустить три этажа из-за суеверий было умным, что ли? А последовательно класть на существование итераторов и на MISRA C++ 2008 6-2-1 (и его аналоги), а потом рассказывать про цену ошибки - умно?
> Вот только цена у них - в районе 0 и привычно игнорится
Если ошибки можно проигнорировать - их игнорируют, независимо от цены. "Россияне регулярно жалуются, что судебные приставы списывают деньги с их счетов за долги однофамильцев" - это скорее природное явление, чем чья-то ошибка.
google:самая дорогая ошибка программиста
Ракета взорвалась, космический аппарат... свежие новости про Fujitsu Horizon можно и так вспомнить.google:самая дорогая законотворческая OR правотворческая ошибка
Неизвестны такие.> "в энергетике х-4" - это дата "четыре дня ВПЕРЁД".
Ну, может, у этих энергетиков ещё деды писали минус вместо плюса. Добро пожаловать в повседневную жизнь, тут легаси называют традициями и гордятся ими. А как непрограммисты пишут патчи? Это прекрасно:
publication.pravo.gov.ru/Document/View/0001202203140011?index=5
"Что за беда, коль в огороде лебеда? ..."
Да, конце комментария оффтоп, но зачем опять реагировать только на него? Ошибочное или неуместно расположенное присваивание ловится на уровне языка как в расте. Ради исключения ошибки не надо заставлять печатать на символ больше (:=) и убивать составные операторы (+= --/--> +:=).Но си это не раст. Я тоже мог завести какую-нибудь шарманку по этому поводу, но упомянул решение MISRA (да и -Wall ловит зачастую). В MISRA C 2012 есть правило 13.4 (или так*).
* https://wiki.sei.cmu.edu/confluence/display/c/EXP45-C.+Do+no...
> Да, конце комментария оффтоп, но зачем опять реагировать только на него? Ошибочное
> или неуместно расположенное присваивание ловится на уровне языка как в расте.
> Ради исключения ошибки не надо заставлять печатать на символ больше (:=)
> и убивать составные операторы (+= --/--> +:=).
> Но си это не раст. Я тоже мог завести какую-нибудь шарманку по
> этому поводу, но упомянул решение MISRA (да и -Wall ловит зачастую).
> В MISRA C 2012 есть правило 13.4 (или так*).
> * https://wiki.sei.cmu.edu/confluence/display/c/EXP45-C.+Do+no...Да нет, тут не в оффтопе дело - мне сам подход не нравится.
"Тут лежат ГРАБЛИ, которых, по хорошему - лежать не должно"
"И чооо? И вот тут лежат! И тут! И там! А здеся вот и вовсе лопата вкопана!"
"Убрать бы..."
"Неее... никак-никак. Вот тут видишь - вилы торчат, там - лего рассыпан - а ты "грабли!" "убрать!" - традиция! Вооон - видишь - рекомендация, "обходить с осторожностью!" - чего тебе еще надо?!"
Понятно, что конкретно Си с вариациями уже не спасти - и даже "Г-дь, жги!!!" не скажешь - оно с нами ВЕЧНО, но растаскивать вот это все по другим языкам - прям такоЭ.
Мне тоже не нравится подход в энный (или уже в эмный?) раз игнорировать аргументы.Высокоуровневому коду - итераторы. И-те-ра-то-ры.
Низкоуровневому - оптимизации/удобство от индексации с нуля.
Новым языкам - присвоение через '=' с защитой от ногострела на уровне языка*.
Параллельной вселенной - дискуссии о нанесённом ущербе от выбора ':=' в си-подобных языках.* О каком растаскивании речь? Вот после C (1972) в алфавите идёт D (2001). Что там? А там всё хорошо.
int x = 0;
if(x = f()) {} // assignment cannot be used as a condition, perhaps '==' was meant?if(int y = f()) {} // OK
Так какие - "аргументы"-то? Грабли пусть лежат, как лежали - их еще дед лОжил - но ты, сынок их обходи вот эдак, видишь на паласе дорожка натоптана? При этом что считать "высокоуровневым", а что "не очень" - ну, решай там сам, по ситуации - или чо? Обращение к элементу массива по индексу вы ж выкидывать из языка не предлагаете? Ведь да? Да?
Приведенная "защита от ногострела" - тоже прям бАжественная. Нет, нога кнешн останется цела... наверное. А вот голова, которой надо при чтении кода вариант "а" от "бэ" отличать - таки лишним нагружается. Нет, понятно, что два символа вместо одного напечатать - лапки болят, но б-жечки-кошечки - когнитивную нагрузку на читающих-то надо учитывать? Тут присваивааем, там сравниваем, здесь - селедку завернули, ойштайта? Каквигда. У-ди-ви-тель-но. Опять программист "не настоящий" попался, а язык нет-нет, за-ме-ча-тель-ный!
И вот ВСЕ у вас так.
Ах вот ты о чём... Храни в base адрес буфера минус sizeof(el) и будет тебе щщасте.
нулевой элемент именно нулевой, а не первый
а первый - именно первый. На то он и первый что первый.
Просто некоторые уже забыли как им выносили мозги в вузе или при ином обучении проге
Где нулевое называлось первым, а границы массива... там целый курс можно было лещей ловить
ты застрял в си по самые уши
А зачем вообще знать какой там у тебя индекс в массиве? Чтобы что? Максимум, что может понадобиться это длина и то крайне редко.
чтобы байтоёжствовать.
> А зачем вообще знать какой там у тебя индекс в массиве? Чтобы
> что? Максимум, что может понадобиться это длина и то крайне редко.зачем вообще нужен массив? чтобы что?
>чтобы что?Очевидно, что бы массировать ;)
>>чтобы что?
> Очевидно, что бы массировать ;)Очевидно, что это лишнее. Дэвалопа не должен забивать голову лишним, только бизнес логикой. И потом летать на ней, в обязательном порядке. ;-)
Индексация с нуля - это маленькая оптимизация родом даже не из 80-х, а раньше, когда буквально каждый бит экономили. Наберись уже храбрости и потрать пару инструкци
... инструкций на вычисление индексов когда тут же миллиарды операций сжигаются впустую из-за bloatware.
Ваш сарказм невообразимо уныл и неуместен тут.
Ты даже не умеешь отличать сарказм.
Мужики-то не знают.
> компилировать проекты на локальной системеkiller-feature
Ребята молодцы. Вот так раз - и 24я версия!
Солидно звучит. Это ж AI, тут всё должно быть bleeding edge!
А не как какая-то занюханая v0.7.0, которая была в январе 2024 года.
Вот ее инвестору фиг продашь!
Просто и понятно Mojo в 8 раз лучше питона.
Синтаксис бы ему человеческий. И вообще было бы замечательно.
Синтаксис вообще последнее, на что внимание обращается. Как цвет ноутбука. При большом желании можно и поменять, но в целом пофиг.
Вот розовенький да?
Синтаксис у него отличный, родом от Python, а еще есть borrow checker, так что можно писать безопасные программы не жертвуя производительностью!
> Синтаксис у него отличный, родом от PythonНу так в этом то и проблема. Откуда синтаксисе питона хоть что-то хорошее?
> родом от Pythonсамое то, что нужно для тех, кто не способен освоить более одного "лёгкого в изучении" языка.
Зачем оно нужно, столько языков уже наплодили в последнее время без сферы применения или которые не просили
Это язык от главного автора LLVM, Swift и Clang. Т.е. от главного человека в природа который хоть что-то понимает в создании языков программирования.
Иными словами, от главного яблочника. Яблочки от яблони...
> Зачем оно нужно, столько языков уже наплодили в последнее время без сферы примененияMojo 🔥 — the programming language for all **AI developers**
Для ИИ оно, специЯльно-е
Ну и к пиктограмам 🔥 приучают, чтоб назад в прошлое легче
Fuzzy logic умеет? или там, я не знаю, экспертную систему можно забубенить?
> столько языков уже наплодили в последнее времяВсегда столько плодили. Создание языков программирования -- это программерское развлечение, которое по популярности уступает только написанию ОС.
Как раз у можо сфера применения определена на стадии дизайна. А по поводу не просили... тебе на госуслуги должны были запрос прислать?
Что же с вами будет, когда до версии 24.3 дойдёт Zig...
Ниче не будет Z3 только в том варианте
>Zig prioritizes reading code over writing it.Не, дэвид блэйн, не надо.
очередной проект-однодневка, как и swift/golang/прочий современный коммерческий хипсто-мусор
не забудьте накупить книжек на амазоне от орелли, курсов удеми и взять в аренду подкасты на спотифай (или куда там эту дрисню выкладывают?)
Swift - местечковый язык для Apple. С ним всё ясно.Go - используется хорошо для всяких сетевых решений типа REST API и около сетевых делах 7таких как системы управления контейнерами и т.п. Занял свою нишу и за её пределы не выбирается.
Нравится или не нравится, но жить эти языки будет долго и нас переживут. Замены им на горизонте не видно(
> Синтаксис Mojo основан на языке Python, а система типов близка к C/C++Павлино-утко-ёж
> позволяющего компилировать проекты на локальной системе.Чем это лучше… любого другого языка?
Тем, что сабжа нет под винду