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)
Ответ на: комментарий от balsoft

Да хрен с ним даже, с тем zippyshare. Хрен с тем бомжвью и вендорлоком на шиндовс (хотя уже за это автора следовало бы гнать ссаными тряпками с лора). Меня другое в этом всём поражает: если ТС настолько дистинктивно отличает своё поделие от бомжвью и хочет со временем от оного отойти, то:

  • Где описание модели исполнения самой мегапроги?
  • Где формальная грамматика? Да, я понимаю, что в случае с графоном уже не обойтись привычным всем нормальным людям BNF, но по образу и подобию описание можно сваять, что с чем и как соединяется, причём чтобы любую диаграммную простыню по этой формальной грамматике можно было провалидировать.
  • Где формальное описание (верифицируемых!) правил трансляции в Си (или во что он там ещё транслировать собирается), чтобы по ним можно было провалидировать саму мегапрогу?

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

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

РРРЯЯЯ НИНУЖНА!!!111

Это графическое погромирование, все и так очевидно111

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

Где описание модели исполнения самой мегапроги?

ну так линии тянешь, ну...

Где формальная грамматика?

ненужно! матан для орехоголовых! всепроще!

Где формальное описание (верифицируемых!) правил трансляции в Си

Все в графике, скачай посмотри.

чтобы по ним можно было провалидировать саму мегапрогу?

там это ненужно. все сразу изкоропки верифицируется.

очевидноже (с)

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

Где описание модели исполнения... формальная грамматика... формальное описание (верифицируемых!) правил трансляции в Си

В эталонной реализации. Пока на Лабвью.

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

Если да, то я пошел искать BTC-биржу, первый донат в $10 кидать.

Жду.

Что? zippyshare? ЛОЛ, я уж надеялся что файлики будут хотя бы по HTTP в tor hidden service лежать…

А что не так? Сервер для скачки держать можно, но лень. Чем zippyshare так плох?

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

формальная грамматика
В эталонной реализации. Пока на Лабвью.

аааа. Очередное дно нащупано :D

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

А с чего ты взял, что она только про текст?

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

Если отзывы будут хорошими - почитаю.
Ведь критикую не саму идею использования графики для разработки программ.
Повторюсь /sorry/.
Следующее суждение чисто субъективное.
Графические примитивы LabView, ну ни как не пригодны для «графического Си».

Владимир

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

Жду.

В понедельник смогу посмотреть, тогда и скину.

Чем zippyshare так плох?

Тем, что это рассадник вирусни и адвари. Лучше б в IPFS выложить, ну или в DHT Bittorrent

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

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

Владимир

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

Очередное дно нащупано

Переиначивая классику

— Вы нащупали Дно, Корнеев?
Детина мрачно ухмыльнулся.
— Да нет там никакого Дна, – сказал он

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

Может быть не прав, но Метапрог без manuals все равно, что «наскальные рисунки» без объяснений ...

Владимир

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

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

Вот кстати да, ты заботишься о коллегах, ТС?!

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

Реализация — это не описание грамматики, формальных правил и тем более модели исполнения.

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

Существуют ли адекватные люди, запустившие это?

Ну я запускал. Там сложностей то и нет.

Если да, то оно работает?

Работает, я даже клонировал себе метапрог-репозитории и смотрел всякие программки. Обучалку проходил... Сырая, но картина уже вырисовывается!

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

А теперь тож самое для gcc давай сюда.

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

Читая со смартфона уже обрадовался, что хоть кто-то сделал это, а потом увидел ник..

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

Для детей природы поясняю более доходчиво, с примерами.

Пример номер раз. Вот есть такой язык описания формата данных, как XML. У него есть 1) грамматические правила, по которым можно проверить правильность синтаксиса, и 2) стандартизированный формат описания XML-схем, по которым можно проверить правильность содержимого документов.

То есть я, имея эти две вещи (грамматику и схему валидации контента) и даже не имея эталонной реализации под рукой, смогу воссоздать валидатор XML с нуля для любой разновидности этих самых документов. И мне не придётся для этого смотреть в код любого существующего XML-парсера.

Пример номер два. Есть такой язык описания графов для движка Graphviz, DOT называется. У него тоже есть полное описание грамматики в BNF (в начале этой страницы) и правила задания идентификаторов. Имея эту информацию, я, ни разу в глаза не видев код эталонной реализации Graphviz, уже смогу создать независимый валидатор DOT-файлов.

А теперь пример номер три — твои метапрог-диаграммы. Надеюсь, у них тоже будет свой собственный формат хранения. Как, не имея на руках формальных правил, не привязанных к конкретной реализации, можно будет независимо отвалидировать твои схемы, не прибегая к запуску твоего же рантайма? И как в итоге можно будет независимо верифицировать корректность твоих трансформаций? И что самое главное — как и то, и другое можно будет автоматизировать, в том числе и на энвах вообще без GUI в рамках какого-нибудь сборочного пайплайна? Я уж молчу о том, чтобы юнит-тесты не падали, просто хотя бы чтобы корректность построения диаграмм была гарантирована независимым от реализации инструментом.

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

Люто и беспощадно. Сильно не хватает голоса Дроздова за кадром.

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

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

Сильно не хватает голоса Дроздова

Голос Дроздова многое тут сделает веселее.

Там нейронки ещё не научили голосами конкретных людей текст с выражением читать?

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

нейронки

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

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

Очередное дно нащупано

пробитойдено же

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

юнит-тесты не падали

Падать юнит-тесты не будут — я серьёзно это заявляю.

P.S. Просто никаких юнит-тестов «ненужна» (с), они для текстового программирования. Вот графическое программирование настолько совершенно, что там «ненужны» (с) ни юнит-тесты, ни формальные грамматики, ни описания универсальных версионных форматов — все же и так очевидно.

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

metaprog.
Лучше если бы вы прислушивались к критике.
Если Метапрог-ом будете пользоваться только вы сами, то всякая критика «отменяется».
В противном случае услышьте «глас народа».
Если вы будете игнорировать его, то добьетесь только отрицательных отзывов об проекте.

Владимир

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

вот приходится «защищать» ТС от ваших «нападок» — комментарий тот, конечно, в его стиле, но metaprog из-под анонимуса же не пишет (гадости не в счёт)

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

Гм /я тоже из народа/.

PS: «Вышли мы все из народа, дети семьи трудовой ...».

Владимир

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

1) грамматические правила, по которым можно проверить правильность синтаксиса, и 2) стандартизированный формат описания XML-схем, по которым можно проверить правильность содержимого документов.

Формат метапрог-диаграмм в лабвьюшном прототипе выглядит так:

https://postimg.cc/8JXwp6GC

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

http://zone.ni.com/reference/en-XX/help/371361R-01/glang/flatten_to_string/

http://zone.ni.com/reference/en-XX/help/371361R-01/glang/unflatten_from_string/

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

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

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

Есть такой язык описания графов для движка Graphviz, DOT называется. У него тоже есть полное описание грамматики в BNF (в начале этой страницы) и правила задания идентификаторов. Имея эту информацию, я, ни разу в глаза не видев код эталонной реализации Graphviz, уже смогу создать независимый валидатор DOT-файлов.

твои метапрог-диаграммы. Надеюсь, у них тоже будет свой собственный формат хранения

Опять же, в Лабвью есть и в Метапроге будет стандартная функция десериализации данных из строки/файла по определению типа. При обшибке десериализации выбрасывает ошибку. Вот тебе и весь валидатор.

Как, не имея на руках формальных правил, не привязанных к конкретной реализации, можно будет независимо отвалидировать твои схемы, не прибегая к запуску твоего же рантайма? И как в итоге можно будет независимо верифицировать корректность твоих трансформаций?

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

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

И как в итоге можно будет независимо верифицировать корректность твоих трансформаций?

GCC и Clang написаны на Си и С++. Как ты их отвалидируешь генерируемый ими машинный код, не смотря в их код? Никак. Хотя на начальных этапах это можно было на ассемблере (или на чем были написаны первые компиляторы Си). Так же как сейчас код прототипа Метапрога можно смотреть в Лабвью, но после раскрутки - только на самом Метапроге.

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

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

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

Я пока в нейронках не шарю, и без того работы по Метапрогу хватает.

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

Это доброжелательная критика /личностных нападок в ней нет/.
Критика ведь не является ругательством?

Владимир

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

Шутка.

ЛОР - не ясли и детский сад, а «школа для взросления».

Владимир

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

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

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

metaprog-у.

Ваша реализация /с ваших слов/ является прототипом Метапрог.

Вопросы и пожелания:
- какие *.vi за что отвечают и как они взаимосвязаны? - объяснить «уровень» поддержки Метапрог-ос Си; - как в Метапрог можно использовать сторонний API /библиотеки/, структуры, ... /и в том же духе/; - ...

Или пользователь вашего языка должен «на ощупь» все «познавать»?

Владимир

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

Или пользователь вашего языка должен «на ощупь» все «познавать»?

Или пользователь вашего языка программирования должен «на ощупь» все «познавать»?

Владимир

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

hobbit, balsoft — этот пост metaprog-а в ваши «сокровищницы»...

У меня сложилось впечатление, что metaprog-ов как минимум двое

  • один фанатик графического программирования, пилит прототип и т.д.
  • Второй от его имени (может тот 1-й реально не может буквы-тексты) общается на форуме. И этот второй срытый противник этого самого графического программирования (или просто завидует творящему гению) делает всё чтобы, метапрог не взлетел и сама идея была опорочена.

P.S. Котечка отдельный персонаж.

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

... должен «на ощупь» все «познавать»?

... должен «методом тыка» все «познавать»?

Владимир

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

- какие *.vi за что отвечают и как они взаимосвязаны?

Открой "!метапрог.vi" и "!метапрог онлайн.vi", они коренные. Открой блок-диаграмму (Window - Show Block Diagram). Все остальные - их подфункции, сидящие в диагарммах.

объяснить «уровень» поддержки Метапрог-ос Си

Ты имеешь в виду транслятор? Функция «сі текст блок-діаграма в код.vi». Вызывается по кнопке «конверсия» в Метапроге.

как в Метапрог можно использовать сторонний API /библиотеки/, структуры, ...

Это длается через меню «кастхмл» в Метапроге.

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

Это длается через меню «кастхмл» в Метапроге.

Т.е. поддержаны все возможности передачи параметров:
- по значению;
- ссылка;
- можно ли передавать ссылки на структуры, массивы, ...

Ваш «кастхмл» умеет на лету распарсить передаваемые структуры, ...?
Желательно предоставить более детальное описание функционала «кастхмл».

Ну вот к примеру скажу - «жабы квакают»?
О чем это суждение?
По разному его можно понять ...

Владимир

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

Вот скажем, а-ля Labview GUI вы уже разработали /это хорошо/.
Но вот насколько ваш прототип Метапрог использует API LabView?

Владимир

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

Как реализован «кастхмл»?

К примеру в моем API для объектной метадата базы имеется
возможность создание метаданных /к примеру/ на основе текстового
представления структуры или структур.
Для этого случая используется парсер на flex /в структуре можно указать и имена объектов уже, имеющихся в метадата базе/.
У вас как?

Владимир

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

Формат метапрог-диаграмм в лабвьюшном прототипе выглядит так

Это в лабвьюшном прототипе. Ты или не понял, что я спрашивал, или сознательно проигнорировал.

Эти определения типов (черный треугольник в верхнем левом углу) можно сохранять в файлы, передавать по сети, сериализировать-десериализировать из строки с помощью стандартных функций: (ссылки на NI)

То есть своего формата хранения у тебя нет вообще? Как ты тогда собираешься от NI отвязываться, если уже сейчас завязываешься на их сериализаторы проприетарные?

именно это я имел в виду когда речь шла о typredef, пишущемся в файл или являющемся частью сетевого протокола.

Одно но — typedef тут ни при чём.

Опять же, в Лабвью есть и в Метапроге будет стандартная функция десериализации данных из строки/файла по определению типа. При обшибке десериализации выбрасывает ошибку. Вот тебе и весь валидатор.

То есть можно будет соединить абсолютно любую дичь с любой, главное, чтобы типы на терминалах совпадали? Очешуеть валидация.

Зачем тебе воссоздавать парсер метапрог-диаграмм, не смотря в код Метапрога?

Затем, что корректность имплементации инструмента можно проверить только другим инструментом. Если такая возможность не предусмотрена, ты ничем не лучше тех копирастов из NI, от которых ты на словах пытаешься отдалиться. Для любых языков программирования (по крайней мере, открытых) существуют сторонние линтеры, валидаторы, статические анализаторы и прочий вспомогательный инструментарий. И это стало возможным потому, что их синтаксис формально и независимо от реализации описан.

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

Для этого надо как минимум ставить лабвью и разбираться в нём. Ты же вроде как пилишь свой продукт, который в перспективе будет от него отвязан и планируется куда проще для использования. О том, что сейчас, и речи быть не может, поскольку сейчас это дичь по определению — как ты себе представляешь автоматизированное тестирование .vi-диаграмм в контейнере на клауде? А меня не .vi интересует, а .mtprg. Я хотел узнать, есть ли хоть какие-то мысли о том, как ты будешь переписывать всё то, что сейчас за тебя сделали копирасты из NI. И в этом плане открытый, формализованный и доступный для независимой репликации формат хранения — самое важное, что только может быть.

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

Ещё раз: я не о документации как таковой, а о формальных правилах, которые можно загнать в автоматизированный инструмент и проверять исходники без участия человека вообще, равно как и без запуска каких-либо гуёв. Нам же, чтобы отлинтить исходники, допустим, под андроид, не нужно запускать Android Studio, достаточно ./gradlew соответствующую команду скормить, что при автоматизации куда удобнее.

GCC и Clang написаны на Си и С++. Как ты их отвалидируешь генерируемый ими машинный код, не смотря в их код? Никак.

Во-первых, у всех поддерживаемых ими стандартов C/C++ есть BNF, благодаря которому стали возможны сторонние линтеры C/C++ и всё, о чём я писал выше. Во-вторых, у GCC есть вполне открытое описание AST, а выхлоп Clang вообще можно на уровне LLVM проверять, и сторонние инструменты для всего этого дела тоже имеются.

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

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

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

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

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

То есть до трансляции ошибка в файле диаграммы отловлена быть не может by design? Даже у GCC/Clang есть флаги валидации синтаксиса без трансляции файла, но понятное дело, куда правильнее это делать отдельными инструментами. Что в твоём случае невозможно в принципе.

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

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