LINUX.ORG.RU

Метапрог-прототип 34 + СУВТ по логическому типу

 , , ,


0

3

Следующая тема:

Метапрог-прототип 42

Подпишусь в поддержку Столлмана Bitcoin-кошельком из первой темы про Метапрог:

Metaprog Project supports Richard Matthew Stallman. Shame to SJW, Big Tech and Big Media. We need to get rid of them or Big Money will enslave us. It is do or die! Stay straight, RMS!

Подпись:

H/3cqHl7HGdAQd9K/io474IbLYlIKi/8R6pw1Vbpz0oTN4kihI5YO4dIdZo2VRdJbSp8kWmtWgC5TRTs0MkBIAo=

Подробности:

Движение отмены Столлмана (комментарий)

Следующая версия:

www.linux.org.ru/forum/development/16219448

Скачать:

https://mega.nz/file/6VJCEboQ#N3pu86bqI31Jp15aHWt6l-FIkY_RUws0CZK9aMcvxZo

В версии 34 исправлен тот же баг что и в 33, но другим способом, так как багфикс из версии 33 вызывал другие баги.

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

К выпуску версии 32 неожиданно обнаружилось, что СУВТ может иметь переключатель логического типа. То есть, можно задавать типы на значения «да» и «нет». Никаких изменений для этого вносить с 31 версии не пришлось, надо лишь задавать в определении СУВТ типы по значению СУВТ 0 на «нет» и 1 на «да». Из изменений - некоторые исправления багов (например, с кодогенерацией структур и операций над структурами под указателями), а также экспериментальная фича отрисовки канваса через dll-вызов окошка на SDL, за подробностями обращаться к MOPKOBKA или kote4ka в Метапрог онлайн.

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

В версии 30 - исправление бага с сишной трансляцией циклов с регистрами. Теперь их значение берется на сишном уровне не напрямую, а через промежуточную переменную. Это позволило реализовать алгоритм вычисления чисел Фибоначчи, где есть непосредственная передача данных между разными регистрами. Метапрог-схема находится в меню обучение - примеры - Фибоначчи, выглядит она так:

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

Для сравнения - тот же алгоритм на LabVIEW:

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

Сишная трансляция:

https://pastebin.com/Z8rzvZpQ

Сравнение с тем же алгоритмом на «аналоге» Метапрога с бекендом на python говорит само за себя:

Metaprog здорового человека (комментарий)

В версии 29 - крупные изменения системы типов. «Встроенных» типов, вытягиваемых через меню «структуры», больше нет, все они теперь представлены в стандартной библиотеке. В особенности изменения коснулись числовых типов: теперь такие типы как число, дробь, целое, знаковое и беззнаковое представлены как многотиповые из соответствующих типов. Например, беззнаковое - многотиповой из 8, 16, 32, 64 и 128-разрядных беззнаковых, целое - многотиповой из знакового и беззнакового, число - многотиповой из целого и дробного. Теперь такие типы можно обрабатывать как многотиповые, поступая с числами разных типов по-разному.

В версии 28 переключатель (аналог сишного switch) работает с многотиповым типом. Выполнение схемы происходит только на ветке, соответствующей поданному на переключатель типу. Ветвление происходит не в рантайме (как в случае СУВТ), а при кодогенерации - не соответствующие поданному типу ветки не генерируются. Теперь осталось сделать цикл по структуре.

В версии 27 добавлена удобная возможность создать новую подфункцию, не останавливая весь прототип. Кнопка блоки - новая подфункция.

Также обнаружилась (но пока не исправлена) проблема с терминалом счетчика повторений цикла в цикле по условию - пока что не используйте его!

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

В версии 26 исправлена трансляция циклов при определенных условиях (не всегда корректно транслировались циклы с жесткими последовательностями, идущими к входному блоку).

В версии 25 исправлена трансляция сложных рекурсивных структур с СУВТ.

В версии 24 был исправлен баг транслятора, проявившийся в версии 23: на некоторых схемах (например, отправки данных по TCP) код, отвечающий за поток данных, «вливающийся» в ветки с условиями, мог сгенерироваться после кода самого условия.

В версии 23 исправлен еще один баг с упаковкой проектов, а также баг трансляции условных схождений.

В версии 22 исправлен баг с упаковкой проектов, из-за которого не паковались зависимости из локальных форков. При этом удалось существенно ускорить упаковку проектов.

В версии 21 наконец-то добавлена корректная трансляция схем, содержащих рекурсии. Как пример можно привести схемы из репозитория «разработка интерфейса на нуклеар+» (можно скачать через Метапрог онлайн). В этой схеме отрисовка элементов интерфейса основана на СУВТ (структура условного выбра типа). В этой СУВТ возможны такие элементы интерфейса, как текстовый лейбл, текстовое поле, кнопка и (самое интересное) - линия из элементов интерфейса. В последнем случае происходит рекурсивный вызов функции, обрабатывающей массив из тех же СУВТ элементов интерфейса.

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

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



Последнее исправление: metaprog (всего исправлений: 21)

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

Пока только через Нас ;) Можем передать, если осилят наконец…

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

Ну опять та же фигня, только с Tcl_Obj, Вы это серьёзно? Ещё PyObject приплетите, и кто там ещё…

Так может вот эти пресловутые СУВТ, которые пилятся уже полгода – это Metaprog_Obj, поскольку метапрог без них, как утверждает автор, сам на себе не может быть сделан? Та же самая скриптуха? Ну может я чего то не понимаю, метапрог – это такой дзен для избранных, остальные предпочтут почитать нормальную документацию.

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

СУВТ это чет типа своих структур, но нельзя же сказать что в сишке структуры == C_Obj, это просто отдельный тип. А в метапроге float, int, указатели (в том числе и на функции), структуры, енумы чисто сишные, без оберток.

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

Версия 23

Подробности в заголовке.

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

Ты немного не понимаешь, как работает капитализм.

Работает по принципу «грести бабло любой ценой».

Сказал человек, который полгода назад узнал, что такое тернарный оператор

Я и щас не е знаю что это за хрень такая. И что теперь?))

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

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

В Метапроге схемы/диаграммы хранятся в файлах mpbd на диске, но если надо в каком-то месте чуточку изменить схему, не изменяя первоисточник - моэно ее отвязать от файла-источника, сделав локальный форк. Чертовски удобно, в Лабвью мне такой возможности очень не хватает. В текстовых ЯП я тоже о подобных возможностях не слышал.

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

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

Ну так перечитывай тему перед отправкой на форум.

Это не «сущность», это гипертрофированная реакция на косяк. Я вот то, что имелись в виду «локальные», сообразил где-то после третьего перечитывания предложения.

И это не мифические «антиметапрогеры», это довольно-таки обычная реакция на опечатки. В разных темах. Я это не то, чтобы одобряю, но это следствие, не причина.

В текстовых ЯП я тоже о подобных возможностях не слышал.

В git есть ветки.

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

Забавно, насколько я угадал развитие событий. ТС, в силу своей необразованности и нежелания заниматься самообразованием, расширять кругозор, раз за разом изобретает уже давно существующие вещи, но на свой лад и криво. Боюсь, такими темпами мы метапрог-на-себе увидим нескоро.

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

В git есть ветки.

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

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

Ну методика другая, смысл тот же. Да, гит всё будет делать через файлы, зато история останется.

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

Вангую ответ от ТС, что «в NI сидят идиоты».

Я, конечно, в такую степень идиотии успешных коммерсантов не верю (если их хватило на то, чтобы запретить создание графических сред программирования средствами LabVIEW, то должно было хватить и на то, чтобы сообразить сделать такое самим…).

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

И вот учитывая, что ТС все еще считает NI недалекими и тупыми, ты правда думаешь, что он чему-то научился?

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

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

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

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

А почему любая цена не включает превращение настолько готового лабвью в общее средство разработки?

Потому что у них не хватает умственных способностей додуматься до этого.

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

Локальные форки - это не про СКВ. Это про «местные» копии подфункций, которые можно изменять в одном конкретном месте, не изменяя оригинальный исходный файл схемы данной подфункции.

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

Метапрог-прототип 34 + СУВТ по логическому типу (комментарий)

Потому что у них не хватает умственных способностей додуматься до этого.

ЧТД. Позиция «я один тут стою в белом, недофинансированный гений с недооцененными идеями» как была с первого треда, так и осталась. Идеи как были, так и остались, несмотря на десятки примеров, где ему убедительно доказывали, что концепция сишки в квадратиках требует как минимум пересмотра.

Все еще считаешь, что он чему-то учится?

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

Я, конечно, в такую степень идиотии успешных коммерсантов не верю

История и не такой идиотизм знала. Джеймс Ватт, в честь которого даже названа единица измерения, делал паровые машины низкого давления для откачки воды из шахт и успешно делал на этом деньги. Но идею сделать паровую машину высокого давления считал идиотизмом, пока «неуч» Тревитик не сделал паровоз. Если б этот «неуч» оглядывался на «умных дядек» при деньгах - черта с два он бы что изобрел, на лошадях люди ездили б намноооого дольше.

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

так это даже не перегрузка, а копипаст под другим названием.

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

это и не наследование, и не перегрузка, это именно копипаст в пределах приложения транслятора. Там нет какой-то связи наследования, там нет каких-то иных параметров и выбора функции по ним, это как раз таки какая-то паста получается, ну или пусть меня поправит метапрог и скажет что там есть какая-то связь одного куска кода и пасты с него, я так понимаю что связки между ними нет изменения в одной никак не влияют на другую т.е. если я изменю базовую функцию от которой я получил такой локальный форк, форк это никак не поменяется, он будет основан на том коде с которого был сделан форк ранее, так @metaprog?

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

Жду когда if, while, int тоже станут ООП или хотя бы наследованием.

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

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

Совершенно верно.

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

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

В закладки

Вообще пофиг что.

Человеческая ссылка нужна тем, кто их запоминает ;)

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

Так может вот эти пресловутые СУВТ, которые пилятся уже полгода – это Metaprog_Obj

Нет, ибо они используются лишь при надобности, а не для всех переменных подряд.

сам на себе не может быть сделан

Может, просто сложнее.

это такой дзен для избранных, остальные предпочтут почитать нормальную документацию

Нет, это как раз чтение документации — для избранных. Нормальные люди даже инструкции к технике не читают.

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

любой ценой

Это идеальный случай (анархо-капитализм).

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

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

Плохенький аналог, так как в основе джава, а не Си. Ты б еще назвал Лабвью. Кстати, в MyOpenLab надо для получения базовых блоков ооочень много писать на джаве, а на Си я в Метапроге пишу только инклюды и простейшие вставки для таких вещей как арифметические операции. Больших вставок текстового сишного кода, как ты ванговал, нет - их делать можно, но нужды нет.

в чем принципиальная новизна? Ты просто облекаешь алгоритм в другую форму.

А это чем не новизна? На Си в тексте писать жутко неудобно, а в Метапроге куда проще.

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

Нет, ибо они используются лишь при надобности

Так чтож столько воя о них было в предыдущих тредах? Очередной вариант Variant’а, а столько пафоса и претензий на гениальность изобретения, да и то Светило не смогло с первого раза реализовать нормально, так что пришлось ему пилить СУВТ 2.0.

Может, просто сложнее.

Тык может или не может? Вот автор вроде утверждает, что не может. Поэтому и пилил их с таким упорством.

Ну пусть немного сложнее, зачем было отвлекаться на СУВТ, а не решать первоочередную поставленную цель?

Нет, это как раз чтение документации — для избранных.

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

Нормальные люди даже инструкции к технике не читают.

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

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

Вау, языков программирования гораздо больше чем я думал:

https://imgur.com/a/541iSUc

В 1969 году уже было 120 языков программирования…

И это не считая всяких языков сделанными любителями как хобби.

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

В 1969 году уже было 120 языков программирования…

Сначала подумал «что так мало», потом увидел год. Тогда похоже на правду.

Сколько их сейчас — страшно подумать…

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

Потёрли

Есть такое дело. Извини что в оффтоп втянул.

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

Hello world прекрасен конечно.

(=<`:9876Z4321UT.-Q+*)M’&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**hKs_dG5[m_BA{?-Y;;Vb’rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<

Malebolge, восьмого круга ада Данте

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

На рынке нет потребности в этой штуке, кроме как для конфигурирования приборов

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

mertvoprog
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.