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 + будильник на Метапроге

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

33,772 allocs, 30,440 frees, 1,102,273,810 bytes allocated

Как бы намекает, что на каждое событие окна оно долбит malloc/free. причем free меньше, что говорит о том, что освобождение ресурса проходит после условия, по которому колбек (nkc_set_main_loop) выходит.

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

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

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

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

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

malloc он действительно в каждом вызове колбека долбит. Дважды

Э-Эффективность.

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

Ну как бы валгринд запустить бы ты и сам мог

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

По репорту: в сравнении с Метапрог-прототип, версия 7 + графические диалоги на Метапроге (комментарий) увеличились definitely lost, остались такие же indirectly lost и исчезли все possibly lost. Что б это значило? Каковы отличия между исходными диаграммами я описал.

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

Да какие уж тут маны, товарищ метапрог это первая ссылка гугла, это уже совсем не серьезно.

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

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

Что б это значило?

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

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

да, валгринд я запускал такой командой

valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose -s  ./test 2> valgrind.txt

но там вывод такая стенища текста, что у ТС точно голова заболит.

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

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

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

это я тоже понял, просто вы мне ответили, а не ему :)

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

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

Вполне возможно, что и будет. Только я ТСу описывал наиболее вероятный сценарий такой востребованности (нанимать ещё большее количество веб-кодеров за ещё меньшее количество мисок риса) — ему не понравилось.

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

Еще в соединительных штатах есть агрегатор налоговых «вычислений» из всяких PaaS облаков Aria Systems — у них там тоже «визуальный редактор блоксхем» — который дает выхлоп в виде... Текстовых «пайпов» в CSV(!), которое при некотором объеме схемы понять невозможно, как ранее простыни машинно-генереных «человекодружелюбных» SOAP-XML. Презентацию этого гуано по видео как разработчик тоже часто ведет индус.

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

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

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

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

В Visual Studio же Clang завезли, так что там и так и сяк можно. С помощью него и vcpkg Metaprog-программы и собираю.

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

Ассемблера кстати не знаю, но я правда не программист.

Не удивительно что ты посчитал комментарий Дианочки (Няшечки ♥) бредом, ты же даже не понял про что она писала. Советую узнать как работает switch, и для чего он вообще был придуман.

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

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

Ты совершенно неправильно его понимаешь, он часто пишет что C++ ужасный язык, пишет о его недостатках, просто это лучшее из того что есть. У него вообще форк clang'a где впилены нужные ему фичи.

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

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

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

А что в архитектуре х86 мешает написанию ОС на С++?

А как сделать lgdtr [table] на плюсах? На С правда тоже не сделать, но это уже другая история.

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

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

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

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

Кстати, к чему это «вы»?

Правильная дистанция в общении залог здоровых отношений.

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

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

На хрена будильнику еще и диалог выбора файлов?

Для выбора мелодии!

Ладно, принимается.

Котечка/Дианочка, вместо того, чтобы флудить на форуме ты бы подумал/а, как пофиксить баги в будильнике вашем. ТС вообще никакой в этом плане.

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

А вот и грибоэлектрики подтянулись… Вы же под баном, няшечка?

ЗЫ прежде чем писать ерунду про свитчи и таблицы подзивились бы как работает современный процессор, а то у Вас пробелы в знаниях. Ну там латентность, FMA,конвееризация и вот это все… Хотя метапрогом укушенные грибоэлектрики к обучению не способны.

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

Я всегда остерегаюсь выкателей, практически все они ненормальные, или просто плохие люди, или все вместе

Бгг.

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

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

С другой стороны, на текстовые языки документация есть. А на метапрог нет. Либо любуйся на мыльные скриншоты, либо тащи себе на комп windows-only нечто с проприетарными библиотеками.

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

Я всегда остерегаюсь выкателей, практически все они ненормальные, или просто плохие люди

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

- А как это "по-настоящему"? - позвольте осведомиться.

Шариков на это ничего не ответил Филиппу Филипповичу, а поднял руку и признес:

- Ну, желаю, чтобы все...
AntonI ()
Ответ на: комментарий от abcq

если тс еще накидает более простых примеров без либ

Без либ что-либо накидывать смысла нет. Без либ только сишные вставки из логики и арифметики. Массивы будут только константы, оперировать с ними (realloc, memcpy, free и вывод в консоль) без либ никак.

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

Это все неудачные примеры. Единственный относительно удачный пример визуального программирования - LabVIEW, если не считать прототип Метапрога. Ну ладно, еще есть MyOpenLab, но на джаве, с кучей багов и до LabVIEW ему далеко.

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

Без либ – без сторонних либ, кроме стандартной.

А вообще, по-хорошему:

realloc, memcpy, free

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

Ещё раз говорю, у тебя под носом есть хороший пример такого языка (Vala), так почему бы не посмотреть, как это там реализовано?

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

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

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

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

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

Я тебе еще в первых темах пердлагал задачу с переворотом строки, в которй есть:

  • работа с памятью
  • работа с сишными вызовами
  • работа с циклами и условиями

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

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

Можно кстати, хотя пока что там из tinyfiledialogs только бип.

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

подзивились бы как работает современный процессор, а то у Вас пробелы в знаниях. Ну там латентность, FMA,конвееризация и вот это все…

И это мне втирает человек, не знающий ассемблера.

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

Я это не Вам втираю а Диане. Вам вообще обьяснять что либо бесполезно.

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

Мои слова вашим никак не противоречат, с чего вы решили что тут есть противоречие?

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

твой язык должен сам рулить памятью

Чтобы под капотом сидели те же malloc/realloc/free? Ты кстати не ответил нужны ли деструкторы в плюсах - я слышал, что в ООПнутых ЯП есть деструкторы.

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

у тебя под носом есть хороший пример такого языка (Vala), так почему бы не посмотреть, как это там реализовано?

Мне не интересно пилить очередную скриптуху. Хотя если опишешь вкртце и по-русски - буду признателен.

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

Он даже слышал что в оопнутых яп есть деструкторы! Прикинь какой образованный юноша, а мы его в дворники…

Правда он не знает нужны ли деструкторы в плюсах. Срочно внести Царя!

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

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

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

Вообще-то переворот массива байтов уже есть. А для юникодной лучше найти готовую либу (антиметапрогеры как-то с этим спалились).

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

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

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