LINUX.ORG.RU

Metaprog: выпуск прототипа (универсальная графическая среда программирования)

 , ,


2

3

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

LabVIEW-прототип не является конечной целью. В дальнейшем с помощью прототипа Metaprog будет собран «сам на себе» и не будет зависеть от LabVIEW.

Приглашаю всех желающих стоять у истоков универсальной графической среды программирования присоединиться к работе над прототипом!

Видео-обзор ( VarfolomeyKote4ka)

https://youtu.be/EcQMgUAm0DE

Скачать: https://www86.zippyshare.com/v/pWggQ91b/file.html

Аннотация

Открывать и запускать !метапрог.vi и !метапрог онлайн.vi

В Метапрог онлайн интегрирован чат и хранилище пакетов с блок-диаграммами. Там идет разработка Метапрога и можно получить консультации.

В Метапрог и Метапрог онлайн встроена справочная система и интерактивные инструкции.

Требования:

1. Для запуска, просмотра и редактирования диаграмм - LabVIEW начиная с 2013.

2. Если не удалось достать линуксовую версию LabVIEW - виртуальная машина с Windows начиная с ХР с кириллической локализацией (иначе будут проблемы с кодировкой символов).

3. Tor Browser или Tor для подключения к серверу:

https://www.torproject.org/

или:

sudo apt-get install tor

4. Для компиляции сгенерированного кода:

sudo apt-get install clang libevent-dev libsdl2-dev

Адрес для добровольных пожертвований:

Bitcoin: 1AYoK2TScSpD5bhf67mv9AxHDJ2RidRvjD

Этот адрес действителен как ключ для электронной подписи от имени разработчика.

Код лицензирован под GNU GPL v3, подробности - по кнопке «Про программу» и в файле LICENSE.txt (на английском). Отдельные файлы могут быть лицензированы под MPL и другими лицензиями.

Описание конструктора диаграмм (часть справочной системы, лучше читать смотря на Метапрог)

В случае вопросов или проблем консультации можно получить в чате программы «Метапрог онлайн».

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

Блок-диаграмма состоит из блоков, линий с данными и особых линий - жестких последовательностей. Каждый блок может иметь входы и выходы.

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

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

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

Очередность выполнения также задается жесткими последовательностями. Это - особые линии, которые проводятся по кнопке блоки - последовательность. Первый клик на блоке - начало последовательности, следующие клики - изломы провода (на пустых местах) либо конец последовательности (на блоке). Места начала и конца провода имеют значение при работе с циклами, условными разветвлениями, переключателями.

Чтобы удалить блок на диаграмме, нажми на него правой мыши. Чтобы удалить провод или жесткую последовательность, нажми правой мыши на квадратик на нем.

Чтобы скопировать элемент на диаграмме, нажми на него колесом мыши. Чтобы вставить - жми колесом мыши на пустом месте.

При наведении мышью на элемент диаграммы отображается подробная информация о нем. Элементы подсказок кликабельные. Для дальнейшней справки кликай на "?" в подсказках к элементам.

Описание контейнера с данными и системы типов (часть справочной системы, лучше читать смотря на Метапрог)

В Метапроге есть три вида контейнеров с данными: константа, вход и выход. Константа имеет жестко заданное значение. Вход и выход связывают эту диаграмму с внешними диаграммами.

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

Типы в Метапроге имеют надтип. Может наследоваться интерфейс работы с данными, способ трансляции в Си и цвет (если тип не имеет своего цвета). При работе с диаграммой и ее трансляциями в Си данные разных типов обрабатываются зависимо от корневого типа. Метапрог имеет следующие корневые типы:

Данные - включает в себя числа (знаковые, беззнаковые и бробные разных разрядностей) и логический тип (зеленый). Логический тип совместим со всеми числовыми типами, так как в Си они могут выступать в качестве условия (если ноль - «нет», все другие значения - «да»). Есть типы число (все числа, коричневый), знаковое (голубой), беззнаковое (темно-синий), целое (объединяет знаковое и беззнаковое),дробь (оранжевый).

Неопределенное - аналог типа void в Си. Совместим со всеми типами.

Указатель - содержит адрес данных. Прямо транслируется в указатель на Си. Получается из данных блоком «указатель» (из меню блоков), вытягиваются данные из указателя блоком «вытягивание указателя».

Структура (последовательность и выбор) прямо транслируется в struct или union на Си. Формируется из контейнеров с данными другого типа путем из вытягивания на структуру. Достум к элементам структуры осуществляется через блок «операция над структурой».

Массив - тип, не имеющий прямого аналога в Си. Содержит указатель на первый элемент и длину массива. Доступ к этим переменным осуществляется через блок «операция над структурой». Чтобы задать тип массива, вытащи на него контейнер нужного типа. Массив можно подключить к типованному циклу (блоки - типованный цикл), в котором можно осуществить обработку каждого его элемента.

Структура условного выбора типа не имеет проямого аналога в Си. Состоит из числа-переключателя и структуры выбору (в Си - union) из данных разных типов. Тип данных зависит от значения переключателя. Задается и читается через операцию над структурой. Можно подключить к переключателю (блоки - переключатель), в котором обрабатывать данные зависимо от типа. Для добавления типа вытащи контейнер нужного типа на СУВТ.

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

Функция Си - на уровне Си является указателем на функцию. Над такой константой есть пикторгамма соответствия копии на диске в виде дискетки, как над подфункцией. Ее цвет зависит от соответствия. Кликом по этой пиктограмме можно управлять соответствями. Подобная пиктограмма есть у сложных типов (структур и структур условного выбора типа). В подсказках к константам, содержащим подфункцию, есть 4 цветные цифры. Это суммарное число комментариев определенных видов в поддиаграммах (замечание, известные ошибки, пожелания и «дело сделано»).

------------------------------------------

При клике на пиктограмму перемещения объект можно передвинуть, при этом линии до его терминалов передвинутся за ним (но тут еще возможны баги).

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

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

Предыдущие темы, посвященные разработке Metaprog

Metaprog: универсальная графическая среда программирования [LabVIEW-прототип] часть 9

Там же ссылки на более ранние темы.



Последнее исправление: metaprog (всего исправлений: 1)

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

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

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

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

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

По совершенно понятной и очевидной причине ненужности.

Пока универсальной графической среды программирования не существует - это суждение чисто теоретическое, а не

подтверждается многолетней практикой

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

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

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

суждение чисто теоретическое

Ты бредишь. Тебе уже неоднократно кидали тонны ссылок и на другие среды, и на ресерчи, и на историю вопроса, но ты продолжаешь делать вид, что ничего этого не было.

Очевидно, что у тебя навязчивая идея, и ты будешь игнорировать все факты того, что она бредовая. Лично мне, как я говорил выше, надоело тебя в этом убеждать. Сам поймешь.

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

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

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

Черт, overview просто поражает! И это можно и на десктоп под разные ОС и драйвера, и даже на веб без особых издержек!

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

Можно даже безОСные программы делать. Главное уметь получать инфу с клавомыши, и уметь выводить на дисплей.

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

Тебе уже неоднократно кидали тонны ссылок и на другие среды

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

и на ресерчи

А это уже теория, а не

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

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

Для SDL2 драйвера чел не сделал обработку resizable... Но добавить легко.

nuklear_cross/nkc_frontend/nkc_sdl.h:177

    #if !defined(__EMSCRIPTEN__)
    if( windowMode == NKC_WIN_FULLSCREEN )
        SDL_SetWindowFullscreen(nkcHandle->window, SDL_WINDOW_FULLSCREEN);
    if( windowMode == NKC_WIN_FULLSCREEN_DESKTOP )
        SDL_SetWindowFullscreen(nkcHandle->window, SDL_WINDOW_FULLSCREEN_DESKTOP);
    if( windowMode != NKC_WIN_FIXED ) // Добавляем...
        SDL_SetWindowResizable(nkcHandle->window, SDL_TRUE); 
    #endif

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

Я уже говорил, что графическое программирование общего назначения не нужно.

Нет, ну что толку в 10-й раз говорить энтузиасту «не нужно»? Один раз сказали, второй сказали — уже ясно, что он категорически не согласен, и его эти аргументы только отвлекают от разработки на флуд.

Ну пусть пилит. Флаг в руки, барабан на шею и попутного ветра в горбатую спину, как говорится. Хуже от этого никому, кроме автора, не будет. Пусть пилит, авось выпилит какой-нибудь побочный результат. Жаль только, выбранный набор технологий вызывает большие сомнения в том, что этот побочный результат кому-то пригодится, даже автору. Но это опять-таки его выбор, его пытались переубедить — не переубедили.

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

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

https://pastebin.com/wEp3ATNg

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

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

Наконец-то получилось показать кнопку

Поаккуратнее, тут на ЛОРе и девушки бывают, а ты им такое показываешь.

metaprog_instance_0_6519893366297669633__6645078974114230273__560166436841531393__variable_6659259898421894145 = 1;
metaprog_instance_0_6519893366297669633__6645078974114230273__560166436841531393__variable_5069646338901690369 = 3;
if((((metaprog_instance_0_6519893366297669633__6645078974114230273__560166436841531393_junction_156887648760117249).type)==(metaprog_instance_0_6519893366297669633__6645078974114230273__560166436841531393__variable_6659259898421894145))&&(((metaprog_instance_0_6519893366297669633__6645078974114230273__560166436841531393_junction_156887648760117249).window.param)==(metaprog_instance_0_6519893366297669633__6645078974114230273__560166436841531393__variable_5069646338901690369)))
{
nkc_stop_main_loop(metaprog_instance_0_6519893366297669633__6645078974114230273__560166436841531393_junction_306344176996601857);
}
else{
}
;

А, обычный metaprog-style. :)

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

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

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

Ты бредишь.

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

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

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

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

Блеан, питон прогрессу мешает.

Traceback (most recent call last):
  File "/home/vist/Загрузки/emsdk/fastcomp/emscripten/emcc.py", line 3661, in <module>
    sys.exit(run(sys.argv))
  File "/home/vist/Загрузки/emsdk/fastcomp/emscripten/emcc.py", line 2184, in run
    final = shared.Building.llvm_opt(final, link_opts, DEFAULT_FINAL)
  File "/home/vist/Загрузки/emsdk/fastcomp/emscripten/tools/shared.py", line 2071, in llvm_opt
    cmd = Building.get_command_with_possible_response_file(cmd)
  File "/home/vist/Загрузки/emsdk/fastcomp/emscripten/tools/shared.py", line 2039, in get_command_with_possible_response_file
    if len(' '.join(cmd)) <= 8192:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 13: ordinal not in range(128)
У меня уже начинает сердце биться и руки трястись когда я вижу *.py файлы, ведь если они есть, значит обязательно должен быть стектрейс.

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

Ты мне лучше скажи есть ли в либевенте готовая реализация функции «async_recv»? Чтобы принимало нужное количество байтов, как recv, но без блокирующих сокетов, вешающих всё.

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

Хмм, а мои $15 так и не дошли до кошелька?

Сраная биткоин-биржа, возврат уже поздно делать.

Через какую биржу посоветуешь сделать перевод?

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

Просто так .html файл в браузере не открыть, пишет там чето про запросы. Нужно обязательно что бы на сервере был... php -S localhost:8080 помогает...

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

Давай лучше посмотрю почему у тебя не компилируется. Я уже снес это скриптен... Могу в принципе перекомпилировать, но позже.

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

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

git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install latest
./emsdk activate latest
source ./emsdk_env.sh
./fastcomp/emscripten/emcc -s USE_SDL=2 --use-preload-plugins -s USE_SDL_IMAGE=2 -s WASM=1 main.c

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

Выдаст вроде бы out.html, или чет такое. Потом пишешь в той же папке php -S localhost:8080 открываешь браузер, переходишь на http://localhost:8080/out.html и увидишь свою страницу.

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

Метарпога

Метарпог

Метапрог -> Метарпог -> МетаРПГ... MMORPG?

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

Везде либо начиная с $50 (а я не хочу давать ни доллара больше обещанного), либо нужен паспорт/права. Есть ли (относительно) анонимный обменник, где можно просто перевести $15 в битки на твоем кошельке?

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

Не, есть парочка вроде бы анонимных, но вот один из них списал с карточки $20, а на кошелек не перевел ни сатоши. Вот я и спрашиваю, есть ли те, которым ОП доверяет.

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

Можешь купить битков на $50, залить их себе на кошелек (рекомендую https://electrum.org ), а мне с него скинуть $15. А вообще на https://www.bestchange.ru/ есть обменки, принимающие и по 10 баксов, правда тут смотря с чего ты платишь. Самое главное на том сайте - система репутации, так что обман практически исключен.

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