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)
Ответ на: + от anonymous

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

Мой коммент выше:

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

Как всегда антиметапрогеры умеют только нагло врать.

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

Это в рекуирментсты приложения надо просто. Ну или SetCurrentConsoleFontEx..

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

Простой PPM формат же есть кстать.

Deleted
()
Ответ на: + от anonymous

Не говоря уже о том что вышел ПРОТОТИП, а сейчас будет писаться реальный метапрог на прототипе, а это и будет доказательством крутости.

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

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

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

i-rinat ★★★★★
()

Так полгода уже прошло. Полгода срача, Карл!

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

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

Проект схож с УДОБСТВОМ рыхления земли с помощью отбойного молотка.

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

Благодарю за объективный обзор со стороны!

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

вышел ПРОТОТИП

Тут понимаешь какое дело. Мало выпустить ПРОТОТИП. Этот ПРОТОТИП ещё должен и как-то работать. Лучший способ показать, что он работает — сделать на нём что-нибудь сложнее тривиальщины.

Если на секунду предположить, что некто собрался делать задумку ТС’а, вместе с ПРОТОТИПОМ нужно вести проект программы на ПРОТОТИПЕ, чтобы понять, что ПРОТОТИП достаточно функционален для создания программ. Если ПРОТОТИП не включает ресёрч, то можно сразу делать задумку ТС’а на этом ПРОТОТИПЕ. В других случаях нужно сделать тонну программ, от совсем простых до довольно сложных. Взять и повторить ту же захватывалку экрана, например. Сгодятся любые программы, которые разработчик ПРОТОТИПА знает.

А что может этот ПРОТОТИП? Факториал? Всё? То есть, сколько-то там месяцев автор пыжился и родил вычислялку факториала? Факториал на Python за 12 секунд такое пишется (ссылка на видео была в предыдущей теме). И ставить LabVIEW в виртуалку не надо.

i-rinat ★★★★★
()

Да, и еще вопрос. Как вы разбираетесь в том нагенерированном говне?

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

Абсолютно невоспринимаемые человеком переменные символов в 30, состоящие из рандомных символов. Куча временных переменных, которым присваивается некое значение, затем значение этих переменных присваивается другим временным переменным и больше нигде не используется. На этом примере, состоящим из одного цикла и вывода значения на экран, используется штук 50 переменных. Про каст целых к вещественным, затем деления вещественных друг на друга и каст обратно в целое, уже кто-то ранее говорил. Но, видимо, метапрог о целочисленной математике не слышал. Тоже мне, ядерный писатель.

Про то, что отсутствуют проверки на ошибки с io я вобоще молчу. Но в этом примере им просто негде развернуться.

Да, и там были в середине кода несколько необъявленных переменных, которые компилятор схавал лишь из за того, что это c, а не c++.

Каким говнарем надо быть, чтобы отлаживать такой код?

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

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

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

Кстати, как ты вообще смог в первый раз запустить ПК, если чтобы прочитать код линукса надо сначала запустить линукс? Или винду с закрытым кодом, или хотя бы ДОС, но что-нибудь, чтобы прочитать код линукса, запустить таки надо!

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

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

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

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

metaprog
() автор топика
Ответ на: + от anonymous

Народ требует показать хоть чего-нибудь более или менее сложное.

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

P.S. Да, я злодей.

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

Рассуждения типа - «Рассказ плох, но ведь „Война и мир“ тоже не сразу была написана».
Или «Табурет никудышный, но ведь для производства Германской
мебели то же нужно сначала научиться работать рубанком».

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

Ты опять не ответил на вопрос.

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

Сгенерированный код содержит в себе ошибки уже сейчас.

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

Если бы код был вида

int result = 1;
for (int i = 1; i < 5; ++i) {
    result *= i;
}

printf("%d", result)

То в нем бы было проще искать ошибки.

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

Просьба к всем.
Выбрать на gihub какой-нибудь простой проект на C и попросить
metaprog, продемонстрировать как он будет выглядеть в Метапрог.

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

«Ага! Теперь поняли? А я понял через десять дней после операции.»

Все было ясно уже треде на втором-третьем.

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

как ты его анализируешь и испраляешь в нем ошибки

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

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

полагаюсь на то, что транслятор работает правильно

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

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

что тесты - не панацея

Тесты ладно, любопытно посмотреть на аналог code coverage в этом метапроге. Там же понадобятся графы, без них никуда, а это уже матан и абстракции, фу.

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

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

Великолепный план, Уолтер. Просто охеренный, если я правильно понял. Надёжный, как швейцарские часы.

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

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

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

Ты давай, читай мурзилку, не отвлекайся на мелочи.

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

Среди форумчан имеются те, кто использовал LabView.
И ни от одного из них комментариев не было.
Почему?

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

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

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

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

Конечно предложенный способ графического программирования каждым воспринимается по разному.
Интересно было бы услышать доводы «за» ... /«против» уже все «наелись»/.

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

Да что-то не очень успешно. Пока получается кривое тормозное неотлаживанмое поделитесь.

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

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

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

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

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

И вообще. Если тебе оно не надо, то зачем спрашиваешь? А если надо - то берешь поиск в зубы, ищешь сам, читаешь сам, а потом приходишь на форум и задаёшь конкретный вопрос, если что-то не понял.

Надо сказать, что ты - наглядная демонстрация деградации образовательной системы в СНГ. Тебя даже учиться не научили.

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

Опять 25

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

Или занимаешься проверкой, что делает этот транслятор. А в случае, если ты рассчитываешь, что твоя аудитория будет состоять не только из Котечки, вопрос о проверке встанет. Это раз.

Далее, я тебе уже пример с валгриндом приводил 2 или 3 раза, но ты, судя по всему не понял, о чём речь. Или ты рассчитываешь довести свой кодогенератор до того, что в нём не только не будет своих ошибок, но он и за программиста все ошибки исправит? Тогда это уже не замена Си будет, а скорее, аналог сишарпа, и сишарп, внезапно, выдаёт стектрейсы. Это два.

Далее. Пока не будет внятного описания формата твоих файлов (это, напоминаю, не картинка со ссылкой на некую функцию сериализации, которую можно смотреть только метапрогом, это документ, в котором описаны все структуры и порядок их следования), получается, что разбор сгенерированного кода — это ЕДИНСТВЕННЫЙ способ хоть как-то снаружи исследовать, что же делает твоё детище. Недостаточно полный способ, скажем прямо, и необходимости в упомянутом документе он не отменяет. Но хоть какой-то. Это три.

Ну и пока хватит...

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

И после таких ответов ты рассчитываешь на то, что с тобой будут серьёзно общаться о какой-то там разработке?

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

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