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

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

Посмотри на онлайн-игры. На одной карте/локации играет несколько человек одновременно, но все синхронизируется и никаких merge hell нет и в помине. Думаю так же будет и с Метапрогом, в том числе лабвьюшным прототипом: возможность совместной работы в режиме реального времени.

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

Если файлы бинарные... мерджится гитом оно не будет

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

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

но все синхронизируется и никаких merge hell нет и в помине.

И тут геймдев заплакал.

Ты обидел геймдевелоперов. Зачем ты это сделал?! Чего ты этим добился?!

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

Посмотри на онлайн-игры. На одной карте/локации играет несколько человек одновременно, но все синхронизируется и никаких merge hell нет и в помине

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

Будет своя система контроля версий, разработанная специально для Метапрога

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

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

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

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

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

Мы только что лицезрели

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

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

В самолетах уже вайфай есть давно, который ютуб на fhd прокачивает, что ты как маленький.

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

Во. Концепт новой VCS готов. Какие подводные?

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

посмотри на sigmastudio

Оно немножко не то. У меня LabVIEW и как образец, и как рабочий инструмент (пока не готов Метапрог «сам на себе»).

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

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

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

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

Да, помню как этой фигне учили в школе не информатике.

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

Чот я вспомнил какой был merge hell если по недосмотру два программиста работало одновременно над одним workflow в сишарпе. При том что по внутреннему устройству там был обычный XML. Проще было реально одному откатить изменения, взять патч от другого и вновь внести свои вручную. Пару раз догаваривались у кого меньше изменений, а потом стали догавариваться предупреждать друг друга когда кто-то воркфлоу изменяет.

ТС предлагает править XML как в КС – в онлайне. У кого пинг меньше, тот и проиграл. Зато без конфликтов слияния. Но это не точно.

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

LabVIEW - единственная нормальная визуальная среда программирования. Все остальное - шлак. Ничего лучше LabVIEW мне за 9 тем так и не показали.

  • DASYLab®
  • ATEasy
  • VEE Pro (от Keysight)

Ищите и обрящите.

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

ТС предлагает править XML как в КС – в онлайне

Только не XML, конечно, а Бинарный Версионированный Формат (БВФ). Спецификацию этого БВФ пока никто не видел.

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

Вот ведь парадокс.

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

Хотя один отказ от БВФ в пользу чего-то типа JSON освободил бы тебя от нескольких месяцев дурной работы, и если уж хочется VCS для диаграмм — можно было бы сделать диаграммо-надстройку над тем же git. Или даже svn (бугага).

Ну хочешь заниматься дурной работой — занимайся.

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

Спецификацию этого БВФ пока никто не видел.

Полагаю, основываясь на протоколе того чата, что это тот же XML, где выпилены все пробельные символы, которые введены для удобства чтения, и все <, >, /, и т.д. заменены на enum-ы. Правда я пока не заню, знает ли ТС про little-endian/big-endian и какой выбрал.

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

Правда я пока не заню, знает ли ТС про little-endian/big-endian

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

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

Бинарный Версионированный Формат (БВФ). Спецификацию этого БВФ пока никто не видел.

Очень просто.

1. 64-битное беззнаковое (версия)

2. Произвольные данные

Формат произвольных данных может по 100500 раз меняться благодаря верионированию. Ключи к расшифроке разных версий формата - в определении типа версионированного формата.

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

DASYLab®

Есть даже на сайте NI. Что-то в дуже Лабвью, но такая же пропиетарщина.

ATEasy

VEE Pro (от Keysight)

Попробую потыкать на досуге.

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

Полагаю, основываясь на протоколе того чата, что это тот же XML

Вообще ни от какого XML я не отталкивался. Есть число/енум и дальнейшие бинарные данные, структура и обработка которых зависит от числа/енума.

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

Это всё проприетарщина. И некотороые из них стоят поболее LabVIEW. Нужен там свой рантайм для исполняемых файлов или нет – вот что интересно. И что там с лицензиями. Может есть что попроще.

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

Вообще ни от какого XML я не отталкивался.

Нельзя не отталкиваться от XML, т.к. XML – это универсалия.

Есть число/енум и дальнейшие бинарные данные, структура и обработка которых зависит от числа/енума.

Почему бы просто не использовать ProtocolBuffers тогда и всё?

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

И как будут решаться конфликты?

Ну, так кубики же. Для редактирования просто нужно установить мета-версию майнкрафт и программировать там с другими участниками, на сервере. Заодно и стриммить можно на Ютубе. Это гениально. Ах-ха-ха.

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

И как будут решаться конфликты?

Очень просто.

  1. 64-битное беззнаковое (версия).
  2. Исполняемый бинарник для решения конфликтов.
  3. Произвольные данные.
i-rinat ★★★★★
()
Ответ на: комментарий от kostyarin_

Почему бы просто не использовать ProtocolBuffers тогда и всё?

Хотя бы потому что нет их лабвьюшной реализации.

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

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

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

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

Ну тогда надо отдельную спецификацию на каждое значение этого 64-битного беззнакового, чего уже.

Формат произвольных данных может по 100500 раз меняться благодаря верионированию.

Ой, а как будет выглядеть код, читающий все старые версии... ммм...

Ты точно уверен, что это проще, чем вызов функций парсера XML/JSON?

По поводу лёгкости и приятности чтения двоичных форматов тебе бы с GreyCat пообщаться. Он для описания всех тонкостей работы с ними целый декларативный язык разработал.

Правда, учитывая твою общительность на ЛОРе, я не уверен, что ты не успел и его послать в жопу.

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

сначала передается 64-битное беззнаковое (версия протокола

Ну так Protocol Buffers не запрещает версионирование. А XML так и всегда был версионированным. Но это версия формата. А версию схемы можно прикрутить куда угодно, хоть в JSON,

<version>2.5</version>

как и в Protocol Buffers

message Core {
    uint64 ShemaVersion = 1;
    // blah
}

Хотя в Protocol Buffers используется другой подход – номера полей. Просто устаревшие поля можно игнорировать. И старые данные остаются годными, просто без новых полей. Короче, крутая тема. И для сжатия там применяются ухищрения типа varint-encoding, а не 8-ми байтные целые.

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

Формат произвольных данных может по 100500 раз меняться благодаря верионированию.

Ой, а как будет выглядеть код, читающий все старые версии... ммм...

На сишном уровне - главный switch, тыкающий разные элементы из юниона плюс случай «ошибка версионирования» (на сишном уровне = else на дне switch). По сути то же что и структура условного выбора типа, но для версионирования.

По поводу лёгкости и приятности чтения двоичных форматов тебе бы с GreyCat пообщаться. Он для описания всех тонкостей работы с ними целый декларативный язык разработал.

Даже есть замашки на визуальное представление:

www.linux.org.ru/images/17323/original.png

metaprog
() автор топика

Донат Bitcoin:1AYoK2TScSpD5bhf67mv9AxHDJ2RidRvjD

А давайте создадим еще один кошелек для донатов на киллера ТС ^_^

Если на втором больше наберется, значит такова оценка затеи

Ивините, если уже было. Наверняка было

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

Бабло давай, неча разглагольствовать!

metaprog
() автор топика
5 ноября 2019 г.

Den_Zurin, тут ТС текстовые языки программирования хочет отменить, взять-взять!

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