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

Да, как по мне gui уже намного лучше оригинала.

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

Экспорт в какой-нибудь SVG или другой векторный формат

А вот что было бы действительно интересно, так это вывод в граф, а не только в сишный исходник.

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

Но вроде ему такое предлагали уже.

anonymous
()

Ля! Я вспомнил! Я вспомнил кого мне напоминает аффтар сего шедевра! Это ж Славик Гуляев и его Гульмэн. Вот 1:1. Кривое и нелепое исполнение, команда из неадекватов чуть больше, чем полностью, полные форумы лулзов, 10 лет стабильного выпуска треша, который видимо играет только Славик… Но у Славика хоть видео есть, к его чести, а еще он вроде даже художник.

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

яхз кто такой славик, но ты та полюбасу поубогей будешь. Ну как есть стремная телка или парень, но если есть хмырь(ка) который(ая) 10 лет вокруг неё прыгает с попытками обосрать, собирает про неё(го) «смишные истории», то он(а)(о)-то полюбасу дно километром ниже.

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

А если вы про Qt, то ТС отвечал, что Qt для него не вариант, ибо C++.

Тяжелый случай …
Впрочем проектами на Си он не брезгует?

Владимир

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

Не, до гульмана этим поехавшим как до луны. У Гуляева хоть какая-то медиаактивность, ну и да, более масс продукт, ну или какой-то «продукт». Причем забавно, что гульмена в основном иностранные ютуберы обозревают. Вот например https://www.youtube.com/watch?v=wPXJTtMUq7c метанпрогу о таком только мечтать…

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

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

@metaprog писал, что run-time Labview 2013 бесплатен.
А run-time Labview других версий не бесплатен?

Владимир

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

ИМХНО функционал Метапрог вполне можно было реализовать на связке
JavaScript+КакойЛибоСкриптовыйЯзык … /вариации на тему/.

Впрочем текстовые языки программирования @metaprog отвергает …

Владимир

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

Понял!!!

Я подросток нетипичный,
Я всю жизнь на том стою:
Дайте мне сто грамм «Столичной» -
Я вам песенку спою!

А ты рот не разевай,
Газетки-то почитывай.
А ну, давай, давай, давай -
Меня перевоспитывай!

https://www.youtube.com/watch?v=MnSPeW0ENso а ты давай давай давай меня перевоспитывай

Владимир

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

И конечно.

Надоело в школьной массе,
Я в ней по уши увяз:
Я учусь в девятом классе
Вот уже четвертый раз!

А ты рот не разевай,
Газетки-то почитывай.
А ну, давай, давай, давай -
Меня перевоспитывай!

Владимир

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

А ну, давай, давай, давай

Есть веселый вариант этой песни … /вариация на тему проекта Метапрог/.
Но не буду публиковать.
Верю все же, что @metaprog «осознает» и мы ему все простим.

Владимир

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

Верю все же, что @metaprog «осознает» и мы ему все простим.

Подтруниваю над @metaprog /есть за что/ …
Надеюсь он поймет, что «Война и Мир» в виде диаграмм будет «not readable».

Владимир

anonymous
()

Какого лешего темы с метапрогом делают в техразделах?

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

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

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

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

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

Даа!!! Скорей бы им бан выдали и тред потерли!!! Такая унылота!!!

90% тем метапрога обсуждают политоту, ядерные реакторы

Я тоже все темы от начала и до конца читаю!!! И в курсе последних обсуждаемых тем (про ядерные реакторы там)!!!! Именно они унылость привносят в Development!!! Скорей бы все потерли!!! Нет сил уже читать!!!

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

90% тем метапрога обсуждают политоту, ядерные реакторы и другой офтоп

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

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

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

над людьми которые в начале 90-х вкладывали деньги и время в интернет (ну то есть в бизнес на основе интернета) откровенно смеялись

Чушь.

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

Ну бывают такие люди. Проходят мимо говна и думают: «а что если попробовать?»

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

только не хватает группировки

Это когда выделили прямоугольником и создали подфункцию? Если да, то это есть в планах.

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

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

автор не думал лучше более высокоуровнево писать, в стиле классических движковых узловых редакторов(Unity, CryEngine, UE4 и т.д.) ?

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

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

Надо это делать так: сначала вводишь число в окошке, потом идешь в терминал, откуда запустил и жмешь там Ctrl-C. Потом вводишь второе значение. Потом ждешь сигнала.

Нет. Надо ввести нужное число и закрыть окно с диалогом, нажав на крестик.

Программа в режиме ожидания сигнала будильника потребляет 5% CPU (intel i7-8700K) и 88MB RAM.

Это наверное потому что ты делал Ctrl-C при закрытии диалогов, не надо так. У меня в режиме ожидания тишина - там всего лишь запрос localtime каждую секунду и сравнение минуты и часа.

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

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

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

Надо заканчивать через Ctrl+C. Пока что некогда было сделать диалоговое окошко и многопоточность (через pthreads?), чтобы сделать диалог, закрывающий программу.

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

LabVIEW существует уже 35 лет, а вменяемого опенсорсного аналога так и не появилось. Если ТС прав, и оно реально пригодно как инструмент общего назначения — давно бы уже могли родить аналог. Это же не какая-то жутко специфичная вещь типа САПР. Компиляторы традиционных языков, IDE, отладчики, валгринды всякие — всё есть. А этого нет

У меня другое объяснение. Обычно лабвьюшники, столкнвшиеся с задачей, которая Лабвью не по зубам, стиснув зубы переходят на текстовые ЯП. Но я не пожелал этого делать, только и всего:)

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

Если run-time LabView бесплатен и вам чего-то в нем не достает, то разработайте дополнительный API.

Проще уж Метапрог «сам на себе».

Можете вы LabView подружить с QT?

Боюсь что нет.

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

Чем отличаются «массив» и «масив»?

Тем, что одно переведено на русский, другое - нет.

Экспорт в какой-нибудь SVG или другой векторный формат оно умеет?

Нет.

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

А вот что было бы действительно интересно, так это вывод в граф, а не только в сишный исходник.

Чем граф должен отличаться от исходной диаграммы?

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

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

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

Пусть Си-шные проекты использует …

Я так и делаю.

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

Метапрог я разрабатываю, чтобы быстро и удобно разрабатывать софт, который работает со скоростью чистого Си. Без компромиссов.

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

Ну и стоит ли овчинка выделки учить текстовые языки программирования? Метапрог-то я делаю не за деньги, а, так сказать, из спортивного интереса (хотя от донатов все же не откажусь).

Если что, донат сюда: Bitcoin:1AYoK2TScSpD5bhf67mv9AxHDJ2RidRvjD

Давай донаты, помогай проекту или иди в жопу.

Сначала донат не меньше 10 тысяч долларов - потом уж буду разговаривать.

Очень хочется доната

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

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

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

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

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

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

AntonI ★★★★★
()

Вот не пойму, почему будильник?

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

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

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

А @metaprog то похоже не шутит
Блоки жгутиками на диаграммах он крутит
Без донатов в жопу всех посылает
И на помощь Царя призывает

Сишка криком кричит,
Надрывается,
А злодей молчит,
Ухмыляется.

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

Вот не пойму, почему будильник?

Наверное потому что на десктопе нет будильника? Таймер есть, секундомер есть а будильника нет (и даже понятно почему)…

ТС вообще большой оригинал.

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

Наверное потому что на десктопе нет будильника?

Та в общем то есть: https://imgur.com/TLiGxqL

Только не нужен на хрен никому.

ТС вообще большой оригинал.

Ну да, этого не отнять.

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

Это на оффтопике. А так я всего два с половиной будильника видел на той же бубунте.

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

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

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

Вот не пойму, почему будильник?

Потому что его уже можно сделать на текущей версии Метапрога. И да, потому что на линукс простого гуйного будильника без секса с кроном и консолью... НЕТ! Сколько искал - не нашел.

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

Десктоп - более универсальная вещь, и мне лично предпочтительнее иметь будильник на нем - все равно я его не выключаю. Хотелось чтоб на линуксе был будильник - и вот благодаря Метапрогу я смог его сделать, почти не зная текстовых ЯП.

да еще и глючный во все поля

Это не навсегда. Хорошо что даже такой будильник я уже сделал - и он, просидев ночь в ожидании, сработал!

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