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

Но подсказки получаю исправно и этого пока что хватает.

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

Графический аналог всяких там systemctl.

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

У краудфандинга часто проблемы с маркетингом (тонны бабла) и с доверием к создателям. А ещё большинство хомячков, которые не видят дальше собственного носа, не парятся на счёт «инвестировать в развитие Х», что сильно мешает набрать краудфандингу бОльшие масштабы.

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

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

Честно, отношусь к винде и линксу одинаково, мне главное что система работает. Я бы бы еще затестил макбук с макосью, но дороговато

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

Изначально копирайт защищал только создателей. Потом уже примазались всякие посредники. Имхо, копирайт должен защищать ТОЛЬКО СОЗДАТЕЛЕЙ. Типа законов «авторское право может принадлежать только одному физическому лицу, никаких юр. лиц», «полный запрет на продажу авторских прав кому-либо», «несдвигаемые сроки становления общественным достоянием». Кстати, тогда бы простой работяга, который изобрёл важную штуку, был бы на вес золота в качестве сотрудника, а не «работяга сделал, а патент/авторское право у компании».

Также весьма обоснованное и действительно нейтральное мнение об авторском праве у самого Линуса.

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

Я даже цитату Линуса приводил. Вся проблема в том, что законодательство об авторском праве пишется под диктовку лоббистов из всяких майкрософтов, а вовсе не в интересах непостредственно создателей софта.

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

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

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

Винду 10 я б и за бесплатно не поставил. И даже за деньги со стороны говнософта не поставил бы.

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

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

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

Не, «мой» я имел в виду тот который я в данный момент ковыряю. У меня самописных, в основном, питоноскриптии, которые я уже сто лет не ковырял, но всё довольно просто, хоть и возникает вопрос «зачем я так делал?». А вот с чтением чужого кода проблемы. Особенно когда код писал «крутой» программист, срезая на поворотах и экономя на формулах. Совсем недавно пришлось парсить такой исходник, обработчик макросов для станка. Мало того, что он написан на старинных сях, для доса, так ещё и пол дня убил на поверхностное вникание из-за формул написанных непочеловечески. В результате переписал формулу «по деревенски», разложив на более понятные мне члены и всё заработало, потом добавил своё, вроде работает, но блин, сколько времени ушло на это... Вот таких вещей хочется избежать, поскольку я не программист, вникать всегда приходится долго, а структуру увидев как-то сподручнее, чтоли. По крайней мере отваливается нужда вникать в объявления функций, а у каждого языка оно своё, раз в сто лет влезая в код помнить нюансы каждого языка просто невозможно.

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

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

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

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

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

По моему Вы чересчур оптимистичны. Более того, я думаю, что перспективнее было бы разрабатывать программы, которые пишут программы. Т.к. ниша т.н. визуального программирования существует достаточно времени, чтобы сделать выводы о её специфике. Лично проект Metaprog – мне кажется тупиковым. Во-первых потому, что разрабатывается дилетантом. Во-вторых, потому, что т.н. визуальное программирование вовсе не отменяет необходимости делать всё то же, что делается текстом. Как итог, например, простой цикл

for i := 0; i < 50; i++ {
   switch {
   case i % 15 == 0:
       fmt.Println("fizzbuzz")
   case i % 5 == 0:
       fmt.Println("buzz")
   case i % 3 == 0:
       fmt.Println("fizz")
   }
}

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

А так же учтите насколько низкоуровневую платформу выбрал разработчик (удачи в malloc/free с «кубиками»). Целевая аудитория подобных проектов, либо не программисты вообще, либо программисты-макаки. Сами понимаете, как «живительно» будет для них ручное управление памятью. Думаю, до первой утечки или первого сегфолта.

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

В моей реализации есть планы по парсингу исходников на текстовых ЯП, но это самая сложная часть и полноценно будет работать очень не скоро. Увязать парсер питона на питоне, парсер крестов на крестах и т.д. в одну программную систему - это «вершина айсберга». Поиск идиом ЯП - это тоже жесть, писать предикаты для паттерн матчинга аст, чтобы идиома типа множества *to = *from++; в цикле давало краткое визуальное описание, а не схему на весь экран. Я вам не разраб пивас студии!

Кроме того, можно хорошенько пилить визуализатор под апи стандартной библиотеки ЯП и задокументированных библиотек/фреймворков. Но как только встретит функции, классы... визуализируемого проекта, то сразу наглядность падает, ибо как адаптировать визуализатор под код, который (ещё не написан/проприетарщина/...)???

И вообще: если код - нечитаемое говно (исходя из твоих потребностей), то с чего бы визуализации этого говна быть конфеткой?

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

Ну а питон с джсом - эталон «easy to learn, hard to master» - макаки пишут и счастливы, но профи могут писать такое, что никто не поймёт без хорошей документации от разраба. Типа изобретения нового паттерна под задачу.

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

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

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

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

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

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

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

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

Вот и я после графического Лабвью не захотел страдать, переходя на текстовые языки. Да, особенно тяжело дается понимание чужого кода. Но скептики типа kostyarin_ слишком привыкли писать код в тексте и они даже представить себе не могут как так можно собирать алгоритмы из блоков, оттуда и его пессимизм по повожу Метапрога.

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

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

От размера – потеряется её целостное восприятие

Ты карту хоть раз в руках держал? Викимапией/картами гугла/яндекса пользовался? Размер схемы там огромный, но с целостным восприятием там все ок, каждый там легко находит что надо.

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

Где существует?

Т.е. Вы утверждаете, что приступая к работе не провели исследования в этой области? Ну, ничего, я немного помогу Вашему проекту:

  1. ДРАКОН, «ИС Дракон».
  2. LabVIEW.
  3. UML-плагины к Eclipse.
kostyarin_ ★★
()
Ответ на: комментарий от metaprog

В Лабвью я легко понимаю чужой код (и свой годичной давности)

Это очень просто в текстовых языках. К сожалению Си, как язык, не может быть примером. В этом плане Си – одно из первых убожеств. Но есть и другие языки, в которых это решается достаточно просто. Однако, если речь о большом проекте, то понимать нужно не именно код, а ход мысли автора. Это совсем другое. И решается эта проблема совсем по другому.

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

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

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

Я тебя раньше спрашивал, что было самое большое, что ты делал. И ответ был — «метапрог». Откуда тебе знать проблемы больших программ, если ты никогда не писал большие программы?

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

что это за ужасный ЯП с идиотским, тьфу на него ещё раз, паскальным оператором := и без скобок вокруг заголовка цикла for?

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

UML с каких пор ЯП? я о нём слышал исключительно как о средстве визуализации классов и связей между ними в ООП.

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

Ты карту хоть раз в руках держал?

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

Собственно, чтобы оценить как примерно этот «метапрог» будет выглядеть (гипотетически, конечно же) достаточно взглянуть на любой большой граф. Вот, например, граф импорта для «net/http»

https://godoc.org/net/http?import-graph

Потрудитесь объяснить как в нём ориентироваться, пожалуйста. Приближённое текстовое представление подобного графа выдаёт lsmod, например

uvcvideo               98304  0
videobuf2_vmalloc      20480  1 uvcvideo
videobuf2_memops       20480  1 videobuf2_vmalloc
videobuf2_v4l2         24576  1 uvcvideo
videobuf2_common       49152  2 videobuf2_v4l2,uvcvideo
videodev              200704  3 videobuf2_v4l2,uvcvideo,videobuf2_common
rtsx_usb_ms            24576  0
media                  53248  4 videodev,videobuf2_v4l2,uvcvideo,videobuf2_common

С помощью обычного grep я легко могу выяснить какой модуль загружен и от чего зависит. С помощью той картинки – нет.

Но проблема даже не в этом. А в том, что Вы приступаете к работе (условно, конечно же) не проведя исследований, и не имея концепции, как и представления о конечном продукте.

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

ахренеть, в этой картинке даже гигантские разумные пауки из спиральной галлактики NGC 4414 не смогут разобраться.

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

что это за ужасный ЯП с идиотским, тьфу на него ещё раз, паскальным оператором := и без скобок вокруг заголовка цикла for?

Оператор define, явный или неявный – присутствует во всех продвинутых языках. А скобки не нужны, т.к. не имеют никакого смысла.

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

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

Это не аргумент. Слишком много текста, и? Где аргументирование-то?

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

UML с каких пор ЯП? я о нём слышал исключительно как о средстве визуализации классов и связей между ними в ООП.

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

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

причём тут define? я про ':=' говорю. это как в мерзостном паскале. что это за язык? скажи название. какой то испоганенный C.

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

тогда не знаю, ищи по темам. автор точно уже давал развёрнутый ответ по дракону.

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

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

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

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

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

Откуда тебе знать проблемы больших программ, если ты никогда не писал большие программы?

Хотя бы потому что Метапрог - программа немальенькая.

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

Хотя бы потому что Метапрог - программа немальенькая.

У тебя есть с чем сравнивать?

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

#define в C выглядит по другому. перед тем как использовать свою терминологию может всё же напишешь наконец что это за ЯП, неужели так сложно написать.

iluha16
()

ТС, зацени http://hiasm.com/screens.html

Правда авторы прямо говорят: «Очевидно, что с помощью HiAsm довольно легко и быстро пишутся (точнее рисуются) небольшие разовые программы и утилиты, не требующие особого упора на интерфейс и сложные математические алгоритмы.» А не претендуют на мировое господство.

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

В го оператор := , сахар для var

var x = 3.1415926
эквивалентно x := 3.1415926

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

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

#define в C выглядит по другому. перед тем как использовать свою терминологию может всё же напишешь наконец что это за ЯП, неужели так сложно написать.

Это не моя терминология, а английский.

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

Дракон и всякие там недоплагины не считается - то все жалкие надстройки над текстовым прогарммированием.

Т.е. объективной причины нет. Как следствие того, что сфера не была исследована вовсе.

Из полноценных сред визуального программирования

Определение и свойства полноценной среды, пожалуйста.

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

И расценочки есть.

Это же для онлайн сервиса. А так качай http://hiasm.com/download.html и тестируй. Авторы утверждают, что в wine все должно работать.

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

Я уже писал на него рецензию:

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

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

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