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

Ты сам начал ругать именно ООП как концепцию — так вот, в ядре линукса оно есть.

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

Кстати, в языке без классов с ООП трахаться приходится гораздо больше. В Си можно реализовать даже виртуальные методы — но все указатели на функции тебе придётся заполнить вручную... Аналогично. Ты протрахаешься гораздо больше, если у тебя будет прямой доступ к полю, но заполнять его можно только строго придерживаясь некоторых условий. А такие ситуации встречаются достаточно часто.

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

с разговора про ООП ты тут же сбиваешься на языки реализации

По реализациям и сужу. Сферическое ООП в вакууме мне не особо интересно.

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

Ну если у вас появляются ещё и таблицы переходов — значит, вы действительно переизобретаете ООП. И смысл был вести крестовый поход против «абстракций»?

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

Это больше из-за природы вычислительных машин с мутабельностью и состоянием :3

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

Это не ООП. Конечно можно натянуть сову на глобус, но тут от него только полиморфизм.

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

Память та же быстрая твердотельная уже сделала маленькую революцию в некоторых областях. Но все это на уровне идеологии все та же двоичная система…

И императивное железо, с которым быстрее всего работает Си и Метапрог, транслирующийся в чистый Си.

Что бы новая идея появилась и все перевернула - на это мне не хватает воображения;-(

Я тебе не раз на это указывал, наконец-то ты это осознал.

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

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

Походу ты кое-что начинаешь понимать. Еще не поздно покаяться и стать метапрогером.

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

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

Я ж еще в первой Метапрог-теме писал, что текстовые ЯП практически исчерпали возможности развития.

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

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

Начинаешь кое-что понимать, глядишь метапрогером станешь.

Но метапрог такой суперабстракцией безусловно не является.

Почему?

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

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

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

так вы пока ничерта нового тоже не предлагаете кроме как привести некое подмножество С в квадраты и линии которые сваливаются в месиво

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

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

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

В Метапроге есть встроенная справочная система и мы с Котечкой готовы консультировать через Метапрог онлайн.

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

Только он становится проще.

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

я на них смотрю на скриншотах, что если это делать как-то иначе то они понятнее становятся? )

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

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

В Метапроге есть встроенная справочная система и мы с Котечкой готовы консультировать через Метапрог онлайн.

У любого другого языка есть тоже самое

Только он становится проще.

И в чем же проще? И если вы что-то называете проще то по каким критериям одно проще другого?

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

Я ж еще в первой Метапрог-теме писал, что текстовые ЯП практически исчерпали возможности развития.

Когда Вы поймете что текст/диаграммы это лишь способ ввода, и лимитируют развития ЯП чуть более чем никак? Есть например doxygen который генерит тонны картиночек на основе текста программы, изучай - не хочу! При этом картиночки интерактивные (кликабельные) и куда выше качеством чем то что у Вас в метапроге.

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

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

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

И императивное железо, с которым быстрее всего работает Си и Метапрог, транслирующийся в чистый Си.

Бред.

Но метапрог такой суперабстракцией безусловно не является.

Почему?

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

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

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

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

Какова вероятность того, что 100 тыс шимпанзе за клавиатурами напишут ядро линукс? А какова вероятность того что они его нарисуют в аналоге метапрогра?

«Создайте систему которой сможет пользоваться даже идиот - и только идиоты будут ей пользоваться»(с) з-ны Мерфи.

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

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

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

Опять «межпланетный шахматный турнир» :)

Это не просто мечта - это мета-мечта.

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

Что тебе мешает прямо сейчас скачать и запустить прототип Метапрога?

Ага, скачай это говно, запусти, а потом отмывайся от него всё остальное время.

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

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

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

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

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

То есть получается жгутик, к квадрату который нужно ещё комментировать. Такая же переменная, только +1 абстракция в виде ненужной геометрической фигуры.

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

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

stasolog
()
Последнее исправление: stasolog (всего исправлений: 3)

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

AppImage так и не осилили ? Там вроде твой адепт клялся на электрогрибах, что к следующему «прототипу» сделает.

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

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

https://pastebin.com/5NW30tQx

Оставь квадраты и жгутики в покое, они не заслужили превращения в ЭТО.

shpinog ★★★★
()

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

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

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

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

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

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

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

Охотно верю.

Ты веришь потому, что тебе в это хочется верить.

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

но операционкам лучше учиться на реальных примерах

Он для этого миникс и сделал. Потому, что учиться на системе, которая используется в промышленности, можно, но даже с открытым кодом это «будет очень долго и муторно» — хотя бы потому, что туда напихано очень много всего, для поддержки разного железа, разных сетевых протоколов, разных ФС и др.

Хотя рекомендованного оппонентом Цилюрика (aka @Olej) почитать тоже можно. А пожалуй, даже и нужно, если интересуют конкретно линуксовые драйвера. Это более специализированная книга.

Не интерактивные обучалки, я понимаю…

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

А если не захочет оптимизироваться?

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

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

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

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

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

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

сам метапрог таким анализом занимался

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

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

Интересно, а почему уважаемую публику не интересует, что в Яве не один сборщик мусора? Какой котечка имел в виду? И какое приложение?

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

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

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

Большая часть айти-«образования» - не более чем фабрика макак.

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

Императивный, декларативный, функциональный. Lingua Latina non penis canina. Да-да, я прекрасно программирую на Лабвью, не зная значения всех этих заумных словес.

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

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

(c) @metaprog

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

Потому что по итогу это все равно в разряд ненужно будет отправлено

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

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

+1

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

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

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

Еще в Java можно просто отключить GC, знаешь же зачем такое может понадобиться? Что бы GC не нагружал CPU своей бесполезной работой, а приложение все равно прибивается после исчерпания памяти.

И какое приложение?

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

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

Прототип еще не готов. И я не обещал AppImage, и даже не говорил что буду делать его.

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

Простите, но вы ошибаетесь. No-op нужен совсем не для этого.

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

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

Соглашаюсь. На Метапроге можно будет сделать и хорошо, и плохо. Но если делать хорошо, то можно будет сделать это лучше, чем на той же джаве: джава (и любая другая скриптуха) упрется в собственную ограниченность, в то время как Метапрог будет транслироваться прямо в Си без лишних наслоений, а если даже сишных возможностей будет мало - можно будет делать ассемблерные вставки или вообще транслировать диаграммы в что-то другое, например LLVM IR или ассемблер.

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

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

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

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

я на них смотрю на скриншотах, что если это делать как-то иначе то они понятнее становятся? )

Да.

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

Только там еще и маны придется постоянно гуглить, в отличие от Лабвью и Метапрога. Мне доводится кодить под ардуину - и на каждую мелкую функцию, еще мне не знакомую (да и под многие знакомые тоже), приходится гуглить курить Reference. В Лабвью даже с библиотекой, которую видишь впервые в жизни, все понятно и без гугла.

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

И в чем же проще? И если вы что-то называете проще то по каким критериям одно проще другого?

Скачай и попользуйся прототипом Метапрога, тогда поговорим.

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

doxygen

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

ЯП в первую очередь характеризуется абстракциями и парадигмами которые он предоставляет.

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

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

И императивное железо, с которым быстрее всего работает Си и Метапрог, транслирующийся в чистый Си.

Бред.

А что работает быстрее Си? Ассемблер? Или таки питон?))

Потому что Вы необучаемый дворник заложивший в метапрог концепции которые были популярны 50 лет назад.

И они за это время не устарели. И что мне вместо этого закладывать в Метапрог? ООП? ФП? Сборщик мусора? Что там еще в новомодной скриптухе, которую мне лень учить?

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

Предлагаю написать аналог микроядра Mach/L4 на Метапроге

Сам я, наверное, предпочту просто допиливать на Метарпоге линукс, когда это станет возможным на Метапроге.

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