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

лично я ценю людей за такие качества как честность, взаимопомощь, интеллект, физическая красота наконец

Все эти качества обнуляются, если восприятие реальности искажённое.

  1. Вот тут Вам в треде много чего писали совершенно честно. Если Вы и цените эту честность, то, как минимум, странно.
  2. Вы предлагали мне лично потакать мнению и желаниям ТС, несмотря на то, что это только замедлит или остановит развитие проекта в целом. Это взаимопомощь. Ну, то что мы, включая Вас, сейчас не Метапрог обсуждаем, в этом треде, туда же – к взаимопомощи.
  3. Интеллект. См. честность.
  4. Физическая красота. Субьективно, либо навеяно извне, так же как и мода на iPhone. Зачастую под физической красотой среди низших слоёв понимаются гипертрофированные те или иные части тела, что по сути уродство.

с чего ты решил что я жлоб к примеру

Ну так срать на всё – и есть быть жлобом. А так же считать правильным, и справедливым, и вообще хорошим только то, что удобно или выгодно лично Вам, а всё остальное считать говном – туда же.

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

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

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

Я не говорил, что Вы жлоб. Просто предположил, что путь избранный Вами приведёт к закономерному результату. Просто Вы всё переиначиваете как обычно.

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

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

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

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

что ты несёшь. ещё один кандидат в дупу.

Говорю же, Вы отличный человек, просто у Вас искажённое восприятие. Вот и всё.

kostyarin_ ★★
()

Я бы всё же предпочёл использовать обычные исходники на Си, директорий с ними, и отдельно файлы с мета информацией для отображения. С тем, что не входит в рамки обычного Си. Типа

typedef struct mp_typ {
    int number;
} mp_styp;

int
mp_typ_inc_number (mp_typ *t) {
    t->number++;
    return t->number;
}

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

struct mp_typ {
   // мета информация о struct mp_typ
}

mp_typ -> struct mp_typ; // просто референс

mp_typ_inc_number {
   // мета информация о функции mp_typ_inc_number
}

Таким образом любой проект на Си будет готовым проектом на Метапроге, просто без плюх. Имена на мове, там и прочее. И любой проект или заголовки можно так же легко импортировать. То что нету привязки к номеру строки позволит редактировать исходники. Текстовый формат мета-данных позволит легко просмотреть их. Так же это совместимо со всеми VCS. И ещё можно делиться мета-данными или использовать старые мета-данные для новых проектов с небольшими изменениями. Например, если я импортирую заголовки libsome1. Пишу для них мета данные. А потом перехожу на libsome2. Скорее всего часть типов и функций там будут называться так же, и мне нужно будет только исправить отличия между этими двумя версиями.

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

Тут уже нужно не только открытое ПО, но и открытое железо. А его сделать куда труднее. Опенмоко вон пыталось — и где оно теперь?

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

P.S. Вообще мне таки есть шо за это всё сказать, но в этой теме это будет некошегно.

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

Это детектор возраста. «Я не такой как все!» «Я против системы!» «Мне 16 лет.»

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

Ты хочешь редактировать оттранслированный сишный код? Зачем, когда есть Метапрог? Это все равно что хотеть редактировать скомпилированный бинарник вместо сишного кода.

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

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

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

Дык я уже использую сишные инклюды, с самых первых хеллоуворлдов.

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

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

Вот тут ты зря.

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

Бессмысленно, беспощадно, но вполне реализуемо.

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

У него в списке дел ещё нет вкладки «очень хочу сделать, но времени и сил на это никогда не будет». Помнишь, как было здорово, когда этой вкладки не было, и все планы казались реализуемыми?

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

Тогда было право сильного.

Да и сейчас, или право монополиста на насилие — это не право сильного?

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

право монополиста на насилие

Ты государство имеешь в виду? Да, государство монополизует право на насилие.

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

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

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

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

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

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

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

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

Кто и как будет проверять, если никто даже не знает как меня зовут? Это по фирмам вроде как лазят, а по домам - нет, особенно если я обезличен. И то у нас вроде попроще с этим, чем в рашке.

не в виде зипа, а в виде репы

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

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

Хорошее здание без фундамента не построишь. А судя по твоим заявлениям, фундамент у тебя краденый.

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

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

Гит-репозиторий представляет собой директорий с файлами. При этом наполнение этого директория может быть любым. Нет нужды заливать или сливать файлы поштучно. Вы просто (1) создаёте директорий или используете существующий, (2) входите в него в терминале (3) инициализируете его как гит-репозиторий один раз git init .

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

  • Просто делаете свои изменения
  • git add .
  • git commit -a -m "улучшил то-то там-то"
  • git push

И все новые изменения залиты в шару.

При этом легко управлять правами доступа к шаре или использовать традиционную практику пулл-реквестов. В общем это чертовски удобно. Просто чертовски удобно. Если есть желание, я могу всё объяснить. Да и не только я, тут каждый первый, наверное.

Гит не был бы так востребован, если бы он не был так чертовски удобен как раз для групповой разработки.


Существует проблема с авторскими правами, т.к. GitHub репозиторий – уже один способ сопоставить Ваше творение с Вашей личностью. Т.е. риск.

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

Существует проблема с авторскими правами, т.к. GitHub репозиторий – уже один способ сопоставить Ваше творение с Вашей личностью. Т.е. риск.

Каким образом? Я ж не показываю паспорт при регистрации в гитхабе.

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

Каким образом? Я ж не показываю паспорт при регистрации в гитхабе.

Нет, только email, а так же сетевые логи будут хранить Ваш IP, вероятно. И это касается всех участников.

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

Попытаюсь сервак сделать под это дело.

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

Дельное замечание. Против этого есть тор.

Короче, лучше все делать через тор. Безопасность и шифрование по умолчанию.

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

Неудобен гит в одном: консоль!

Вроде бы у него есть какие-то морды, но консоль намного удобнее. Главное настроить псевдонимы для команд, типа:

git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
git config --global alias.hist "log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short"
git config --global alias.type 'cat-file -t'
git config --global alias.dump 'cat-file -p'

И использовать их, а я ещё использую такой вот

git config --global alias.cm commit -a -m

Чтобы просто

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

На хабре о ней писали вроде бы.

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