LINUX.ORG.RU

Metaprog: универсальная графическая среда программирования [в разработке] часть 7

 , , ,


1

3

FAQ

0. Где отсутствующие примеры и пункты FAQ? Как вообще читать эти темы?

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

10. Примеры выдают варнинги при компиляции (у кое-кого еще и сегфолтятся)

Решено вводом неанонимных структур, если идет обращение к данным из сишных инклюдов.

12. Зачем ты пытаешься сделать «графический C» (используя подходы к разработке, структуры данных и прочее из C, но в виде блоксхем)?

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

13. Есть же first order logic, лямбда исчисление и т.д. Ты бы изучил для начала альтернативы, может для данного вида представления имеются лучшие подходы?

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

Примеры

Предыдущие см. в прошлых темах

Metaprog: универсальная графическая среда программирования [в разработке]

Metaprog: универсальная графическая среда программирования [в разработке] часть 2

Metaprog: универсальная графическая среда программирования [в разработке] часть 3

Metaprog: универсальная графическая среда программирования [в разработке] часть 4

Metaprog: универсальная графическая среда программирования [в разработке] часть 5

Metaprog: универсальная графическая среда программирования [в разработке] часть 6

Неанонимные структуры

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

Главная функция:

https://i.postimg.cc/8kJdT96h/image.png

Открытие нового окна:

https://postimg.cc/kBX6rB0P

Та же диаграмма в видео:

https://streamable.com/jqng1

Видно всплывающие подсказки, в конце удаляется и снова проводится один из проводков.

Начало рисования SDL, то что должно делаться каждый цикл в нуклеаре:

https://postimg.cc/tYS199bZ

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

Кстати, что мешает мне сейчас сделать главный нуклеаровский цикл, ведь циклы ж уже готовы? Смотрите на этот скрин:

https://i.postimg.cc/65N2KMQz/image.png

Почти такой же пример, только есть цикл и нету sleep (чтобы можно было полюболваться на окошко 10 секунд). Что тут не так? Схема правильная, но надо еще научить транслятор ставить «тупиковые» ветки, берущие начало в цикле, в пределах цикла по-умолчанию. Сейчас код nk_end и малювання SDL оказываются за пределами тела цикла, буду это исправлять. Где-то там же находится ключ к полному налаживанию ветвления через if и switch.

Сам код:

https://pastebin.com/f5PDfi77

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

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

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

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

metaprog ()

Напоминаю всем, что ТС умеет стоять на своём, насколько бы ни были хороши ваши аргументы.

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

На эту тему есть очень хорошая статейка:

https://habr.com/ru/post/454774/

В связи з этим вспомнились вопросы о типах в «Антиметапроге» rebforce:

Metaprog: универсальная графическая среда программирования [в разработке] часть 4 (комментарий)

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

Еще раз убеждаюсь в необходимости статической типизации. И цветных проводков с разными типами:)

metaprog ()

Обновлённый список факторов риска, v3

Краткая выжимка для тех, кто думает, не помочь ли автору с проектом. С позицией самого автора проще всего познакомиться, прочтя общую концепцию (тема 1) и FAQ (тема 4).

Однако, тем, кто хочет броситься в пучину Метапрога, следует также иметь в виду, что:

1) автор настолько не любит текст, что даже внутреннее представление графических диаграмм хочет сделать двоичным. Готов ради этого даже разработать собственную VCS (а также, вероятно, кучу других инструментов, о которых он сейчас просто не задумывается - hobbit);

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

3) автор не видит ничего страшного в том, что сгенерированный сишный код имеет обфусцированный вид («не для эстетов»). В частности, планирует все функции-диаграммы сливать в сишную функцию main(), что ставит жирный крест на возможности локализации ошибок в исходнике с помощью valgrind (и не только). (В последнее время автор допускает, что это поведение, вероятно, будет настраиваемым.) Все переменные имеют автогенерированные цифровые идентификаторы, хотя можно было хотя бы там, где это возможно, производить сишные имена от имён объектов диаграммы;

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

5) выбрав GTK для построения UI, автор не использует уже созданные _графические_ инструменты создания UI, а чертит диаграммы с вызовами функций GTK, что гораздо менее наглядно, чем работающие решения и изрядно дискредитирует саму идею графического программирования. Правда, на том, что это постоянное решение, он не настаивает, вероятно, со временем этот вопрос будет снят. Но нынешние демки (которые по идее, должны дать новым людям понятие о преимуществах графического программирования) сделаны именно так;

6) (NEW) автор тактично уходит от вопросов, есть ли у него лицензия на LabVIEW. При разработке в одно рыло это, в общем, его личное дело, но если найдутся помощники — лицензионный вопрос может похоронить работу всего коллектива. Даже если с лицензией всё хорошо, зависимость опенсорсного продукта от проприетарной среды разработки это очень плохая ситуация, а особенно, когда продукт стремится конкурировать с этой самой средой. По крайней мере, пока прототип разрабатывается на LabVIEW, и автор что-то публикует (а такая ситуация может продлиться неограниченно долгое время). Опасность можно считать миновавшей только в случае появления исходников на Си (естественно, необфусцированных), позволяющих каждому собрать свой Метапрог.

Замечу однако, что сама идея выхлопа в виде исходников на Си («переносимый ассемблер») очень здравая, поскольку она сильно облегчает идею переноса метапрог-программ на 100500 процессорных архитектур и позволяет задействовать некоторые существующие инструменты (точнее, позволяла бы, если бы код был необфусцирован).

Примечание для анонимусов номер 1. Я специально не стал в этих пунктах перечислять претензии к личности автора, которыми тут многие грешили в предыдущих темах (школьник, студент, ЧСВ, компетенция и всё такое). Всё это во-первых, субъективно, во-вторых (главное), лечится со временем, в третьих, обсуждение всего этого приближению к истине не способствует. С избранными высказываниями автора, характеризующими его позицию как разработчика, можно ознакомится в репозитории у balsoft. В свой список я собрал исключительно сугубо технические детали, которые продвигает автор, и на большинстве которых (в частности, на бинарном формате) он категорически настаивает.

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

hobbit ★★★★★ ()
Ответ на: Обновлённый список факторов риска, v3 от hobbit

1 - Да.

2 - Описания, возможно, будут, но уже тогда, когда будет опубликован сам «настоящий» Метапрог

3 - Сишные компиляторы не понимают кириллицу, так что лучше называть по цифрам. А еще сишные названия строятся так, чтобы на 100% избежать коллизий (префикс metaprog_instance_0_... - это все номера подфункций).

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

5 - Я уже щупаю нуклеар, так как в гтк не увидел адеквантого функционала рисования диаграмм плюс еще другие претензии (ООП, CSS, хуже с переносимостью чем нуклеар+SDL2).

6 - Я не публикую код лабвьюшного прототипа Метапрога и не приобщаю здешнюю публику к его разработке из-за платности и пропиетарности Лабвью, плюс Лабвью - весьма неудобный инструмент для совместной работы и интерактивой обучалки для новичков там нет. Когда будет готов «настоящий» Метапрог «сам на себе» - выложу сишные исходники (выхлоп транслятора диаграмм в Си) для компиляции. На нем уже будет вестись совместная работа над дальнейшим развитием Метапрога.

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

Заодно попробуем убедить Владимира зарегистироваться и набрать скор

Да можно попросить разбанить его старый аккаунт (если он сам осознает ценность оного), это более конструктивно.

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

Отлично, возможно, четвёртая версия списка будет более лаконичной.

3 - есть же транслит и даже ГОСТы на этот транслит (можно задействовать для однозначности). Ну и первая часть п.3 меня печалит больше, чем вторая — про кучу неидентифицированного кода в main(). Надеюсь, что таки будет настраиваться.

5 - а что, в нуклеаре нет ООП? А если найду? :) Серьёзно, в той или иной форме ООП присутствует практически в любом оконном API (даже в win32, написанном тоже на чистом Си). Поскольку практически во всех современных ОС окно — это объект, который обменивается с другими объектами сообщениями. А «если нечто выглядит как утка, плавает как утка и крякает как утка, то это, вероятно, утка и есть».

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

А можно вы в свои темы своего метапрога не будете писать тег C?

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

Если этот «объект» - всего лишь структура, а не класс - то все окей. Без инкапсуляции.

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

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

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

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

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

А, в самом коде. В Метапроге тоже думаю делать что-то подобное. Объяснять на месте. Также планирую вожможность комментариев к диаграммам в репозитории, скорее всего начиная с «только читающей» версии.

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

Также планирую вожможность комментариев к диаграммам в репозитории

Я джва годжа ждал вожможность комментажиев к диажраммам в репожитории.

Ты draw.io видел когда-нибудь вообще? Это касательно диаграмм и комментариев к ним.

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

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

rebforce ()
Ответ на: Обновлённый список факторов риска, v3 от hobbit

. С избранными высказываниями автора, характеризующими его позицию как разработчика, можно ознакомится в репозитории у balsoft

А был же лорцитатник отдельным сайтом? http://lorquotes.ru/ Зачем репа?

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

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

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

Потыкал чуточку draw.io. После Лабвью так себе. Советую тебе попробовать триалку Лабвью.

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

На эту тему есть очень хорошая статейка

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

Еще раз убеждаюсь в необходимости статической типизации

Они там такие типы запилили, что сишная типизация с его void* просто воздушный шар на фоне космического шаттла.

А вот история про целую корпорацию фанатиков динамической типизации - это «куда катится мир?».

arturianec100 ()

Так это, раскрутка компилятора (транслятора?) когда выполнена будет? Пока её нет/невозможно сделать, говорить о чём-то немного рановато.

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

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

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

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

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

Мне нужны подсказки, чтобы ускорить работу

В этом ты отстаешь от своего любимого Линуса. В бытность написания ядра 0.01 он свободно читал техническую литературу и виртуозно владел сями и ассемблером. А еще имел профильное образование, да.

На самом деле очень интересно знать, в каком заборостроительном ты учишься. Это у вас в целом кафедра отбитая, или ты один там уникум такой?

liksys ()

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

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

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

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

Да ладно уж дипломами меряться, давай сразу письками. Сколько у тебя см?

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

Ты освоил графическое программирование? Поставил триалку Лабвью? Попробовал? Сделал хотя бы простенький веб-сервер на нем? Нет? Тогда ты дурак необучаемый. Это по твоей же логике.

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

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

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

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

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

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

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

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

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

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

Ничего не знаю

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

засунь себе в жопу

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

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

в лабвью сервера писать

В Лабвью сервера не пишут. Вообще ничего не пишут. Не пишут. Но собирают из блоков. Слабо веб-сервер собрать?

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

Чтобы в графике программировать, а не в тексте, что тут непонятного?

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

Переплюнешь ли меня?

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

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

Да ладно, все я в состоянии. Но ты же такой аху профи, ты же лучше сделаешь и быстрее. Или нет?

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

Доказать свою способность освоить Лабвью и понять азы графического программировния.

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

Да ладно, все я в состоянии

Не-а, не в состоянии. Ты просто собираешь кубики, как ребенок, не понимая глубинных процессов.

Но ты же такой профи

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

Доказать свою способность

Аксиома в доказательстве не нуждается.

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