LINUX.ORG.RU

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

 , ,


1

2

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

Пока Метапрог не готов, продемонстрирую практическое применение LabVIEW. Скачать программу-демонстратор можно тут:

http://e2tilsgo5s44hqmlwb4epwrjnh7ynvsckj2tl5duwdqbxg67chqpelad.onion/file/9b...

Для перехода по ссылке нужен Tor Browser, для просмотра кода примера - LabVIEW начиная с 2013.

На данном графике - количество комментариев самых активных зарегистрированных пользователей в темах про Метапрог на момент 29.06.19 04:47:37

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

Всего две маленькие диаграмки на Лабвью. Для начала надо распарсить сообщения из сохраненных веб-страниц. Да, страницы пришлось сохранять вручную, так как в Лабвью проблемы с HTTPS (и многими другими сторонними библиотеками). На данный момент проще было сохранить страницы вручную через браузер, чем самостоятельно сделать лабвьюшную реализацию TLS.

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

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

Данная диаграмма берет 12 самых активных пользователей, строит их рейтинг и сохраняет его в картинку:

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

Почти все подписано, специально повключал названия лабвьюшных функций.

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

FAQ

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

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

Примеры

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

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

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

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

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

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

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

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

Наконец-то нормально работают циклы!

https://pastebin.com/1duyPBMB

Это та самая диаграмма со старого скрина:

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

Теперь тупиковые ветки (nk_end и «малювання SDL») тоже остаются в теле цикла. Теперь осталось внедрить тот же механизм управления тупиковыми ветками для условий (if, switch) и можно будет приниматься за разработку Метапрога на «самом себе».

Донат

Bitcoin:1AYoK2TScSpD5bhf67mv9AxHDJ2RidRvjD



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

Нет, я разрабатываю программу, с которой потом сниму видео и опубликую здесь. Главная цель — сделать видео, на которое я сам бы смог отреагировать примерно так: «Хы. Прикольно.»

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

То есть, на альтернативу Метапрогу не претендуешь? Ведь запасной вариант лишним не будет, вот arturianec100 делает skyvis, rebforce делает «Антиметапрог», хотелось бы и твой вариант увидеть.

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

Нет. :-)

Да и зачем? Там вся суть выражается в визуальном ряде. Нет смысла париться с внятным оформлением исходников.

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

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

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

Или сразу компилируется в бинарник?

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

Это не нужно доделывать.

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

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

Так что делать задумку ТС’а нет смысла. А вот сделать визуальную вычислялку с тактами — прикольно. Это похоже на устройство ASIC’ов.

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

Что касается выкладывания исходников, тут ситуация как с кошкой, которая со стола еду просит. Её нельзя давать никогда, иначе кошка решит, что еда на столе — ей.

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

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

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

Ну а если ещё и подстебнуть получится, то вообще просто замечательно.

i-rinat ★★★★★
()
Ответ на: комментарий от eternal_sorrow

У меня тот же вопрос, но меня больше интересует другой.

@i-rinat, @hobbit, почему вы, будучи одними из самых адекватных персонажей на лоре, упорно участвуете в этом тупняке? Что вас так зацепило?

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

Недоступность лабвью (если ты не пират) - это минус лабвью, а не графического программирования как такового

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

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

В Метапроге и Лабвью каждый цвет обозначает свой тип.

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

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

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

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

Ты думаешь ... сможет

Я думаю, не надо заранее выносить приговоры и оценивать чужие способности. Вот, ниже по тексту оказалось, что ТС уже чтение RFC осилил. Ещё немного, и он придёт к необходимости написания своего (например, на тот самый «бинарный версионированный формат»).

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

Не факт, что он действительно читал RFC и не стырил готовую реализацию. Если же таки прочитал RFC, то однозначно тролль, потому что чтение и осмысление мануала требует куда больше мозгов, чем он демонстрировал раньше. В общем, уже не интересно.

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

GCC и Clang компилируют С/С++, будучи сами написанными на С/С++. Но им же как-то доверяют.

Доверию сильно способствует наличие читаемых исходников. GCC нужен только для компиляции, для чтения подойдёт любой текстовый редактор. Хоть vim, хоть gedit, хоть notepad++ (в ряде случаев даже просто notepad подойдёт, хотя если концы строк юниксовые, то текст будет неформатированной кашей).

В случае же с метапрогом даже для чтения исходников понадобится сам метапрог.

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

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

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

Кстати, ты лабвью уже тыкал было дело, может у тебя завалялся лицензионный диск от него?

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

Что еще кроме копирастии мешает тебе поставить Лабвью и присоединиться к разработке Метапрога?

Во-первых, сомнения в эффективности графического программирования как такового. Теоретически меня можно переубедить, но сделать это может только жизнь, сам я лучше пока прикладные программы попишу на имеющихся инструментах. Кто бы нормальную стандартную систему сборки сделал для C++, которая гарантированно будет на любом утюге, где есть сам C++... (Её мало придумать и реализовать, её ещё и продвинуть на эти утюги надо...)

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

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

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

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

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

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

9 часть открыть все же придется. Как насчет открыть в Talks? Там вроде как анонимусов нет, чтобы модераторы не перетруждались тереть их высеры.

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

Разверну поподробнее мысль про бинарные форматы.

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

Первый случай — данные, изначально имеющие неструктурированную природу: картинки, видео, аудио и пр. Хотя даже для картинок есть текстовые XPM и PPM, но на больших разрешениях их недостатки тоже начинают перевешивать достоинства.

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

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

Эти случаи зачастую комбинируются, например, потоковое видео по многим каналам — сочетание пп. 1 и 2.

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

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

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

Слишком сложно. Мне проще текстовый исходник почитать.

Не в машинный же код компилируется (хотя в далеком светлом будущем и этот вариант рассматриваю).

А, тем более, если халяву планируется прикрыть...

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

Если же речь идёт про конфиг или тем более исходники

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

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

Ну так почитаешь сишную трансляцию, какие проблемы?))

Она вряд ли будет человекочитаемой.

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

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

Да это только в Венде заметно. И дело не в формате файла, а в том, как долго она обращается к диску в своей файловой системе. У меня в консоли в Linux настроен Powerline, который на каждый чих тыркает Git, а тот просматривает директорий (иногда и выше вплоть до корня), чтобы просто показать мне сколько файлов изменено. При этом, учитывая и текстовый .gitignore. И это совершенно не заметно. Вообще. Разница в, скажем, декодировании условных 8 байтах содержащих целое, и в atio настолько незначительная в человеческом времени, что пользователь никогда её не почувствует.

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

9 часть открыть все же придется. Как насчет открыть в Talks? Там вроде как анонимусов нет, чтобы модераторы не перетруждались тереть их высеры.

Я не знаю. Здесь так тихо и спокойно стало, что лучше и не придумаешь.

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

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

Ну у игр-то грузящиеся по полминуты данные точно бинарные. И бинарность их не спасает.

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

Ну так почитаешь сишную трансляцию, какие проблемы?))

Нет гарантии, что в бинарном исходнике нет чего-то ещё.

В случае с традиционными языками текст первичен, бинарник вторичен. У тебя всё наоборот, отсюда и проблемы.

Была такая среда разработки — Oracle Developer (не путать с Oracle Designer, впрочем, второй умел генерить модули для первого). Так вот, там «исходник» был двоичный, текст присутствовал только в виде отдельных фрагментов: триггеров и процедур (которые можно было увидеть только в среде разработки, ничего не напоминает?). И это порождало кучу проблем. Не было простого способа выяснить, что программист A поправил в модуле B.

Кстати, Oracle Designer генерировал программы из диаграмм, в некотором роде «визуальное программирование». Но программы только узкого класса — GUI к базам данных. На входе были модель базы, модель процессов и иерархия функций, на выходе — те самые бинарные модули, которые можно было редактировать Developer-ом. А из них можно было компилировать... другие бинарные модули, для исполнения которых был нужен отдельный рантайм, из которого ненативность выпирала, как уши кролика из шляпы пьяного фокусника. Как вспомнишь, так вздрогнешь.

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

В общем, прививку против бинарных форматов я получил ещё тогда.

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

Как насчет открыть в Talks?

Это резко уведёт имидж проекта от чего-то реально разрабатываемого в сторону троллинга. Не советую.

hobbit ★★★★★
()

Чорт! Все пропустил с отпуском. Есть уже что новое? Типа прототип среды, который собирается, а то сильно дофига воды читать.

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

LabVIEW 2013
Tor Browser или просто tor
по ссылке нужен тор

Можно сразу закапывать. На такое только бестолковые макины какеры клюнут.

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

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

Что за трек?

https://www.youtube.com/watch?v=ZqJfqIwpXZ8

сам рисовал или это встроенные в каиро есть?

В Cairo есть кривые Безье: cairo_curve_to(). Считать их самому понадобилось только чтобы в анимации красные точки по кривым двигать.

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