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)

Ответ на: комментарий от kickass

Одни анонимы в треде)

Куй железо пока горячо.

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

Dupa server

for {
    if ml := dupa.messages.length(); ml >= Score50Boundry {
        dupa = dupa.clone(dupa.nextVersion())
    } else if ml < 1000 {
        dupa.ignoreAllMessages() 
    } else { /* 1000 <= ml <= Score50Boundry */
        dupa.demagogic()
    }
}

Dupa client

if ml := dupa.messages.length(); ml >= 1000 {
    user = anonymous.login()
    if user == nil {
        anonymous.leaveThread(dupa)
        return
    }
    user.setFatTrololo(false)
} else { /* ml < 1000 */
    anonymous.trololo()
}
anonymous
()
Ответ на: комментарий от anonymous

Во! На этом же прототип дупачата можно построить. Ну вот анонимус написал прототип дупапрога быстрее, чем дурачек нарисовал свои схемки. Теперь еще свой дупагит, дупафорум и дупатор.

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

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

ω+Θ → Ψω
anonymous
()
Ответ на: комментарий от anonymous

Это публичный ресурс. Пиши свои вирши в ноутпаде в C:\Windows\dupaprog.txt и никому не показывай. И волосы на твоей дупапроге будут мягкие и шелковистые.

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

Кстати да. Чо это мы тут дупообъекты (дупъекты) описываем. Дупа так не работает! Дупу надо рисовать!

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

Вот. Впервые в этих инрнетах. Графичейский язык Дупа!

🍑 💎 🍑 👨‍👨‍👧‍👧 👨‍👦 🍑 
⚡
🏗 🈳 🍑 🖕
🔐 🈳 🍑 🖕
🍑 💥 🌐
📞 👨‍👨‍👧‍👧 🖕
💩 📚
🖖 👆 🍑 👨‍👨‍👧‍👧 🖕
Этот код открывает окно с мессаджем о том, что метапрог 👨‍👨‍👧‍👧 и по кнопке закрывает окно. Еще там есть прототип чятека.

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

А трансляция из с и с++ планируется?

Да (с) Метапрог. Только Си довольно отсталый язык, а Си++ не безопасный. Поэтому трансляция будет производиться из Мета-Си и из Мета-Си++.

anonymous
()

Парадокс! /шутка/
ТС не любит текстовые языки программирования и генерит текст!
Предатель ...

Владимир

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

Еще будет трансляция дупа-метапрог и мета-дупапрог. Транлятор из дупы в мета я уже сделал

✊ 💩 💦 🔛 💩 🖕 ✊ 💩 💦 🖕 metaprog

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

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

Добавочка.

Вообще то тематика графического программирования - СУПЕР!
ИМХНО делать чисто графический язык - БРЕД.
Oberon воплотил некоторые идеи /но лишь мизерную часть/.

Владимир

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

Это хорошо. Трансляция очень нужна. Просто иначе господства то не выйдет.

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

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

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

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

(_*_)

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

Ясно, тогда одна надежда на дупапрог, метапрог не оправдал надежд.

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

Вообще то тематика графического программирования - СУПЕР!

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

К примеру фирма 1С разработала специализированный GUI для работы с объектной мета дата базой.
Это профессиональный подход к разработке системы.
Конечно архитектура 1С это далеко не «панацея» ...

Что касается реализации, то после прочтения
https://habr.com/ru/company/1c/blog/429678/ Как мы перевели 10 миллионов строк кода C++ на стандарт C++14 (а потом и на C++17)
понял, что зря радуются.

Владимир

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

с избранными цитатами

От цитаты про Анну Каренину у меня слёзы из глаз брызнули. Я так давно не смеялся. Спасибо!

i-rinat ★★★★★
()

абажжи абажжи. То есть через 4 месяца разработки все, что у тебя есть это циклы? и, я так понимаю, только с постусловием, да? То есть у тебя нет ни while{}, ни for (хоть в какой-то форме), ни switch. и это я сейчас говорю про сишные конструкции, которые должны быть примитивами на основе которых можно строить твои схемы. Понятно, что если ты строишь что-то выше Си, то у тебя должны уже быть куча вариантов этого самого for на все случаи жизни.

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

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

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

То есть через 4 месяца разработки все, что у тебя есть это циклы?

Зато в эти циклы можно в текстовом редакторе потом вкладывать копипасту из нуклеаровских примеров.

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

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

Причем один вечер у тебя уйдет на парсинг в AST твоего язычка.

Зачем ты пугаешь автора еще одним непонятным термином «AST». 100% гарантия, что он ответит: для мегавыхлопа никакие АСТ не нужны, код генерится прямо из схемы.

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

Если что ТС не считаю глупым /речь шла об разработке/.
Да у каждого из нас имеется своя ОКЛАХОМА /и у меня в т.ч./.

Владимир

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

К примеру.
Года четыре назад разработал вэб интерфейс для 1С 7.7.
Но эта ОКЛАХОМА принесла мне большую пользу ...

Владимир

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

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

Для «разработки вообще» — UML уже давно есть, стандартизирован и применяется. Да, он для проектирования и не делает попыток вытеснить традиционные ЯП. Попытки сразу писать на UML работающий продукт были (та же IBM Rhapsody), но результат так себе, я знаю ровно одного человека, который этим пользуется (не в нашей фирме), и даже он, при всей своей убеждённости признаёт, что есть системные проблемы.

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

Не использовал UML для разработки проектов, а вот несколько video
демонстрирующие процесс разработки смотрел - КОШМАР.

Владимир

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

Назначение Metaprog - генерация сишного кода... разработать его можно было хоть на JavaScript, Python, ... И ничего «зазорного» в этом бы не было.

Ну я разрабатываю его прототип в Лабвью, это мне удобнее.

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

Читай заголовки, комментарии необязательно.

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

Те, после которых ничего не следует

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

int main() {
    if(1) {
        return 0; //После этой ветки только конец программы. 
                  //Она тупиковая?
    }
}

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

Тупиковые ветки в примерах.

fwrite - тупиковый блок по данным. На него поступили данные, он выполнился - и дальше нет зависящих от него блоков:

https://i.postimg.cc/YCywWbSh/fwrite.png

Две тупиковых по данным блока fwrite:

https://postimg.cc/Z0r3BV3g

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

https://postimg.cc/fVwbhBJQ

«Малювання SDL» - тупиковый блок и по данным, и по последовательностям:

https://postimg.cc/3WnJCCmD

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

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

Ну я разрабатываю его прототип в Лабвью, это мне удобнее.

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

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

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

Продолжай заниматься придумыванием своей реальности и падать в свою рекурсивную дупу.

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

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

Ты не проверяешь результат fwrite? o_O

Две тупиковых по данным блока fwrite

Какой из двух fwrite выполнится первым и почему?

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

Ты не проверяешь результат fwrite? o_O

Оптимист какой. Хоть бы ассертами обмазал.

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

Ну так бери и переписывай. rebforce вот уже 2 месяца только и обещает сделать «Антиметапрог»:

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

arturianec100 не только обещает, но еще и делает на С++ и Qt:

https://github.com/arturianec100/skyvis

Это делает специалист, владеющий С++. Не «за неделю», а больше месяца, и то до сих пор нет даже простейшей рисовалки.

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

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

Какой из двух fwrite выполнится первым и почему?

По схеме первым может выполниться любой из них. Но можно задать жесткую последовательность выполнения.

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

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