Хунбо Чжан (Hongbo Zhang), основной разработчик языка программирования ReScript, также участвовавший в разработке языков OCaml и Flow, представил новый язык программирования Moonbit, специально оптимизированный для создания приложений, компилируемых в универсальный промежуточный код WebAssembly. Ключевыми целями разработки названы предоставление простого синтаксиса, высокая скорость компиляции, генерация компактного и быстрого промежуточного кода WebAssembly. Предоставляется несколько бэкендов для генерации кода, среди которых имеются бэкенды для JavaScript и нативного кода...Подробнее: https://www.opennet.me/opennews/art.shtml?num=59632
Ещё одни буквы экономят.
> Ещё одни буквы экономят.А в результате...
1) На хрусте получилось компактнее.
2) На хрусте програмер и компилер к тому же еще и знает что это i32 -> i32 и могут применить оптимизации с учетом этого фактора. В сабже вместо этого абстрактный int и полный цикл жизни оного оттрекать для оптимизаций - ну такое себе.
3) Поэтому хруст еще и быстрее.
4) А в глобальные оптимизации нынче может что угодно благодаря технологиям типа LTO. Даже сишка. Поэтому чувак немного отстал с этим.
5) И кстати интересно что будет на большое проекте, если вон те предлагаемые трансформации проделать с проектиком покрупней? LTO например ресурсов жрет просто море если им попробовать что-то типа линукскернела окучать, аж энтерпрайзные билдфермы напрягаются :)
Для истинных ценителей даже на сишке есть встройщино-подобные именования типов вроде uint8Ынтыпрайзные фермы порой могут напрягаться даже на сборке веб-морды, ведь иногда являют собой несколько полудохлых компов 20-летней давности, которые обслуживает Вася, что ушёл в отпуск, но что-то вскоре обязательно отвалится, а заменить его - вроде бы некем и это при сотнях сотрудников и целой куче девопсеров
Ну а в целом по сабжу:
> Хунбо Чжан (Hongbo Zhang), основной разработчик языка программирования ReScript,Впервые слышу и о хунбо и о рескрипте
> также участвовавший в разработке языков OCaml и Flow,окамл - порой мелькает, но на кой чёрт нужен в проде так никто и не понял
флоу - была такая библиотека для проверки типов в жс, развиваемая фейсбуком
О ЯП толком не слышал. Ну вот, вроде, Флоу9, новость от 2019. Никаких чанов, правда, там не упоминается
https://www.opennet.me/opennews/art.shtml?num=50602> представил новый язык программирования Moonbit
Ещё один даром ненужный ЯП
> в языке Moonbit изначально не поддерживаются конструкции,
> которые могут мешать выявлению и удалению неиспользуемого кодаЕщё и с изначально-урезанным функционалом
> Проектом развивается полноценная платформа разработки, включающая компилятор,
> сборочный инструментарий, пакетный менеджер и интегрированную среду разработки,
> доступ к которой осуществляется через web-браузер
> (поддерживается как работа в облаке, так и запуск в offline-режиме).
> Также доступен плагин для редактора кода VSCode.
> В настоящее время проект находится на начальной стадии альфа-тестированияУже очевидно, что проект изначально создан не под самоокупаемость, а под поток чьего-то бабла
> Для истинных ценителей даже на сишке есть встройщино-подобные именования типов вроде uint8Капитан, залогинтесь - вы это махровому сишнику рассказали. И таки вот как раз явный размер дает компилеру возможность оптимизнуть это - без огромного анализа всех изменений переменной по всей программе, в попытках понять какой у нее де-факто будет размер и куда ее такую оптимальнее, соответственно :). В WASM правда с этим будут определенные проблемы но вон то выглядит как прострел пяток сразу на старте.
> Ынтыпрайзные фермы порой могут напрягаться даже на сборке веб-морды, ведь иногда
> являют собой несколько полудохлых компов 20-летней давности,На LTO по всей площади штуки с линукскернел - потребуется ...цать гигов оперативы чтобы процессить одним чихом СОТНИ кода да и проц оно использует весьма прилично, на компе 20-летней давности даже если ухитриться набить туда столько оперативы, ждать результата придется довольно долго. Тем более что LTO в силу своей природы не очень хорошо палаллелизуется и все упрется в производительность 1 ядра. Которая 20 лет назад была - "не очень". Когда-нибудь оно конечно скомпилится. Вопрос в том не задолбаетесь ли вы до этого момента.
>> Хунбо Чжан (Hongbo Zhang), основной разработчик языка программирования ReScript,
> Впервые слышу и о хунбо и о рескриптеИ я тоже. Видимо, известный Неуловимый Джо - изобретатель велосипедов.
> окамл - порой мелькает, но на кой чёрт нужен в проде так никто и не понял
Эзотеричная штука. Единственное от мира сего что на нем попадалось - авторефакторы линуксного ядра, но эту черную магию понимает лишь 1 некая Julia Lawall или как там ее, с неким coccinelle, который вроде бы на вот этом вот. Но это какой-то нишевой вспомогательный тул на какие-то очень разовые вещи, явно не продакшн.
> флоу - была такая библиотека для проверки типов в жс, развиваемая фейсбуком
Еще есть TypeScript, но половинчатый и не особо популярный.
>> представил новый язык программирования Moonbit
> Ещё один даром ненужный ЯПНадо было moonspeak называть, был бы хитом у аниме-извращенцев :)
>> доступ к которой осуществляется через web-браузер
[...]
> Уже очевидно, что проект изначально создан не под самоокупаемостьКак же не хайпануть то за инвесторский счет? Впрочем сейчас инвесторы имхо инвестиции порежут и получит чувак фигу в кармане. Там вон в прошлом году 200К таких супернужных корпы уволили немного. И продолжают тренд в этом году. В общем немного опоздал чувак с хайпом.
>> окамл - порой мелькает, но на кой чёрт нужен в проде так никто и не понял
> Эзотеричная штука. Единственное от мира сего что на нем попадалось - авторефакторы
> линуксного ядра, но эту черную магию понимает лишь 1 некая Julia
> Lawall или как там ее, с неким coccinelle, который вроде бы
> на вот этом вот. Но это какой-то нишевой вспомогательный тул на
> какие-то очень разовые вещи, явно не продакшн.Почти как Пролог. Вроде бы и есть.
А вроде бы - несколько лет назад упоминался лишь в 1-й вакансии и то как "... будет плюсом если знаешь... пролог... ". Разумеется, для новичков> Еще есть TypeScript, но половинчатый и не особо популярный.
Популярный, но избыточный и даром ненужный. Не решает абсолютно никаких проблем, зато приносит кучу новых вплоть до ещё одного уровня абстракции
>> Уже очевидно, что проект изначально создан не под самоокупаемость
> Как же не хайпануть то за инвесторский счет? Впрочем сейчас инвесторы имхо
> инвестиции порежут и получит чувак фигу в кармане.Ну там реально слишком избыточное обременение в сравнении с перспективами. С упомянутыми сложностями им потребуется команда не менее 100 человек хорошего уровня. Причём, разнонаправленных и слаженных в рамках команды и процесса
Чем-то невольно вспоминается грандиозный китайский универовский проект 10-15-летней давности, когда там за кучу денег запилили "полностью свои, защищённые собственными патентами высокопроизводительные DSP-проессоры". В итоге оказалось, что то были процы американских контор, у которых шлифанули крышки и записали свои надписи
В Go код выглядит чище и лучше. Всякого мусора типа двоеточий после имен переменных и стрелочек в сигнатурах функций нет (с точки зрения синтаксиса, эти символы там не нужны, они просто декоративные).
Что касается "case", то я когда-то очень давно, когда после Паскаля стал изучать Си, тоже думал что они лишние. А теперь понимаю, насколько это красиво - когда каждый узел синтаксического дерева начинается с ключевого слова. Особенно красиво, когда кода внутри каждого case больше чем одна строчка.
Зачем?
Чел хочет занять нишу, ведь wasm преспективен. А писать приложения на js для wasm нереально, а C++/Rust для него не скриптовые.
какую нишу? ты практически из всего можешь сделать webassembly
Очевидно из резюме автора, что он профессионально занимается разработкой языков программирования, возможно является профессором (и где-то преподаёт, как например Мартин Одерски) и никакой цели получить одобрения от икспертов с опеннета точно не преследует
> он профессионально занимается разработкой языков программированияТ.е. автор языка просто кушать хочет. Вот и сочиняет всякую фигня.
https://www.linkedin.com/in/hongbo-zhang-a8574157/XXX на работе пинает, вот и есть время на ерунду.
Да не зачем. Очередной X для Y. Стоящие идеи в ит кончились.
>Стоящие идеи в ит кончилисьЭто не так. Нет чистой реализации ООП в виде объектов передающих сообщения. Подержка сообщений на языковом уровне это будет прорыв покруче всего асихионного и функционального копошения.
В ракете разве не так?
Не знаю. Но если ракета еще не захавала мозги всему миру, как это в свое время сделали объекты, значит там чего-то не то.
Ты просто гений. Вызови метод другого класа с аргументом, вот тебе и сообщение.
А что, так можно было?
Это не то. У тебя обработка сообщения привязана к конкретной инстанции объекта-обработчика. Ее откуда-то нужно получить и управлять временем жизни этой связи. Вокруг этого крутятся все ди-фреймворки, решая проблему которой при отправке сообщений не существует.В тру ООП могло бы быть так: объект отправляет событие в шину, все кто может его получает и как-то обрабатывает. Явной связи в виде ссылок на объекты нет, есть только семантика высокоуровневых сообщений, они позволяют строить программу более чисто. Весь алгоритм программы строится не на состоянии, а на цепочке сообщей и множестве объектов их обрабатывающих.
Сейчас что-то подобное делается внешним кодом, а хотелось бы чтобы была поддержка прямо в языке.
Парень, тебя к коду вообще подпускать нельзя. А то ты для передачи параметра в функцию создашь для этого контейнер в AWS или Azure.
> Парень, тебя к коду вообще подпускать нельзя. А то ты для передачи
> параметра в функцию создашь для этого контейнер в AWS или Azure.Вы не шарите, теперь модно serverless приложения делать, всякие AWS Lambda, буквально функцию в контейнере запускать.
Иди и смотри!
Ну, кагбэ, к этому, вообще-то всё и идёт. Вызов функции как сервис. Сискол как сервис. Присвоение переменной как сервис. И так далее.
И на этом писать межгалактическую ось реального времени.
Проще: на этом стричь бабло.
> объект отправляет событие в шину, все кто может его получает и как-то обрабатывает.Это бесполезное немного безумное действие.
B каких-то оооочень редких случаях может быть нужно.> Явной связи в виде ссылок на объекты нет
Ссылка на объект = индивидуальное имя
Как вы без имени собираетесь сообщение от объекта А отправить объекту Б?
Минимум у получателя должен быть какой-то адрес мать его.> позволяют строить программу более чисто. Весь алгоритм программы строится не на
> состоянии, а на цепочке сообщей и множестве объектов их обрабатывающих.Вы с функциональным программированием знакомы?
> Сейчас что-то подобное делается внешним кодом, а хотелось бы чтобы была поддержка
> прямо в языке.Smalltalk имеет тру ооп на сообщениях. Самый оопнутый из всех ооп язык.
<троллмоде>Вкорячь в свою программу amqp-брокер</троллмоде>
И зачем это между классами? Может тебе ещё балансировщик впиндюрить на уровне языка, чтобы твой хайлоад не пропал? Для всего этого бреда есть фреймворки под любой мало-мальски используемый язык. И этого достаточно.
А то хотят нажать одну кнопку чтобы у них всё работало, а потом удивляются почему их уволили и заменили ИИ.
Дружище, погугли алгебраические эффекты. Это оно, только лучше. А то что ты описал — это и есть ДИ, и тут от языковой/компиляторной поддержки выигрыша никакого не будет, потому никто и не делает, проще реализовать библиотеками, чем жёстко прибивать язык гвоздями к одной реализации.
> алгебраические эффекты. Это оно, только лучше.
> лучшеНе факт, что вообще хорошо. Goto с модной причёской
>Подержка сообщений на языковом уровне это будет прорыв покруче всего асихионного и функционального копошения.Objective-C
Qt сигналы/слоты
Не оно?
в качестве DRM. Вы зашиьётесь декомпилировать васм-низкоуровневую виртуальную машину с заинлайнеными в код методами типов, в отличие от типов JavaScript, которые реализованы внутри браузера, работают по спецификации и идут под своими именами. DENUVO для сайтов потребляет 10ьгигов оперативы? Твоя проблема, а хозяин сайта - барин, это не ты ему нужен в качестве посетителя, это его сайт тебе нужен, барин прикажет - и браузер с WebButtplug поставишь ради доступа к сайту. Ну или вылетишь с работы, а вместо тебя твой босс наймёт того, кто поставит и вставит, за это в том числе пролам и платят.
>Проектом развивается полноценная платформа разработки, включающая компилятор, сборочный инструментарий, пакетный менеджер
>пакетный менеджерИ ты, Брут. Каждому языку по пакетному менеджеру.
сишка: стопицот пакетных менеджеров от стопицот дистров
опеннетчики: ОКраст: один стандартный пакетный менеджер
опеннетчики: СЛИШКАМ МНОГА
>> сишка: стопицот пакетных менеджеров от стопицот дистров
>опеннетчики: ОКИ это правильно. Так и должно быть. Ибо надо привязывать не язык, а целевую платформу. Так как в одном проекте может быть множество языков. Если ты на это не рассчитываешь, то ограничиваешь развитие проекта.
>> раст: один стандартный пакетный менеджер
> опеннетчики: СЛИШКАМ МНОГАПеревираешь. Жесткая привязка не к тому типу пакетных менеджеров. Это ошибка проектирования.
Поставь через apt 2 версии пакета, давай.(В Nix так можно, но тебе до него далеко)
> Поставь через apt 2 версии пакета, давай.Зачем?
Если нужно тестировать сборку для разных систем, то есть конвееры непрерывной интеграции. Где не только библиотеки разные.
Если для разработки с новыми версиями, то для этого разработка ведется с вытащенными из репозитария.
Отсюда вопрос: Зачем?
Ещё один никому не нужный язык.
Впрочем, если впишутся китайцы с алибабами, тенсентами и хуавеями, то может и взлететь.
Но синтаксис и обязательный сборщик мусора...
Huawei пилит свой новый язык программирования. Это строго типизированный язык (подмножество Typescript), которое будет компилироваться то ли нативный код, то ли исполняться оптимизирующей JIT виртуальной машиной.При том они дизайн весь pipeline, без использования llvm.
Пилят в России ;)) 140 человек работает над проектом.
Это Ascend C, он давно уже вышел.
Беда в том, что там спецрешение по типу Erlang/OTP, только на базе C и он именно для той же ниши, что эрланг изначально, т.е. сети и телеком.
Может пытаться делать всякое прикладное, но пока особо смысла нет, у него банально другие цели.
Ты вообще не читаешь перед тем как ответить? Какой С? Я говорю Typescript. Пилится для Harmony OS. Проект новьё, даже окончательной спецификации языка нет.Никуда он ещё не вышел
Что за Ascend C, где можно почитать?
Cangjie programming language?
> Huawei
> Пилят в РоссииЯсно, понятно. Аминь
В нем GC из экспериментального wasm стандарта или встроенный?
Который год разговоры про WebAssembly, вот даже языки начали новые писать, а применения сабжа что-то не видать.С другйо стороны как подумаешь как тег video быстро выродился в видеорекламу...
В Фигму зайди и посмотри. В голове держи простую мысль что без вебассембли такой функционал реализовать нельзя.
> В Фигму зайди и посмотри. В голове держи простую мысль что без
> вебассембли такой функционал реализовать нельзя.javascript.options.wasm=false и смотреть что сдохнет :)
> применения сабжа что-то не видать.потому что чтобы задействовать модуль WASM, надо испачкаться JS и только через это взаимодействовать с DOM.
В криптовалютках вон используется. Блокчейн Polkadot ( DOT ) вовсю на нем катается, 11-й по капитализации (5.5 млрд). Понятно, тебе наверняка это окажется не нужно ("пузырь","пирамида","МММ", "дармоеды", "спекулянты проклятые"...), но народу уже не первый год требуется.Да и не только там. Но приведи тебе еще что-нибудь в качестве примера - эта штука с большой долей вероятности тут же окажется тебе ненужной. А там уже известно всё - раз не нужно тебе, значит не нужно никому (получается, кто-то пилит ненужное даже для себя? Извращенец). Расслабься. Тебе не нужно, значит нигде не используется, только пилится, ты прав.
> В криптовалютках вон используется. Блокчейн Polkadot ( DOT ) вовсю на нем
> катается, 11-й по капитализации (5.5 млрд). Понятно, тебе наверняка это окажется
> не нужно ("пузырь","пирамида","МММ", "дармоеды", "спекулянты проклятые"...), но народу
> уже не первый год требуется.
> Да и не только там. Но приведи тебе еще что-нибудь в качестве
> примера - эта штука с большой долей вероятности тут же окажется
> тебе ненужной. А там уже известно всё - раз не нужно
> тебе, значит не нужно никому (получается, кто-то пилит ненужное даже для
> себя? Извращенец). Расслабься. Тебе не нужно, значит нигде не используется, только
> пилится, ты прав.Pump it. Dump it.
Да блин опять всё переписывать.
Wasm не нужен. Есть JVM.
В браузере нет
Браузера нет, есть будущая прослойка для загрузки подписек, прямо как PXE, только сразу в Blink.
Все было. Джава-апплеты были покруче чем связка васм+жс, но они появились слишком рано из-за чего мир оказался не готов к такому откровению.
Нет, просто ява дерьмо.
> на низкоуровневых языках, таких как C++ и Rustдожили. напомним, что С - язык высокого уровня
языки не делятся на "высоко-" и "низкоуровневые". Понимаешь ли, уровней много, их больше двух. Поэтому речь идет про "более высокоуровневые" или "более низкоуровневые" языки. Синтаксисы асма более высокоуровневые, чем херачить машинные коды в хекс-редакторе. Но: си менее низкоуровневый, чем допустим Vala.
> Но: си менее низкоуровневый, чем допустим Vala.Сам запутался в своих абстракциях?
все еще лучше, чем считать, что языки бывают ровно двух типов.> Макс Корж — Запомни, есть два типа людей
Где тут Си? В новости про Си ничего не сказано. А если ты не можешь отличить Си от C++, то это лично твои проблемы.
А ведь было время, когда WASM означал нечто для избранных...
Ты про Watcom С/С++/Asm ?
к числу которых ни ты, ни прочие иксперды опеннет никогда не принадлежали
инди, залогинься.
Там где Int, там и гниль.
Кстати да, в этом языке лунатиков, инт какой вообще? Безразмерный, фиксированный, случайного размера(как в сишке и сипипишке)?
int зависит от платформы и вообще открой для себя stdint.h
>int зависит от платформыТо есть Moonbit страдает нонбинарным гендерфлуидным интом, как и сишка?
>и вообще открой для себя stdint.h
Ненужно мне ваши .h файлы показывать, держите этот срам при себе.
Не удержишь :)В этом файле лежат макросы для определения фактического типа данных, скрывающегося, например, за словом uint8_t. Это нужно для компиляции одного и того же кода на разной архитектуре проца.
Int и иже с ними сейчас зависит не от платформы, а от параметров компилятора.
А можете привести пример этих параметров (для GCC, например)?
Для gcc на x86 нужно передать компилятору дефайны.
Обычно применяю для единнообразной сборки.
А то на разных 32х битных платформах(микроконтроллры, linux, windows..) бардак с long.
Для некоторых архитектур у gcc есть и ключи управляющие размерностью типов.
вас пример привести попросили, а вы своё же сообщение другими словами написалиесли вы про m32/m64, то это не то.
>Необходимость создания нового языка объясняется тем, что разработка приложений для WebAssembly на низкоуровневых языках, таких как C++ и Rust, сопряжена со сложностью изученияПоэтому надо выучить целый новый язык в дополнение к уже выученным C++, Rust и JavaScript.
Считай что это новый фреймворк для джаваскрипт.
не нужны, всё нужное давно уже и так есть в браузере.
Вот тоже реально бесит. Зачем с новым языком придумывать новый синтаксис? Хотя бы на 99% можно его не менять. Понятно, что функционал языков может отличаться.
Ну любит чел поддобавить цифровой энтропии, что теперь поделать...
Отлично, избавились от указателей и оператора return. Вот если бы ещё избавились бы от скобок, был бы вообще огонь.
>Вот если бы ещё избавились бы от скобокPython, Nim, Mojo for you
> Python, Nim, Mojo for youТолько питон 2 позволял не использовать скобки. А весь прочий указанный хлам не имеет синтаксиса без скобок.
Блоки отступами без скобок. Что в 2, что в 3.
Это у Ruby и блоки, и программирование возможно без скобок. А у питонячьего семейства без скобок - никак. Попробуйте в питоне функцию вызвать без скобок.
Стоит добавить, что Ruby вообще позволяет не использовать скобки в программировании. Обойтись без простых, без фигурных, без квадратных.. Вообще без скобок, если надо. Это до сих пор его позволяет оценивать как уникальный язык для создания domain specific embedded languages. Жаль, что молодёжь сейчас неграмотная и таких особенностей языков программирования не знает.
Вообще-вообще без скобок - прям Бейсик какой-то.
Нет уж, функции пусть лучше с круглыми скобочками останутся. А то, что во втором print без скобок был, так то был оператор, а не функция.
> myfunc = lambda x: x
> res = map(myfunc, [])myfunc вызвана без скобок
Но только в этом фрагментике и простые, и квадратные скобки присутствуют. Да и вызов тут не функции, а лямбды. А разговор был об отсутствии скобок вообще.
> Попробуйте в питоне функцию вызвать без скобок.class A:
def __add__(self, value):
return "Aaaaaaa!"
@property
def b(self):
return "zavarudo!"a = A()
a + a
a.b
хотите сказать, что тут скобок нет? И даже в a.b можно аргументы передать?
Зато вместо скобок приходится считать табы. Так себе решение.)))
>> избавились бы от скобок,Ruby и Scala. Только семантика там разная. Если у Ruby отказ от скобок выглядит органично, то вариант Scala - не очевидно.
>>Вот если бы ещё избавились бы от скобок, был бы вообще огонь.В принципе Си позволяет не использовать фигурные скобки, их можно заменить запятыми.
До кучи можно не использовать и операторы if и for. Да, читаемость будет чуть хуже, но если цель "упростить", то самое то. %)
Чего набросились? Может чуваку покайфу каждые несколько лет выкатывать по ненужному языку. Может продаст кому серию курсов или книг.
С таким названием не взлетит.
> func
> fnОпределитесь там.
> .moon
MoonScript тем временем: ну да, ну да, пошёл я к чёрту.
>> func
>> fn
> Определитесь там.Top-Level Functions
Functions can be defined as top-level or local. We can use the func keyword to define a top-level function that sums three integers and returns the result
Local Functions
Local functions are defined using the fn keyword. Local functions can be named or anonymous. Type annotations can be omitted for local function definitions: they can be automatically inferred in most cases.
На хрена плодить ненужные сущности ?!
На сколько языков раст уже повлиял - не сосчетать
Какой-то Moonbit, вот WebAss ( сокращение от WebAssembly, а не то что вы подумали) все летел бы. Сразу видно для чего язык.
Всё правильно подумали! https://en.wikipedia.org/wiki/Mooning
Очередная серебрнянная пуля
Которая в очередной раз мимо)
Садись, два. "Стеклянный, оловянный, деревянный".
А кстати, на картинке в moonbit одновременно "func" и "fn"?
Остаётся carbon.
cabron же.
Неужели Раст здорового человека?)))
Чел переизобрёл LTO?