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)

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

А, ну да. Аллергия на плавные линии.

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

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

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

@paramon говорил о том, что он пытался писать что-то похожее на питоне, и что «это не так просто как кажется». Их чего можно сделать вывод, что не так просто писать на питоне или не так просто создавать редактор графов. Или не так просто и то и другое вместе. Питон здесь используется как представитель текстового языка, в противовес графическому программированию.

Что нужно, чтобы написать графический редактор? Нужно сначала придумать, как он будет работать. Его внешний вид (UI) и поведение (UX). Обе задачи вообще к программированию отношения не имеют. Талантливый дизайнер может быть не в состоянии закодить решение квадратного уравнения, но при этом в состоянии разработать очень удобный интерфейс. То есть, программирование тут не при чём. Затем UI/UX нужно закодить. Этап кодирования делится на декомпозицию задачи и непосредственно кодирование. Декомпозиция тоже не завязана на конкретный язык. Её вообще можно проводить текстом на русском или английском. Неужели оставшаяся часть, непосредственное кодирование, настолько сконцентрировала в себе всю сложность, что замена питона на прототип метапрога заметно поможет?

Редактор графов — хороший пример конкретной задачи. @metaprog и @paramon тут уж никак не смогут отвертеться, заявив, что она не нужна. Без редактора у них просто ничего не выйдет. Хм. Что там нужно для создания ветвлений в линиях графа? Нужно на ходу выяснять, к какому сегменту какой линии курсор мыши сейчас ближе всего. Если расстояние достаточно маленькое, то по клику мыши можно создавать линию-ответвление. Если не изучать существующие алгоритмы, а ТС не хочет ничего изучать, кроме простого перебора ничего не остаётся. И вот, поприветствуем редактор, у которого тормоза прогрессируют линейно с числом элементов диаграммы. Поможет тут переход на графическое программирование?

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

Че за тупую дичь я сейчас прочел?

Это логика.

Утром из дымного ресторана выползает клиент.
— Швейцар! Что это за омерзительный запах?
— Это свежий воздух, сэр!

Баги есть везде, в прототипе их конечно больше чем в gcc, ну уж так получилось.

Ага-ага. Прям «ничего не можем поделать. Такова природа».

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

Ага-ага. Прям «ничего не можем поделать. Такова природа».

Можно их исправлять, чем ОП и занимается. Что не нравится?

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

Их чего можно сделать вывод, что не так просто писать на питоне или не так просто создавать редактор графов.

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

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

Заметно он не поможет, так как у него свои проблемы, прототип все же.

И вот, поприветствуем редактор, у которого тормоза прогрессируют линейно с числом элементов диаграммы.

Тут недавно был тред, у чела был сгенерированный массив на С, но длинный, gcc выжирал на нем всю доступную память и падал. Как так?

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

Не так то и просто = не так то и быстро.

То есть редактор диаграмм как по ссылке, которую тебе дали, пишется за «5 минут». Во сколько раз редактор метапрога сложнее? В два раза, десять? Сто? Если даже в сто, это всего 500 минут, то есть чуть больше одного рабочего дня в 8 часов.

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

В метапроге еще

В 200 раз сложнее? Это два рабочих дня. В 1000? Пару недель.

поиск оптимального пути для линии

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

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

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

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

Могу еще прорекламировать твой продукт какое-то время, поставив его и себе.

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

В 200 раз сложнее?

Не считал.

Что, реально ищет оптимальный путь для любых конфигураций?

Нет.

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

Да не. Вот текущий логотип метапрога, который ОП не собирается менять видимо - https://raw.githubusercontent.com/bodqhrohro/purple-metaprog/master/metaprog3...

Вообще дизайн метапрога напоминает мне этот проект https://i.ibb.co/vHyPX5Y/2020-10-27-12-35.png %)

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

Интересно и весьма прикольно. Спасибо за труд. Но, видимо, мне чувства юмора не хватает, да и кофе я не пью... Пускай paramon берет, если ему понравится - он тот еще приколист:)

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

Смысл какой?

А что, кроме Delphi/Lazarus, умеет генерировать интерфейс на GTK+ и Qt, причём разных версий, из одной кодовой базы?

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

Что, реально ищет оптимальный путь для любых конфигураций?

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

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

В 200 раз сложнее? Это два рабочих дня. В 1000? Пару недель.

Редактор схем и связей в общих чертах делался еще 2 года назад, ничего особо не поменялось. Но ты попробуй-ка сделай не игрушку а-ля твой шоутайм, а что-то посерьезнее прототипа Метапрога, а потом уже делай утверждения о его простоте, если это действительно так просто:)

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

чем вызвана шиза царя

С шизой обычно рождаются.

Они тут уже лет 7 отсвечивают, не меньше. Тогда голанг ещё в зайчатке был.

LLVM и предназначен для создания компиляторов

А жопа предназначена для того, чтобы из неё срать, это как-то оправдывает говно?

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

С вообще полу-скриптуха по царю (мало умеет, но ее полностью оправдывает то что она делает как надо и не мешает), я там дальше написал. C/CLR конечно скриптуха, тут не только в языке дело, но и в реализации.

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

А что, разработчики Rust не могут присылать в LLVM свои патчи?

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

Ну, например, wxWidgets. Хотя задача генерирования для GTK и Qt изначально не имеет смысла. Это просто увеличивает количество вариантов сборок, которые нужно поддерживать. И вообще, тулкитофобы должны страдать. Пусть жрут что дают.

PS: Я тебя по случаю тоже из игнора достал. @paramon`а доставал, но он быстро опять начал клованить, поэтому был отправлен обратно на парашу. Постарайся хотя бы ты меня не разочаровать.

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

А жопа предназначена для того, чтобы из неё срать, это как-то оправдывает говно?

И что ты этим хочешь сказать?

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

А что, если человек работает только на работе и ничего выкладывает, ибо проприетарщина, то человек «ничем не занимается»? Вот у @Iron_Bug публичных наработок, насколько помним, нет. (Сейчас опять возмущаться начнут, что призвали в говнотред ;D)

mertvoprog
()

А чё скрины больше не подвозят? А то «свитч по многотиповому» звучит одинаково интригующе, и пугающе.

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

Хотя задача генерирования для GTK и Qt изначально не имеет смысла

Имеет, оба этих тулкита плохо работают на Mac, а вот Lazarus имеет поддержку Cocoa, ну и Win32, программы получаются компактные, быстрые.

И вообще, тулкитофобы должны страдать. Пусть жрут что дают.

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

поэтому был отправлен обратно на парашу

Ахах, пахан в треде?

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

Стены текста не пишет, «пыль запартная» не применяет, в остальном все тоже самое примерно - только сишечка, GC для дэбилов, итд.

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

оба этих тулкита плохо работают на Mac

Qt отлично работает

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

Ахах, пахан в треде?

Три клоунады - и ты отправишься следом, снова лишившись права общаться со мной. Это была первая.

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

Кто же станет новой вайфу после с++…

Свой язык. Их Святейшество давно на это намекают.

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

дупапрог

Вы там поаккуратнее, а то и Дупапрог сделаем, с Нас станется. Специально для Владимиров!

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

Три клоунады - и ты отправишься следом

Клоунады свои считаешь я так понимаю?

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

тулкитофобы должны страдать

Схрена? Тулкит напрямую определяет юзабельность программы. Вот в культях Emacs keybindings не работают под онтопиком, это боль. А ещё stopthemingmyapp-фашисты идут нафиг, вместе с недотулкитами, которые темизацию не поддерживают (и на которых, кстати, слеплено немало «профессиональной» проприетарщины); в ту же степь вебня, но там ещё не всё потеряно. Учитесь думать как пользователь немного, а не только как программист ;)

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

Непорядок, это ж выходит, что у Вас только один стул для собеседника, а должно быть два на выбор.

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

Что предназначенность LLVM для штампования говна на нём никак не оправдывает само штампование говна.

Впрочем, на фоне туго развивающегося и прожорливого GCC даже шланг выглядит недурственно.

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

Впрочем, на фоне туго развивающегося и прожорливого GCC даже шланг выглядит недурственно.

Что значит туго развивающегося? Новые стандарты там быстрее начинают поддерживаться, и оптимизация лучше. Царя надо читать!

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

Но проектов опубликованных нет ведь?

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

Ладно Вы на форуме быкуете просто; одно время была мода (сейчас вроде утихла уже, но это не точно) требовать показывать профиль на гейхабе при трудоустройстве, что вызвало бурю негодования среди опытных разработчиков: у них этих гейхабов отродясь не было, не пилить же какие-то поделки чисто на показ, в самом деле. Из той же оперы тестовые задания «на дом». В то время как нубьё петов активно строгает, времени-то навалом для этого — а то и тырит. Хорошие спецы, конечно, и мимо тупых херок пробьются куда-то, а воры без опыта палятся на тестовом периоде или ещё на собеседовании, но осадочек остался.

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

Чуть-чуть не дотянул до 10 суток без комментариев :)

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

Ну там так себе совместимость между ними, wxgtk2 единственный адекватный вариант под linux.

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

Тулкит напрямую определяет юзабельность программы

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

Вот в культях Emacs keybinding

Что это вообще?

А ещё stopthemingmyapp-фашисты идут нафиг, вместе с недотулкитами, которые темизацию не поддерживают

Они и идут. Qt все отлично поддерживает, это у GTK-фанбоев вечно какие-то проблемы.

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

Это ты себя увещеваешь? потому что ты додумал там что-то себе, а потом зачем-то приписал мне. Именно пользователю должно быть все равно, на каком тулките написана софтина, если она хорошо работает. Если софтина на Qt, то писать вторую версию гуйни на GTK, чтобы почесать GTK-фанбоям мягкое место - полный бред. Вон, tox отчасти на том и погорел (ну кроме провалов с core-функциями). Они писали одновременно вагон интерфейсов на разных тулкитах, вместо того, чтобы сосредоточиться на чем-то одном. В итоге это дерьмо было само с собой несовместимо.

Непорядок, это ж выходит, что у Вас только один стул для собеседника, а должно быть два на выбор.

И есть два. Либо ты клоун, либо не клоун.

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