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

На питоне - не могу потому что не хочу.

До-до, зелен виноград…

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

Во-во. Он транслятор-то нормальный сделать не может…

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

Собрать можно так же как и на linux’e с помощью MSYS2

Не собирается на MSYS2, что-то с нуклеар+ не то, разбираться лень. Хотя примеры нуклеар нормально собираются с разными библиотеками.

И так, у меня была Visual Studio последней версии…

Сейчас еще VS качать и ставить?

Из зависимостей только SDL2

#include <SDL_mixer.h>
...
#include <sodium.h>
...
#include <event.h>

#include <event2/listener.h>
...
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

Это все руками надо править? Сначала в метапроге рисуешь программу, потом лезешь в сгенеренный исходник на Си и до посинения правишь все руками? Отличное графическое программирование!

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

Не собирается на MSYS2, что-то с нуклеар+ не то, разбираться лень. Хотя примеры нуклеар нормально собираются с разными библиотеками.

Собирается. Может надо только драйвер отрисовки переключить.

Сейчас еще VS качать и ставить?

Ну а в чем ты еще компилять собрался? Для MSYS2 ставить Visual Studio ненужно конечно же.

Это все руками надо править?

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

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

Не собирается на MSYS2, что-то с нуклеар+ не то, разбираться лень. Хотя примеры нуклеар нормально собираются с разными библиотеками.

Собирается.

https://imgur.com/a/0fWByKC

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

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

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

https://imgur.com/a/0fWByKC

-DNKCD=NKC_SDL

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

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

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

Ну ты можешь скачать метапрог и перегенерировать код с нужными включениями…

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

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

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

Ты думаешь у меня особое восприятие какое то? Я все вижу так же как и ты.

Про ваш будильник.

Моего кода там нету.

-------------------------

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

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

Ахаха

ИТ-образование - это по большей части фабрика макак

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

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

Первое. Профессор написал очень годную книгу по операционным системам, по которой училась куча народу. И тот же самый Minix — это в первую очередь учебная система, оттуда же её достоинства и недостатки.

Второе. Никто никого на ноль не «множил». У участников спора были серьёзные разногласия, какая архитектура лучше — монолитная или микроядерная. И до сих пор, кстати, этот вопрос однозначно не решён. Например, QNX, возможно, лучшая RTOS в мире, имеет микроядро (и энтузиасты QNX мне рассказывали, как ловко они могут перезагрузить, например, дисковую подсистему, не меняя всего остального).

Вот в свободном ПО микроядра не очень прижились, все усилия ушли на Linux. Hurd развивается, но очень вяло. Тем не менее, недовольство раздутостью линуксового монолита существует. Вопрос, ещё раз подчеркну, неоднозначный. Я, скорее, поддерживаю Линуса, но твои потуги перевести ту историю в плоскость «люберецкие посоны забороли солнцевских» ничего, кроме смеха, не вызывают.

Твой же любимый «царь» для СПО сделал ровным счётом ничего. Даже я сделал больше, если уж на то пошло. Кстати, я помню, как он на ЛОРе говорил «дайте мне реальную задачу, я покажу как надо». Но он заранее привёл длинный список, чем он заниматься точно не будет. ЕМНИП, туда входила любая прикладнуха, графика, драйвера и ещё что-то. Короче, все задачи, которые реально могут помочь СПО, он оттуда выкинул. Ты серьёзно считаешь, что этого деятеля имеет смысл упоминать в одном абзаце с Линусом?

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

То ли дело антиметапрогеры %)

Вы таки не поверите…

AntonI ()
Ответ на: Ахаха от hobbit

Вообще книг он написал сильно больше одной

https://www.cs.vu.nl/~ast/book_covers/index.html

но для ТС-а это не аргумент - он же макулатуру не читает

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

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

В этом списке не хватает Дианы, девочка вон как надрывается…

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

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

На самом деле, именно вот это — не аргумент. Будильник всего лишь демка, показывающая, на что способен прототип. А прототип этот нужен ТСу для одной-единственной цели — написать на нём настоящий метапрог. Со своим отношением к традиционным ЯП ТС находится в ситуации «Ты должен сделать добро из зла, потому что его больше не из чего сделать». Если он добро сделает — будильник он перепишет, это не вопрос.

А вот само это отношение ТСа — это действительно проблема и куда бОльшая. Если бы он не воспринимал как «археологию» написанное до него, не делил, как гопник, научные и технические школы на правильные и неправильные (о чём мой предыдущий комментарий) — всё было бы совсем по-другому.

Ирония в том, что уважаемый ТСом Линус Торвальдс к предшественникам относится совсем по-другому, и в книжке, которую ТС неоднократно цитировал, приводил известное высказывание «я стоял на плечах гигантов». ТС же на плечах гигантов стоять не хочет, поскольку на эти плечи ещё надо залезть («учить археологию»). Зато стоять на плечах «копирастов из NI» (его же выражение) ему оказывается не зазорно! Вот такой парадокс.

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

Спасибо за заботу, но ТС пока держится — и я держусь :)

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

Зрители хотят чего-то нового. Но сериал стух уже со второго сезона, сценаристы — наркоманы, режиссера и главного актера — в бан.

Thetan ★★★ ()
Ответ на: Ахаха от hobbit

Re: Ахаха

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

Отличная книга, между прочим. Здорово помогает в изучении не только ОС, но и в понимании принципов разработки софта с параллелизмом.

liksys ★★ ()
Ответ на: Re: Ахаха от liksys

Торвальдс неоднократно говорил, что весьма уважает профессора

Это лишь подчеркивает лицемерие выкающих антиметапрогеров! Или…эээ…может Торвальдс все же метапрогер?

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

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

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

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

Потому что этих библиотек может не быть в системе?

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

Если этим имелась в виду моя цитата

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

то она не подлинная. Метапрог я не писал.

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

то она не подлинная. Метапрог я не писал. What you say?! Простите что? :)

Это какой-то сюжетный поворот на котором у всех порвет шаблон?

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

Прототип Метапрога я делал на Лабвью. На Лабвью не пишут код, а собирают схемы.

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

Вы там написали что метапрог не писали, при чем тут лабвью, вы описались?

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

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

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

Я ни на секунду не откаываюсь от авторства Меапрога, но я его не писал.

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

Наговнякали какую-то хрень

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

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

Винда десятая у тебя есть, посмотри, как там интерфейс будильника сделан

А на линуксе есть что посмотреть? Нет - кроме моего эрзац-будильника, сделаного на текущей версии прототипа Метапрога. Интересно что будут кукарекать антиметапрогеры, когда текущие проблемы прототипа будут решены?

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

Ок, признаю - писал по памяти с телефона и исказил высказывание ТС-а. В оригинале это звучало так:

Что ты сделал из реального софта? Я, например, сделал прототип Метапрога, Линус - ядро линукса, Столлман - Emacs, а ты?

Прошу прощения у @metaprog. Но смысл ИМНО не пострадал.

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

писал по памяти с телефона

Мне льстит, что тебе даже с телефона не лень тут писать.

Прошу прощения

Прощаю. Я не злопамятный, главное вовремя покаяться:)

Но смысл ИМНО не пострадал.

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

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

и низкоуровневостью Си.

Применительно к прикладному софту это не плюс. Далеко не плюс.

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

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

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

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

Да, прогресс налицо! Еще лет 10 и на метапроге можно будет сделать калькулятор. Правда перед сборкой придется убрать лишние инклюды и память течь будет как решето, зато для широкого круга! Главное что не питон (который как калькулятор сейчас удобнее всего - даже ничего делать не надо).

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

Назови дебиановские пакеты. Или виноват проект Дебиан, что не пропускает будильники?

Крон и прочую консольщину не предлагать.

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

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

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

Мне лень гуглить. Я прекрасно программирую на Лабвью и Метапроге, не зная что такое «консистенция».

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

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

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

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

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

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

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

Почему? Софт будет меньше выжирать памяти. Нет сборщика мусора, работающего через жопу. Вот у меня в Лабвью столько проблем из-за автоматического управления памятью - ты не представляешь. Приходится идти на всяческие трюки (лабвьюшное подобие указателей, инлайны функций, в рекурсивных функциях где инлайн нельзя - блок Request Deallocation), чтоб прототип не выжрал полтора гигабайта - дальше Лабвью валится, хотя свободной памяти у виртуалки еще больше гигабайта. Утечки в сишном коде и метапроговских диаграммах можно легко поустранять вручную, оптимизировав все донельзя, в скриптухе - сплошной БДСМ с работающими через жопу недоабстракциями.

Ну и новичку будет несложно освоить в интерактивных гайдах указатели, структуры, юнионы, энумы и определения типов (хватит пальцев одной руки, чтобы это перечислить) и собирать из них в графическом Метапроге софт любой сложности. Не то, что засирать себе мозги, читая толстые талмудины по ООП, ФП и прочим абстракциям ради абстракций.

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

Ширину лба померял линейкой? А зрение какое? Если уже 10см и хуже -6 диоптрий - иди мой полы!;-)

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

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

Кстати да. Как же так @metaprog почему еще не намалевал на лабвью поиск по гуглам или дакдакго? Этож «элементарно» для такого великого графического программирователя как ты.

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

Сначала ему нужно сделать условные схождения же! Кстати арифметика на их СУВТ-ах похоже не реализована, тока print… а как дышал, как дышал!

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

Это ненужно, развалится оно само безусловно, прямо из коробки.

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