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 ☆
() автор топика
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.