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)
Ответ на: комментарий от COKPOWEHEU

Как использование Nuklear связанно с встраиванием его в компилятор? Ответ - никак. Я вообще не понимаю о чем мы говорим.

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

Как использование Nuklear связанно с встраиванием его в компилятор? Ответ - никак.

Тогда зачем вы с ним возились?

Сеть, «многотиповые типы» и «циклы по структурам» тоже к компилятору никакого отношения не имеют. Ими вы зачем занимаетесь?

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

Тогда зачем вы с ним возились?

Имитация бурной деятельности, полагаю :-)

И походу, опять пшик. Не осилили…

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

Хорошо. Допустим, готовые векторные редакторы вас не устраивают. Но что мешает написать отдельно транслятор, и отдельно редактор / IDE.

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

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

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

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

Допустим, готовые векторные редакторы вас не устраивают.

Они просто не подходят.

Но что мешает написать отдельно транслятор, и отдельно редактор / IDE.

В том что нужен не редактор а IDE, а его отделить от компилятора все равно нельзя, можно лишь сделать интерфейс для связи.

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

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

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

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

Они просто не подходят.

Скажи еще, что вы пытались какой-нибудь свободный редактор диаграмм под свои нужды подогнать, но не осилили, как и gtk, как и нуклеар.

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

Что ты чушь городишь? Если будет документированный формат диаграмм, то сторонний редактор этих самых диаграмм не проблема будет написать.

Но пока формат диаграмм закрыт/не описан (а может просто не существует), что тоже нарушает лицензии СПО, о таком вам мечтать только приходится.

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

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

Ну разумеется, не скачаю! Как можно было думать иначе

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

Вот только разработчикам нормальных языков это как-то удается. Может, все-таки вы что-то делаете не так и надо учиться на чужих ошибках?

Как в секту заманивают

Скорее в элитное общество, ведь кто такие антиметапрогеры?

Пока что «антиметапрогеры» это те, кто не хочет верить вашим сказкам на слово, не более. А «элитное сообщество» из двух с половиной человек (Мертвопрог не совсем с ними), к которым остальные близко подходить брезгуют, немного не внушает доверия.

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

А тратить силы на «циклы по структурам», «сувт» и срачи время находится. Ну что-ж, ваши приоритеты понятны…

Своя gui-библиотека поверх Nuklear развивается, и уже есть метапрог-онлайн чат.

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

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

Для кого традиционными, для закостеневших бумеров? ;)

Приложить файл диагарммы к письму можно, равно как и положить его в незаточенную под бинарные файлы СКВ, вот только зачем?

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

Вот только разработчикам нормальных языков это как-то удается.

Сказки. Либо получается ценой копирования того что есть в компиляторе.

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

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

А тратить силы на «циклы по структурам», «сувт» и срачи время находится.

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

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

Приложить файл диагарммы к письму можно, равно как и положить его в незаточенную под бинарные файлы СКВ, вот только зачем?

Угу, ждем графического емейла - теперь в квадратиках и со жгутиками

Сказки. Либо получается ценой копирования того что есть в компиляторе.

Ну, синтаксический разбор копируется, куда ж без этого. Но вы так говорите как будто это что-то плохое…

Потому что это ОЧЕНЬ удобные абстракции, на которых строится все метапрого-программирование.

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

Тут не нужны классы, есть СУВТ. Тут не нужны рантайм-хешмапы есть цикл по структурам. Минимализм, удобство, простота. Скриптухи тут не надо.

А чем ваши рантайм - определители имен лучше хешмапов? Чем ваша скриптуха лучше уже изобретенной?

То есть пример на псевдокоде мало что доказывает, а вот документация это истина прям, которую и проверять не надо?

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

То есть пример может написать кто угодно и как угодно, ценность этого где-то возле нуля. А вот за нарушение стандарта можно здорово получить.

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

Угу, ждем графического емейла - теперь в квадратиках и со жгутиками

Вы кому отвечаете? ;)

Мы обычно ходим на ЛОР только по уведомлениям; кабы не решили всю тему тут помониторить, то могли бы ответ и не заметить.

А e-mail таки давно стагнирует под гнётом легаси и нуждается в переосмыслении.

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