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)

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

Конечно не знаю, как я могу такое знать?

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

А еще я написал sladeb в котором можно подключать дебиановские репозитории и ставить .deb пакеты в слаку, не просто в chroot, а с интеграцией, и подхватом пакетов слаки. Перед этим мне надо было разобраться как работают dpkg, apt.

Видимо как-то не до конца вы разобрались раз вы этого не знали.

Так еще смешнее становится если прочесть, я уже читал.

смешно что вместо того чтобы справиться с нагрузкой если она была и нормально настроить ее балансировку или хотя бы просто отбрасывание запросов 9 из 10 входящих дросселируя их между сетевыми экранами которые можно собрать их всякого хлама если у них и с мощностями проблемы, они просто отключили сервис. Ну в принципе решение хоть и такое себе, но есть же альтернатива. Это просто лень разбираться с проблемой здесь и сейчас, перепишут, настроят и включат, или как это бывает, появится очередной новый «pip» и это будут уже его проблемы :J

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

Видимо как-то не до конца вы разобрались раз вы этого не знали.

Интересно куда я рпц запросы слал что бы сделать поиск по репозиториям?

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

Интересно куда я рпц запросы слал что бы сделать поиск по репозиториям?

В русскую православную церковь? :)

Проблема в том, что тем не менее apt который обсуждался вами как что-то что работает так же как поиск в pip, на самом деле не работает как в pip именно из-за того что ищет по кэшу предварительно его скачав, для этого и нужно update, на что ваш оппонент и не прeминул указать.

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

apt который обсуждался вами как что-то что работает так же как поиск в pip

Я писал:

Ждем удаление apt search по причине ненужно.

И где тут «apt search работает так же как и pip search»? Тут написано что в ПМ нужен поиск. А использует кеш, или не использует это другая тема.

В русскую православную церковь? :)

Ну так как я делал поиск по репозиторию? И зачем я написал «apt update && apt search»?

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

И где тут «apt search работает так же как и pip search»? Тут написано что в ПМ нужен поиск. А использует кеш, или не использует это другая тема.

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

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

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

в случае apt никто кроме вас не способен с вами поступить так, как с вами поступили в случае pip

Могут запретить получать список пакетов.

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

Ну так как я делал поиск по репозиторию?

понятия не имею, покажите исходный код вашей поделки, видимо просто напрямую rpc вызовы делали, так же как и pip.

Могут запретить получать список пакетов.

о чем и разговор - «никто кроме вас», в этом и разница.

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

о чем и разговор - «никто кроме вас», в этом и разница.

А может у меня сейчас нету кеша, и теперь он никогда не появится?

понятия не имею, покажите исходный код вашей поделки, видимо просто напрямую rpc вызовы делали, так же как и pip.

Это прекрасно.

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

А может у меня сейчас нету кеша, и теперь он никогда не появится?

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

Это прекрасно.

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

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

ну разве что вы его сам сделаете

Да, получается все как и с pip. Там тоже можно свой поиск сделать поиск сделать, или пакет pip_search.

Пойду лучше чем нибудь займусь.

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

Да, получается все как и с pip.

Разве что в плане необходимости сетевого взаимодействия, но ребята которые делают pip конечно странные, а еще более странные которые поддерживают PyPI’s XMLRPC API. Такое чувство, что они пытаются друг на друга переложить эту проблему лишь бы не решать ее, а если это одни и те же люди, то вообще печально )

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

я уже читал

Читал, но ничего не понял, только посмеялся. Тупость - типичное качество интернет-клоуна. И метапрогера. В принципе, одно и то же.

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

Зачем ты сам с собой говоришь? Шиза прогрессирует?

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

поделюсь находкой

Ну ты мне прямо польстил.
Собственно, для ТСа это не новость, ему уже давно объясняли, что бинарные форматы, пусть даже разверсионированные, плохо ложатся на системы управления версиями. Ну он и собирается писать свою собственную VCS (а на самом деле ещё дофига всего).

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

Можно распаковать скачанную версию в папку «онлайн» и воспользоваться сравнением схем функций разных версий. Реализация далеко не идеальная, но формально «дифф» есть.

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

Мне не нужен диванчик, мне достаточно тебя в твои же обещания носом потыкать. Итак, идем на хабр и смотрим твою писанину от 7 сентября 2019 года, то есть, год и четыре месяца назад:

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

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

Ты уверен, что это мой диванчик виноват? А может это просто ты ничего не сделал для решения этой проблемы, а только полировал никому не нужные сувт? Где дифф нормальный, я тебя спрашиваю? Полтора года, позорище.

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

Ну ты что, он же профессионал!!! Ну или почти, ему бы конечно основы подучить, опыта там набраться, и вот тогда он нам покажет %)

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

MOPKOBKA ★★★
()

@metaprog. Просто для проформы. Сколько ты не петушился, сколько не кричал про вангования гнусных «антиметапрогеров», а мое предсказание о твоих прожектах начинает потихонечку сбываться:

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

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

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

Собственно, хамить ты почти перестал, мы тебя неплохо выдрессировали

«Иди в жопу» (c) metaprog

мое предсказание

Все твои предсказания проваливаются, зачем на них обращать внимания... очень и очень непонятно. Когда там проект кончится, загнется, разработка остановится? %)

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

зачем на них обращать внимания

Зачем обращать внимание на твои вскукареки? Где твой код, повторяю?

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

Зачем ты опять о себе в третьем лице? Где гитхаб твой, сф, что угодно, кроме убогих порисулек?

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

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

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

Зачем тебе вообще это?

Циклы - это просто удобные представления. У процессора никаких циклов нет, есть только переходы.

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

У процессора никаких циклов нет, есть только переходы.

Ну строго говоря, даже в x86-й архитектуре есть команда LOOP для цикла (декремент с условным переходом). А в более экзотических архитектурах наверняка можно и ещё что-то найти. Вот используется ли это в компиляторах из ЯВУ — не знаю.

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

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

Здравый смысл подсказывает, что отличаться они будут примерно тем же, чем и в самом Си. Цикл while - проверка условия в начале с условным переходом за пределы цикла и jmp на начало в конце цикла. Цикл do…while — просто проверка в конце с условным переходом на начало. for, скорее всего, похож на while (его, кстати, и на Си можно через while выразить). Но в любом случае посмотри сам, интересно же.

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

В минимальном for и while код идентичен. do-while отличается отсутствием одного jmp.

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

А по сути — можно запустить gcc с ключом -S, он даёт ассемблерный листинг.

Он clang использует. Там есть такое?

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

К тому же тут еще и ассемблер на примитивном уровне надо знать, гы-гы. А наше светило способно к этому?

Update:

Он clang использует. Там есть такое?

Кстати есть, и тот же ключ -S.

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

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

Думаю, что если число итераций вводить извне как параметр, то таки будет. :)

Чувак же охренеет

Это уже его проблемы, пусть изучает.

К тому же тут еще и ассемблер на примитивном уровне надо знать, гы-гы. А наше светило способно к этому?

Давай не будем решать за других. И да, сам по себе ассемблер это ни разу не rocket science, подумаешь, регистры, стек и переходы. Просто большой проект на нём это разгрузка самосвала совочком, в длинных простынях действительно теряется суть алгоритма без серьёзных навыков.

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

Думаю, что если число итераций вводить извне как параметр, то таки будет

Зависит от уровня оптимизации компилятора. Может и не разворачивать.

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

Он clang использует. Там есть такое?

clang не только опции поддерживает, но и расширения gcc.

MOPKOBKA ★★★
()

Версия 32

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

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

Ну строго говоря это не bool. Логический тип включает всего два значения: например ноль/ не ноль в си. А в данном случае ноль единица и все остальные значения получается, раз явно указано что использовать надо ноль или единицу

saibogo ★★★★
()
Ответ на: Версия 32 от metaprog

экспериментальная фича отрисовки канваса

Отлично, теперь можно пилить крестики-нолики, сапёра, змейку, тетрис и много чего ещё. А так же всякие графики, например парабол для графического решения квадратного уравнения :)

Серьёзно, с графикой гораздо больше возможностей. Круто.

С праздниками!

И тебя с праздниками!

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