LINUX.ORG.RU

Метапрог-прототип 19 + API на СУВТ + ускорение трансляции

 , , ,


0

3

Скачать:

https://mega.nz/file/ONxVwDJb#zFun6oB2BOxRglVeqNGusssQqT4teCdvtt4dEd0kfV0

В 19 версии серьезно переработан транслятор, что ускорило трансляцию схем с множеством ветвлений.

В 18 версии прототипа добавлен вывод значения переключателя из свича по СУВТ. В остальном она не отличается от 17 версии.

Это позволяет реализовывать весьма интересные вещи, например API для работы с чатом Метапрог онлайн на Метапроге:

https://i.postimg.cc/52xTMR4V/image.png

К блоку операции над структурой надо (не считая константы СУВТ) подключить ТОЛЬКО один из входов определенного типа. Это может быть переключатель (перемикач), задающий значение селектора СУВТ или любой из типов СУВТ. При подключении типов соответствующее значение переключателя СУВТ будет задано автоматически.

Кстати, украинский в Метапроге знать не совсем обязательно. Вот совершенно та же схема без изменений, только язык в настройках поменял на русский:

https://i.postimg.cc/MTygw2Qz/image.png

Только кейсы енума, управляющего СУВТ, было лень перевести:)

В версии 17 исправлен серьезный баг с кодогенерацией. В 16 версии при трансляции схем, в которых в ветку с условием «входят» данные извне, код, отвечающий за обработку этих данных (до их входа в условие) мог сгенерироваться после тела условия. Это серьезно тормозило развитие проекта, но теперь в стандартной библиотеке есть демки, успешно соединяющиеся с сервером Метапрог онлайн через Tor (SOCKS5) и работающие с некоторыми методами (проверить версию клиента и логин/регистрация).

Скорее всего, простой чат-клиент Метапрог онлайн с использованием СУВТ можно будет реализовать уже в этой версии прототипа. Если это не удастся - будут багфиксы, но если таки удастся - можно будет приступить к макросам времени компиляции, таким как «многотиповой» тип и цикл по структуре. После чего уже можно будет серьезно переделывать Метапрог «на самом себе».

Предыдущая версия:

Метапрог-прототип 16 + СУВТ по енумам

Ответ на: комментарий от AntonI

в итоге у него точка входа неопределена, соответственно трасса выполнения неопределена, о чистых функциях и речи нет - кушайте UB ложкой.

Никто (включая самого ТС-а) не знает какая из функций первой запишет данные в квадратик.

Насколько я понял, тебе не все равно какой из блоков в параллельно расположенных независимых друго от друга ветках выполнится. А не все ли равно, если результат один и тот же? Если же нужна конкретная последовательность выполнения - ставишь жесткую последовательность.

В Лабвью параллельные ветки вообще выполняются буквально параллельно. А в Метапроге пока что нет, но со временем думаю такое вкрутить.

metaprog ()
Ответ на: комментарий от kostyarin_

Так ты даже первую не осилил.

И не хочу.

Ну тогда POSIX-regexp ты должен принять. Правда не могие находят их удобными.

Чем они лучше?

И ещё вопрос, когда ты будешь машину Томпсона из блоков собирать уже в сотый раз и тебе придёт идея оптимизировать всё это дело, что тогда ты придумаешь вместо регулярок?

Графический конструктор регулярок. Если интересно - могу по свободе расчехлить старые (еще до-ЛОРовские) версии прототипа Метапрога, я там делал что-то подобное, но бросил - слишком сложно, может позже вернусь к этому. Даже в последней версии прототипа есть рудимент - в тайпдефе «об'єкт блок-діаграми вид,ctl» осталась «текстова структура».

metaprog ()
Ответ на: комментарий от Razk

Ну это чел, сделавший Юникс. А что в контексте данной темы онзачает машина Томпсона?

metaprog ()
Ответ на: комментарий от metaprog

Думаешь прямо делать Метапрог на opengl (opengles?) лучше, чем на SDL и нуклеаре?

Эмм, тут как бы OpenGL сам по себе не работает, что бы его завести нужен например SDL. А нуклеар как бы опять же нуждается в рендере одим из которых может стать OpenGL посредством SDL. Под opengl я имел в виду базу для отрисовки нет пробелм поверх использовать иное кросс что нуклеар что sdl.

В том же нуклеаре есть восхитительная демка с нодами. Ты чай видал её и тыкал.

LINUX-ORG-RU ★★ ()
Ответ на: комментарий от metaprog

Чем они лучше?

Ну ты же не можешь читать регулярки обычные – осилить не можешь. Специально для тебя придуманы POSIX-регулярки. Там типа проще. Есть такие штуки, типа

[:alnum:] - alphanumeric characters
[:digit:] - digits

для среднего железнодорожника должно зайти без особых проблем. В любом случае проще, чем ковырять тупые блоки.

Графический конструктор регулярок.

я там делал что-то подобное, но бросил - слишком сложно

Ах-ха-ха.

kostyarin_ ★★ ()
Ответ на: комментарий от metaprog

Ну это чел, сделавший Юникс. А что в контексте данной темы онзачает машина Томпсона?

Ну так Thompson NFA как раз оптимальный для регулярок движок. Ты же за оптимизацию топишь и всё такое. Да к тому же Кеннет утверждал, что любит всё упрощать. И Thompson NFA как раз-таки топорно прост. Это я про

я там делал что-то подобное, но бросил - слишком сложно

Что lookahead/lookbehind от тебя никто и не ждал.

kostyarin_ ★★ ()

Была выпущена 18 версия прототипа. Подробности в заголовке темы.

metaprog ()
Ответ на: комментарий от metaprog

Это я намекаю, что учить тебя от твоей текущей квалификации дворника до хотя бы младшего помощника старшего подносчика кофе сеньюру плюсовику - дело неблагодарное.

liksys ★★ ()
Ответ на: комментарий от metaprog

Была выпущена 18 версия прототипа

Для кого ты это пишешь, скажи пожалуйста? Кроме полутора умственных инвалидов, этим никто не пользуется. Всем плевать.

liksys ★★ ()
Ответ на: комментарий от metaprog

Это никак не отменяет того, что регулярки работают с символами а не байтами. Я уже вам писал ранее, что если вы привязываетесь к конкретной кодировке и работаете с ней как с байтами вам надо будет при изменении типа кодировки менять весь алгоритм. Это было в теме про бенчмарк. А если вы работаете с символами, оставив на откуп промежуточной программы чтение/ запись символов из потока байт, то алгоритм останется точно таким же

saibogo ★★★ ()
Ответ на: комментарий от metaprog

А не все ли равно, если результат один и тот же?

Он не один и тот же.

Есть некая теория таких вещей, но поскольку Вы с ней как обычно незнакомы (и вообще считаете что теория ненужна), то не считаете что тут вообще могут быть проблемы.

Это как со сборкой мусора история - Вы кричали что все это ненужно и не является проблемой, в итоги все Ваши поделки текут как решето.

AntonI ()
Ответ на: комментарий от metaprog

А как быть если в тексте встречается, скажем, [: ?

Экраном. Торук Макто. Фирштейн?

kostyarin_ ★★ ()
Ответ на: комментарий от fsb4000

В чём парадокс того, что он хочет делать GUI адекватно?

И чем программное создание каждого виджета адекватнее рисования GUI в дизайнере с последующим (строго по необходимости) навешиванием обработчиков?

К тому же все эти формошлепательные инструменты это вендорлок.

Да уж такой вендорлок. И Qt, и GTK имеют формошлёпательные инструменты под свободной лицензией, хочешь — форкай. А у Qt есть ещё и QML, который

ты можешь писать в любом редакторе/IDE.

Но мне, правда, виджеты всё равно больше нравятся.

hobbit ★★★★★ ()
Ответ на: комментарий от hobbit

И чем программное создание каждого виджета адекватнее рисования GUI в дизайнере

В том что сразу видно всё в коде, в том что получаются читаемые коммиты, а не так что изменил чуток в дизайнере и он всё там переделал.

Да уж такой вендорлок. И Qt, и GTK имеют формошлёпательные инструменты под свободной лицензией

Ну я и говорю вендорлок. Qt рабы поэтому и пользуются убогим QtCreator, а не божественными Visual Studio и Clion или KDevelop.

GTK рабы вроде GnomeBuilder пользуются. Хотя точно не знаю…

Свободные же люди могут пользоваться любым своим божественным редактором с любой библиотекой и не страдать от вендорлока.

fsb4000 ★★★★ ()
Ответ на: комментарий от liksys

Не забудь еще 5 страниц накатать как всем все равно, и как тебе не хочется тут сидеть.

paramon ()
Ответ на: комментарий от fsb4000

Дизайнеры идут отдельно от IDE, у Qt есть QtDesigner, а у Gtk есть Glade.

paramon ()
Ответ на: комментарий от fsb4000

Да разницы то, есть там тот вендорлок или нет, ему же только прототип написать. Дальше пусть делает что хочет. Ну и наличие формашлепства не исключает возможности писать руками если уж очень хочется.

abcq ★★ ()
Ответ на: комментарий от abcq

Дальше пусть делает что хочет

Пусть и делает как хочет, это же @hobbit начал наезжать на то что он не пользуется дизайнером.

Если рисуешь интерфейс дизайнером, то даже на форуме не спросить, что ты делаешь не так. gif прикладывать с тем как ты куда-то что-то потянул мышкой?

А код разметки, который хоть в html, XML, QML, cpp, c, java или любом другом формате универсален.

fsb4000 ★★★★ ()
Ответ на: комментарий от fsb4000

Если рисуешь интерфейс дизайнером, то даже на форуме не спросить, что ты делаешь не так. gif прикладывать с тем как ты куда-то что-то потянул мышкой?

Ну вообще-то нет, формашлепство, насколько я помню, имеет тоже свой формат представления который в итоге превращался в код, в свободных инструментах нет ничего закрытого все можно посмотреть. В закрытых просто скидываешь проект на форум, либо архивом, либо ссылкой на репозиторий и все тоже самое. Надуманная проблема.

Единственная проблема которая не надумана это то, что проприетарный инструмент тут никто не будет качать и устанавливать.

Кстати в один момент я даже уже хотел таки скачать это лабвью коммьюнити идишн, но форма регистрации для того чтобы это все сделать отбила желание напрочь, как будто было сложно сделать скачивание по прямой ссылке, непонятно что они ожидают, что каждый будет указывать реальную инфу или что, к чему им вообще эта информация, какую статистику они хотят получить, всегда раздражала подобная проприетарная херня.

По сути он со своим лабвью делает тоже самое, так как это тоже графическая шелуха схожего рода действия как и графдизайнер форм.

abcq ★★ ()
Ответ на: комментарий от fsb4000

А код разметки, который хоть в html, XML, QML, cpp, c, java или любом другом формате универсален.

А теперь внезапно, дизайнеры из Qt и GTK именно в XML и сохраняют.

hobbit ★★★★★ ()
Ответ на: комментарий от hobbit

А много кто XML может прочесть и поправить? У GTK кстати дизайнер просто ужасен, невозможно пользоваться, постоянно глючит.

paramon ()
Ответ на: комментарий от metaprog

Если рассматривать твои схемы как упоротую головоломку, то нужно либо пытаться её решить, либо не решать вообще. Нет смысла в головоломке, если сразу спрашиваешь решение. Если рассматривать это как некий инструмент для работы, то… это не то чтобы смешно, это даже грустно.

Задачи, которые нужно решать, уже достаточно сложны. Либо концепции сложны для понимания, либо объём задач большой, либо и то и другое одновременно. Вставлять себе палки в колёса — не самый лучший подход к решению проблем.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Я сразу вижу где начало и где конец, никаких проблем чтение метапрог-диаграмм у меня не вызывает, читаются они даже проще чем текстовый код. Привыкнуть просто надо, текстовый код люди сразу быстро тоже не читают, да и конец+начало там тоже сразу не увидишь без опыта.

paramon ()
Последнее исправление: paramon (всего исправлений: 1)
Ответ на: комментарий от paramon

Я сразу вижу где начало и где конец, никаких проблем чтение метапрог-диаграмм у меня не вызывает, читаются они даже проще чем текстовый код.

Поздравляю.

Привыкнуть просто надо

Зачем? Это как-то помогает в создании и отладке программ? Может быть, ввод быстрее? Или ошибки лучше видно?

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Зачем?

Привыкаешь пока программируешь на метапроге, привыкание не сама цель.

paramon ()
Ответ на: комментарий от hobbit

А теперь внезапно, дизайнеры из Qt и GTK именно в XML и сохраняют.

Какая разница в чём сохраняют? Важно в чём ты изначально пишешь.

Внезапно, Метапроговские диаграммы сохраняются в С, но это всё же отличается от того что писать на С изначально.

fsb4000 ★★★★ ()
Ответ на: комментарий от paramon

привыкание не сама цель

Это очевидно. Но в чём цель?

Ты вообще сообщение после слова «зачем» читал? Там наводящие вопросы. Или для тебя это ещё пока пустой звук?

i-rinat ★★★★★ ()
Ответ на: комментарий от paramon

Ну если только специально его прятать, по крайней мере начало. Почти во всех языках есть точка входа, она имеет вполне понятные отличительные особенности. В метапроге как-то помечается точка входа кроме как назвать файл с диаграммой каким-то говорящим названием (надеюсь это возможно сделать или же до сих пор нет неявных файлов метапрог диаграмм отдельно от среды метапрога?)

abcq ★★ ()
Ответ на: комментарий от fsb4000

на данном этапе не особо, просто генерация настолько ущербная что уж проще на С или на метапроге не заглядывая в генерацию вообще.

abcq ★★ ()
Ответ на: комментарий от AntonI

В метапроге есть последовательности через которые можно указать порядок исполнения.

paramon ()
Ответ на: комментарий от fsb4000

Внезапно, Метапроговские диаграммы сохраняются в С, но это всё же отличается от того что писать на С изначально.

У метапрога исходником являются диаграммы в блоб-формате. У кутешного дизайнера исходник — тот же XML. Так что нет, некорректное сравнение.

hobbit ★★★★★ ()
Ответ на: комментарий от paramon

через которые можно указать порядок исполнения

А можно не указывать, что ли?

i-rinat ★★★★★ ()
Ответ на: комментарий от paramon

А можно не указать. И насколько я читал то что ТС выкатывал как доки - не всегда можно. Там даже с константами уже зоопарк начинается…

AntonI ()
Ответ на: комментарий от paramon

Ну прям графический Си. UB встроено в язык, и достаточно легко вызывается. Только нет внятного списка того, что defined, поэтому UB может скрываться где угодно!

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Я не вижу проблем. Нужен четкий порядок - проводи последовательность.

paramon ()
Ответ на: комментарий от AntonI

Что значит не всегда можно? Последовательность задать можно для всего без исключений.

paramon ()
Ответ на: комментарий от paramon

то и значит. Мне сейчас лень искать этот коммент ТС-а и разбираться в нем по новой.

Даже если и можно, необходимость каких то доп.манипуляций это еще один гвоздь в крышку метапрогра. Там и для простых то вещей тонна спагетти на экране, а уж необходимость указать в каком порядке это будет дергаться это эпичненько…

Вот что бывает, когда проектировщик ленится учить теорию.

AntonI ()
Ответ на: комментарий от AntonI

Так ты даже прототип не запускал, мало ли как ты там комментарий читал.

Даже если и можно, необходимость каких то доп.манипуляций это еще один гвоздь в крышку метапрогра.

Такой проблемы нету, если бы ты хоть немного потыкал бы примеры то все бы понял. Обычно при последовательном выполнении данные передаются в последующие функции, ну и никакие последовательности тут уже не нужны.

paramon ()
Ответ на: комментарий от paramon

Так ты даже прототип не запускал, мало ли как ты там комментарий читал.

Нет необходимости пробовать г-но на вкус что бы понять что это г-но. Обсуждали 100500 раз.

Обычно при последовательном выполнении данные передаются в последующие функции, ну и никакие последовательности тут уже не нужны.

Диана?

AntonI ()
Ответ на: комментарий от i-rinat

Все так, потому что их нету. Пропустить установку последовательности просто невозможно, потому что код читается в том числе и по ним.

paramon ()
Последнее исправление: paramon (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Тут как с ; пропустить можно, но легко находится. Хотя более подходящий пример:

....

if(x)
 code;
else
 code;
 code; // <--

....

paramon ()
Последнее исправление: paramon (всего исправлений: 1)
Ответ на: комментарий от paramon

UB легко находится? В мешанине жгутиков и квадратиков? Ну-ну

AntonI ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)