LINUX.ORG.RU

Метапрог-прототип, версия 7 + графические диалоги на Метапроге

 , ,


0

3

Скачать (перед запуском читайте !Русский.txt или !Українська.txt):

https://www71.zippyshare.com/v/dNcHIgzD/file.html

Новая версия принесла несколько новых фич интерфейса пользователя. Добавлено выделение прямоугольником для вырезания и копирования части диаграммы (в прошлой версии было только копирование и вставка одного блока по щелчку колесом мыши). После копирования куска диаграммы (с проводками с данными и жесткими последовательностями) его можно вставить кликом колесом мыши на пустом месте диаграммы. Есть план реализовать в будущий версиях также создание подфункций из выделенного куска - аналог Create SubVI из LabVIEW (так была сделана немалая часть функций в прототипе Метапрога).

Однако самая интересная фича новой версии - сериализация в base64 координат блока на диаграмме с цепочкой функций. Этому есть как минимум два возможных применения. Можно «ткнуть пальцем» на нужный блок (меню блоки - ткнуть пальцем на блок). Будет сгенерирована строка такого вида:

metaprog_debug:AAAAAAAAAAAAAAAHAAAAAFBUSDAAAAAEAAAAAAAAAAAAAAAAAAAAAwAAAAdNUEwgMi4wAAAAB0xJQ0VOU0UAAAAU4fPk6Ov87ejqIO3gIOfg7+jy4PUAAAAK0+rw4L/t8fzq4AAAABXh8+To6/zt6Oog7eAg5+Dv8O7x4PUAAAAH0PPx8ero6VBUSDEAAAAxcmVsIAAr0LHRg9C00LjQu9GM0L3QuNC6INC90LAg0LfQsNC/0LjRgtCw0YUubXBiZBNiCtNfkRABAAAAAwAAAAdNUEwgMi4wAAAAB0xJQ0VOU0UAAAAT9rPr7vfo8evu4ujpIOSz4Ovu4wAAAArT6vDgv+3x/OrgAAAAFPbl6+736PHr5e3t++kg5Ojg6+7jAAAAB9Dz8fHq6OlQVEgxAAAANXJlbCAAA25rYwAq0YbRltC70L7Rh9C40YHQu9C+0LLQuNC5INC00ZbQsNC70L7Qsy5tcGJkP/rfBI32qgEAAAADAAAAB01QTCAyLjAAAAAHTElDRU5TRQAAABDy5erx8u7i6Okg5LPg6+7jAAAACtPq8OC/7fH86uAAAAAQ8uXq8fLu4vvpIOTo4Ovu4wAAAAfQ8/Hx6ujpUFRIMQAAAC9yZWwgAANua2MAJNGC0LXQutGB0YLQvtCy0LjQuSDQtNGW0LDQu9C+0LMubXBiZFbEp7cIT2gBAAAAAwAAAAdNUEwgMi4wAAAAB0xJQ0VOU0UAAAAV5+Dv8/HqIOKz6u3gIE51a2xlYXIrAAAACtPq8OC/7fH86uAAAAAU5+Dv8/HqIO7q7eAgTnVrbGVhcisAAAAH0PPx8ero6VBUSDAAAAAWAAEAAgNua2MNbmtjIGluaXQubXBiZFQc/+kgVZgBAAAAAwAAAAdNUEwgMi4wAAAAB0xJQ0VOU0UAAAAO+PDo9PIg7fPq6+Xg8CsAAAAK0+rw4L/t8fzq4AAAAA748Oj08iDt8+rr5eDwKwAAAAfQ8/Hx6ujpUFRIMQAAADpyZWwgAANua2MAL9GW0L3RltGG0ZbQsNC70ZbQt9Cw0YbRltGPINC90YPQutC70LXQsNGAKy5tcGJkaxMcpv873AEAAAAAUFRIMAAAAAQAAAAAdcftGC2ZsAE=:metaprog_debug

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

Вместо тысячи слов:

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

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

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

https://postimg.cc/hQVLBcHp

Дебаг-строку выводит оранжевый блок.

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

Для компиляции надо скачать https://sourceforge.net/projects/tinyfiledialogs/

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

Код:

https://pastebin.com/5NW30tQx

Введя нужное число, закрываете окошко. После ввода часа и минуты в консоль будет выведено время срабатывания. Теперь будильником можно пользоваться и для повседневных нужд (звук пронзительный, хорошо слышный, sound.wav больше не нужен), однако завершать его работу надо еще через диспетчер задач или Ctrl+C в консоли, когда не идет звук. Также нет проверки введенных чисел, если введете не то число - будильник никогда не сработает.

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

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

Метапрог-прототип, версия 6 + будильник на Метапроге



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

Вы вон сами на лор приползли а не на англоязычный форум.

Более интересно, что он не пошёл и на linux.org.ua (там сейчас на главной «Калькулятор написаний на Хаскелі» обсуждают, а чуть правее годный опрос на тему, лженаука ли экономика).

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

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

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

До-до, с реализацией СУВТ ТС-а - обязательно! Вы еще упоротее чем пытаетесь казаться.

Побежал оправдываться бездарь - https://godbolt.org/z/X24aCY.

А что, Вы здоровый(ая)? Не похожи ни разу.

Классное оправдание, я вижу ты страдаешь трансфобией, в своем глазу и бревна не заметишь?

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

П-ц… «я фигею дорогая редакция» пишет нам семимесячная Маша.

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

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

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

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

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

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

За это время на ЛОРе Метапрог-темы набрали тысячи комментов. А там с января тишина (хотя Метапрог там все равно остался в топе).

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

укрообразование

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

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

Прочёл пару страниц с ветки украинского форума - все также как и на ЛОРе

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

Пффф, никакой украинофобии - у меня отец родом из Харькова, куча друзей-украинцев. Про то что нынешнее укрообразование имеет чудовищные проблемы не знает только ленивый (коллеги-преподаватели с Украины криком кричат). А Вы типичная тому иллюстрация, необучаемый дворник с ЧСВ размером с Эверест

Я, например, сделал прототип Метапрога, Линус - ядро линукса, Столлман - Emacs

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

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

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

Вам 100500 раз разные люди говорили

Собаки лают, а караван идёт.

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

Я рад что ты признал свое поражение, но стоило бы это сделать раньше, к чему все это было вообще? Хотя и мне раньше надо было дать ссылки на godbolt.

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

Образование и наука в целом проблемны не только в Украине, но и везде. Как я уже говорил раньше, ИТ-образование - это по большей части фабрика макак. Линус довольоно-таки пренебрежительно относится к профессорам «компьютерных наук»: http://harmful.cat-v.org/software/c /linus

In general, I'd say that anybody who designs his kernel modules for C++ is either

(a) looking for problems

(b) a C++ bigot that can't see what he is writing is really just C anyway

(c) was given an assignment in CS class to do so.

Feel free to make up (d).

Одного профессора в далеком 1992, будучи еще студентом, так вообще на ноль помножил. Не в «царском», конечно, стиле, но тем не менее: https://ru.wikipedia.org/wiki/Спор_Таненбаума_—_Торвальдса

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

Дианочка, происходящее в Вашей альтернативной вселенной интересует только Вашего психиатра - надеюсь он у Вас есть. Здесь Вам могут только посочувствовать…

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

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

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

Фома и Ерёма, это вроде даже народный фольклор…

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

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

Да и в России не лучше, глянь на атанола, как же он жалко пытается делать вид будто бы по штанине у него ничего не стекает. Я уже и асм-листинг дал, а он все равно строит из себя кого то %)

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

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

https://godbolt.org/z/egKpfe

кстати тож не совсем «честно», ибо значениями там прибиты константы, в отличие от нагенеренной лапши метапрога, где через 50 разных указателей все прыгает.

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

Ну вообще это не «трансляция» сувт.

Трансляция не трансляция, ассемблер не ассемблер. Нужно больше оправданий.

https://godbolt.org/z/ZQVDTV

Да, не совсем честно, но ты хотел показать что будет если компилятор не знает о том что находится в СУВТ. О таком варианте я тоже писал в своем посте (тот который от агафьи праведницы). Кстати, давайте попробуем собирать все Clang'ом, ведь именно на нем завязан Метапрог - https://godbolt.org/z/7N47q_

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

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

Как быстро сломается оптимизация компилятора на 100500 СУВТ-ах они не знают. Что такое конвееризация они не знают. Как размер кода влияет на быстродействие (и почему инлайн функции могут приводить к потере производительности) они тоже не знают. Что такое локальность данных и как она влияет на быстродействие они не знают тем более.

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

В общем язабан.

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

А по какой у него штанине стекает, по левой или по правой, а если стекает вы после того как штанину трогали руки помыли, а если помыли с мылом то или просто так?

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

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

Как быстро сломается оптимизация компилятора на 100500 СУВТ-ах они не знают. Что такое конвееризация они не знают. Как размер кода влияет на быстродействие (и почему инлайн функции могут приводить к потере производительности) они тоже не знают. Что такое локальность данных и как она влияет на быстродействие они не знают тем более.

Увожаемый профессор кислых щей, не знаю как ОП, но я как минимум в курсе, кого ты из себя строишь? Я уже прилюдно показал что ты бездарь и неуч, остановись, умнее от генерирования оскорблений на ЛОРе ты не станешь.

потом замахивают рафинированным тестом

Ты даже не понимаешь как компилятор работает, ну прям совсем, если что СУВТ так же в генерируемом коде метапрог-программ и оптимизируется, я проверял. Я смотрел вывод.

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

Кстати, давайте попробуем собирать все Clang’ом, ведь именно на нем завязан Метапрог

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

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

Я считаю что нужно сначала устранить главные баги и доработать ветвления, ОП как раз сейчас занимается этим, а valgrind'ы это лучше потом, это не так важно сейчас.

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

Прочитай мой оригинальный пост - Метапрог-прототип, версия 6 + будильник на Метапроге (комментарий). Я писал что самый частый вариант использования это именно такой, вы просто путаете СУВТ и std::variant, они практически одинаковы, но используется в метапроге это все по другому. Что будет если компилятор не знает о значениях СУВТ, можно прочесть в посте, я вот уже ссылку специально дал, может кому то просто лень.

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

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

И в этом случае clang все оптимизирует.

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

А быстрее как ты сделаешь?

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

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

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

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

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

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

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

Давай лучше по другому, вы мне с атонолом переводите по 20$ с каждого если я даю ссылку на godbolt с СУВТ где будет показано то что я описывал в оригинальном посте, вот эти таблицы переходов, отсутствие сравнений. Еще дам ссылку с вызовом виртуальных функций, что бы можно было сравнить, и убедится в моей правоте. Идет? Если скинетесь по 40$, покажу это на коде который был сгенерирован метапрогом.

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

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

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

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

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

чот я думаю, что до такого примера метапрог дорастет примерно никогда.

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

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

Это ты тут рассказываешь про «вяликий метапрог», тебе и доказывать его эффективность.

Не помню что бы я на такое соглашался, и не помню что бы я как то возвеличивал метапрог.

Хотя я все еще уверен, что ты просто унылый и толстый тролль.

Идею того что я тролль продвинул местный психолог i-rinat, но у него плохо получается угадывать, так что советую выбросить эту мысль из головы. И остальные его мысли по поводу меня и ОПа тоже, не получается у него ванговать.

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

не получается у него ванговать.

конечно, конечно, так все и есть. Ты не тролля, метапрог - программист. все так.

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

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

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

если добавить оптимизатор

давай сразу ДВА! чо один то?

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

я даже не представляю для чего это может быть нужно (c) Диана

Он тоже программист, правда не знает что такое FMA

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

Да, да, профессор Кислощейский, далеко мне до этих ваших знаний, о этих FMA и в интернетах даже не пишут, никак не узнать, пока в школе 11 классов не отсидишь, и то сразу не расскажут, потом еще лет 20 надо в ВУЗ походить... А вот про ассемблер и профессорам не рассказывают! В тайне хранят.

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

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

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

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