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)

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

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

Перед открытием кода я могу вкрутить в прототип некое подобие обучалок/справок и сетевой функционал для совместной работы над метапроговскими проектами и даже сделать систему контроля версий. Все будет как по плану с раскруткой, единственное отличие на первых порах - привязка к Лабвью. Нужна будет виртуалка с виндой (начиная с хр) и Лабвью (начиная с 2013, но желательно именно 2013). При желании и то, и другое раздобыть не проблема.

Кто готов поставить виртуалку с виндой и Лабвью ради прототипа метапрога?

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

Вообще в Си принято типы называть через _t. Например

typedef unsigned char uchar_t;
typedef signed char schar_t;

Хотя не всегда и не везде.

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

/* metaprog -> mt */

#define MT_VERSION "1.0"

typedef unsigned char mt_char_t;

void mt_do_somthing (void);

Но это зависит от Вашей реализации, если конфликты не предвидятся, то это не имеет значения.

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

Кто готов поставить виртуалку с виндой и Лабвью ради прототипа метапрога?

Думаю, чтобы никто не пропустил, Вам лучше позвать всех постоянных читателей лично через @metaprog. А то сообщение улетит в глубины треда и все пропустят. А так – придёт уведомление.

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

Я скорее вкручу в определение беззнакового 8-битного «unsigned char» вместо просто «char».

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

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


Каст по популярности во всех тредах, не обессудьте, если не заинтересовал.

@iluha16 @balsoft @rebforce @liksys @hobbit @i-rinat @arturianec100 @vq156 @ossa

Кто готов поставить виртуалку с виндой и Лабвью ради прототипа метапрога?

ref.

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

Спасибо.

Кстати, сам как на вопрос тот ответишь?

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

То есть, как насчет самому поработать над метапрогом? Правда не сегодня, в прототип еще надо кое-что вкрутить для совместной работы.

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

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

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

я щас в отпуске. После отпуска в августе могу, почему нет. Я в принципе такой же херней страдал в универе, как и автор.

Тут гляжу сильно много импрувов в метапроге (нет). Автор почемуто не осилил libevent и взял более комплексный libuv. Чтож, пожелаем ему удачи в очередной раз.

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

а как ты удивишься, когда узнаешь, что char может быть 16 битным...

гуманитарщина

гуманитарщина это не понимать сути инструмента, с которым работаешь.

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

Вообще в Си принято типы называть через _t

Вроде _t в программах и прикладных либах не рекомендуют использовать, _t для внутренних Сишных типа stdint.h

А ещё для своих библиотек придумывают короткое имя и для всего используют его как префикс

Такое дело есть, к примеру https://developer.gnome.org/glib/stable/glib-Basic-Types.html

Наши пээлкашники вообще не долго думали: u8, i8, u16, i16 и т.д.

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

Кто готов поставить виртуалку с виндой и Лабвью ради прототипа метапрога?

Стоит виртуалка с XP32 для fasmа под дос, multisim’a, derive, delphi 7 и прочих приколюх. Думаю, лабвью идеально туда впишется =)

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

Перед открытием кода я могу вкрутить в прототип некое подобие обучалок/справок и сетевой функционал

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

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

То есть, как насчет самому поработать над метапрогом? Правда не сегодня, в прототип еще надо кое-что вкрутить для совместной работы.

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

  1. Для начала нужно решить вопрос обмена кодом. Что-то типа Git или любой другой способ его заменяющий. Т.к. обмен должен быть быстрым простым и эффективным. Ну, насколько это возможно.

  2. Момент с языком. Мову знают не многие. И я боюсь, что это может стать проблемой. Т.к. на изучение суржика нужно от 1 недели до 3 месяцев для среднего лоропеда в зависимости от уровня погружения. Но даже так, скорее всего все участники поголовно будут просить перейти на русский или английский.

  3. Нужно определиться с набором инструментов и библиотек для использования. Я так понимаю, что помимо LabVIEW нужно иметь ещё gcc, а в качестве библиотек выбраны libuv и SDL2. Если язык, Си, то какой. Вроде бы --stdgnu99.

  4. Конечная цель и её этапы. Что уже сделано. И что нужно сделать.

В принципе, все те вопросы, которые сразу же возникнут у каждого причастного.


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

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

Кто готов поставить виртуалку с виндой и Лабвью ради прототипа метапрога?

Ох, лол.

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

ага. Это для POSIX зарезервировано

А я посмотрел на libuv, они там всё uv_xxx_t зовут, т.е. с префиксом uv_.

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

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

Я все же думаю вернуться к либевенту. С libuv тяжеловато. Но лучше уж выкачу прототип с плюшками для совместной работы над проектами, чтобы всякие сишные плюшки прикрутили знающие люди за меня.

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

Текстовые языки программирования и есть гуманитарщина. Даже в Си есть слова, имеющие несколько значений - ужас!

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

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

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

Для начала нужно решить вопрос обмена кодом. Что-то типа Git или любой другой способ его заменяющий. Т.к. обмен должен быть быстрым простым и эффективным. Ну, насколько это возможно.

Уже давно в планах, обязательно вкручу.

Момент с языком. Мову знают не многие. И я боюсь, что это может стать проблемой. Т.к. на изучение суржика нужно от 1 недели до 3 месяцев для среднего лоропеда в зависимости от уровня погружения. Но даже так, скорее всего все участники поголовно будут просить перейти на русский или английский.

Вкручу многоязычные строки там где это возможно (например, система справки), а там где затруднительно (Лабвью не поддерживает многоязычные строки) - будет краткий словарь. Там слов немного, примерно как у Эллочки-Людоедочки.

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

Нужно определиться с набором инструментов и библиотек для использования. Я так понимаю, что помимо LabVIEW нужно иметь ещё gcc, а в качестве библиотек выбраны libuv и SDL2. Если язык, Си, то какой. Вроде бы --stdgnu99.

На стороне линукса для компиляции нужен clang и библиотеки под задачу.

Конечная цель и её этапы. Что уже сделано. И что нужно сделать.

Цель - Метапрог «сам на себе», отвязанный от Лабвью. Сделано - прототип. Допилю его для совместной работы - и начнем.

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

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

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

Я скорее всего буду (в ближайшее время) далеко не самым активным программистом, просто потому что времени мало, но почему бы нет. Только опиши подробнее что за план то, развивать нужно будет labview прототип, или c-metaprog? Это мне не особо ясно.

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

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

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

FILE? bool? etc, etc, etc?

Меня тут поправили, что суффикс _t зарезервирован для POSIX. Вот например, stdint.h.

FILE, bool, unsigned int сами за себя говорят. Коллизий не возникнет.

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

Меня тут поправили, что суффикс _t зарезервирован для POSIX. Вот например, stdint.h.

Ага, я знаю.

FILE, bool, unsigned int сами за себя говорят. Коллизий не возникнет.

О как %)

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

bool

С bool, кстати, в Си очень весело. Это псевдоним для _Bool, а не собственно имя типа. Потому что до C99 можно было создавать свой тип bool, и это было корректно. Поэтому если бы в C99 сделали bool встроенным типом, некоторые корректные программы внезапно оказались поломанными. Причём хитрым, не сразу заметным образом.

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

Раскрутка Метапрога «на самом себе» слишком затянулась

)))

Кто готов поставить виртуалку с виндой и Лабвью ради прототипа метапрога?

Я пожалуй куплю попкорн и подожду чужих отзывов)

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

Я цугундерные термины не разумею. Раскрутка - она и в африке раскрутка, а не то, что наш светоч тут придумал.

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

Я цугундерные термины не разумею. Раскрутка - она и в африке раскрутка, а не то, что наш светоч тут придумал.

Ну так Метапрога в треде два: ТС и ОТ. Так что раскрутку чего или кого, пока вопрос открытый. В принципе один из Метапрогов точно может раскрутить второго на «самом себе».

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

Кто готов поставить виртуалку с виндой и Лабвью ради прототипа метапрога?

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

Максимум, что я могу (и иногда делаю) — потыкать выкладываемые сгенерированные исходники и что-то предложить по улучшению их вида. Но пока единственнное улучшение, которое я увидел — это сокращение портянки предупреждений за счёт отказа от анонимных структур.

Продолжаю считать, что чтобы поддержка метапрог-кода не обернулась впоследствии катастрофой, сгенерированные исходники должны быть читаемы и должны позволять находить однозначное соответствие между кодом и местом на диаграмме, из которого этот код был сгенерирован. В частности, не пихать всё в функцию main(), подумать над осмысленными именами объектов (хотя бы частично) и др. Мой опыт работы программистом говорит мне, что написанное однажды нередко приходится поддерживать потом лет 10, а то и больше, принимая самые неожиданные запросы и багрепорты. А ТС масштабы беды, похоже, ещё не осознал.

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

Я цугундерные термины не разумею. Раскрутка - она и в африке раскрутка, а не то, что наш светоч тут придумал.

Это как раз нормальный термин. Имеется в виду то, что по-английски называется bootstrapping. Вполне нормальный перевод.

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

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

Чел, я знаю, что такое раскрутка компилятора. Я не знаю, что там имели в виду товарищи выше. Недопрог на недопроге затянулся, похоже.

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

Кто готов поставить виртуалку с виндой и Лабвью ради прототипа метапрога?

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

«Всё идёт по плану…» Вообще, это типичное школотронское заявление на форумах игроделов: «есть такая-то идея игры, собираю готовую работать на энтузиазме команду дизайнеров и кодеров, сам ничего не умею, но готов возглавить». Тьфу на вас ещё раз ©. Пожалуй, присоединюсь к @liksys (тем более места на харде нет), лучше вон экспериментальный драмчик допишу. Почему экспериментальный — потому что ничего, кроме одного внешнего сэмпла и Audacity, не используется вообще.

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

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

Угу, и купленные лицензии на всё перечисленное.

В противном случае любой тусующийся на ЛОРе пакостник среднего школьного возраста может написать в NI кляузу, пусть даже с грамматическими ошибками, лоеры и за такую ухватятся. Зачем ему это — вопрос отдельный. Мотивы могут быть разные, начиная от веры в святость интеллектуальной ссобственности и кончая простым желанием подгадить. Главное, что реализация чрезвычайно проста и доступна любому школьнику. Деанонимизировать всё сообщество, начиная с лидера — не проблема, ну а остальное уже дело следствия.

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

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

Дополнение

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

Ну или как вариант — самому запастись максимальной лицензией на Лабвью (интересно, базовая вообще разрешает коллективную разработку?) и от остальных участников проекта требовать показать лицензию :).

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

В любом случае, желание автора все-таки «социализировать» своё творение, пусть и после 8 тредов, уже прогресс.

Я бы предпочёл отговорить автора от разработки в LabVIEW и переписать Метапрог в текстовом вида на Си/GTK/Cairo с поддержкой Unicode и использованием Git. А в качестве встроенного Си для генерации и импорта использовать Tiny C Compiler (libtcc).

Собственно, я предлагаю пока «разрабатывать» Метапрога в этом направлении здесь в треде.

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

Я бы предпочёл отговорить автора от разработки в LabVIEW и переписать Метапрог в текстовом вида на Си/GTK/Cairo с поддержкой Unicode и использованием Git.

Дык я ему предлагал готовый Dia брать. Там всего-то надо:

  • наколхозить набор LabView-подобных фигур и сохранить несколько диаграмм для разбора;
  • в текущем прототипе метапрога сделать писалку и читалку диаграмм формата Dia (мой яндекс мне говорит, что LabVIEW таки умеет в XML);
  • пересохранить этой писалкой графические исходники прототипа в формат Dia;
  • кодогенератор адаптировать к формату Dia на входе и сгенерировать им самого себя уже на Си, чтобы он работал автономно.

При таком подходе единственное, что нуждается в раскрутке (bootstrapping) — это собственно кодогенератор. Не нужно возиться ни с Нуклеаром, ни с GTK. После этого автор полностью слезает с ржавой иглы Лабвью, у него есть опенсорсный диаграммер (Dia) и работоспособный кодогенератор. Всё, в таком виде это можно уже без опаски вываливать в опенсорс. И гит можно использовать обычный, по крайней мере, на первых порах.

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

Но автор предпочитает прыгать по граблям и играть с огнём. С одной стороны грабли Лабвью, с другой — грабли «версионированного бинарного формата». Вместе они дают полный отрыв разработки от реальности.

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

Дык я ему предлагал готовый Dia брать. Там всего-то надо:

Вижу там есть AutoDia и Dia2Code для визуализации кода и генерации кода из диаграмм.

Autodia now parses the following forms of input

  • C++

Dia2Code

  • Generates code for: Ada, C, C++, C#, CORBA IDL, Java, PHP, PHP5, Python, Ruby, shapefile, and SQL.

Т.е. текстовая реализация Метапрога уже почти готова.

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

ну я термин «bootstrapping» узнал очень давно, когда впервые ставил gentoo linux. но то что он на русский язык переводится как «раскрутка» узнал впервые из этой темы.

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

дюже тебя запугали копирасты поганые. ну какая кляуза? где доказательства?

Деанонимизировать всё сообщество, начиная с лидера — не проблема, ну а остальное уже дело следствия.

а мне кажется лидера будет затруднительно деанонимизировать. он же использует bitcoin и наверняка tor.

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

дюже тебя запугали копирасты поганые.

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

где доказательства?

Доказательства чего? Я, если ты заметил, ТСа ни в чём не обвиняю. А вот если будет кляуза — доказательствами будут заниматься уже совсем другие люди.

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