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

Да просто надеюсь, что спустя 10 тредов и 41 посыл в жопу до него таки дойдёт, куда он вляпался со своими наполеоновскими планами по раскрутке, пытаясь выехать на всём готовеньком от столь ненавистных ему копирастов.

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

есть встроенная справка.

Я надеюсь, эта справка в виде египетских иероглифов? А то стыдно было бы в 2019 использовать буквы - это просто текстовое средневековье.

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

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

У меня ощущение такое, что ты наглухо не понял, о чём человек пишет. Эталонная реализация, тем более на экзотическом языке — никак не замена описанию формата. И тем более его не заменяют никакие «функции сериализации». Это всё равно, что вместо стандарта на XML дать людям парсер XML - читайте, мол. Даже хуже, поскольку парсеры XML обычно написаны на текстовых языках, да и сам XML тоже. И всё это можно прочитать обычным текстовым редактором, в отличие от твоего мёбиусопрога.

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

А при твоём подходе получается, что вот, выпустил ты метапрог. Кто-то им заинтересовался. И ему только для того, чтобы прочесть описание, надо либо запускать непонятный бинарь, либо компилировать этот же бинарь из в хлам обфусцированных сишных исходников.

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

Змей сожрал свой собственный хвост.

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

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

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

Документация нужна для того, чтобы...

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

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

Но это решаемо, если ты метапрог.

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

Такое впечатление, что ТС решает проблему ответа на вопросы к нему просто - не отвечает на них И.

Владимир

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

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

ТС - находка для психиатра.

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

ФАНТАСТ

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

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

Так что нет, он не фантаст.

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

Да на Хабре поучить минус в карму, это всё равно что быть нормальным поцаном. Если бы Метю заплюсовали, то его проще было бы сразу застрелить, чтобы не мучился.

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

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

Ждём историю а-ля болгенос.

anonymous
()

Дорогой metaprog! От всей души поздравляю тебя с первым сентября и желаю тебе хороших оценок, и легкой учебы ◉‿◉

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

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

Да, но твой профессиональный праздник сегодня.

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

Похоже metaprog для разработки использует лишь API LabView, так как среди его исходников нет ни каких сишных файлов.
Так что придется ему крепенько потрудиться, чтобы «отвязаться» от API LabView.

И ведь в результате то, будет вовсе не LabView.

PS: Мне этого не понять.
«Чуден Днепр при тихой погоде».

Владимир

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

Добавочка.

Видимо мы знаем об целях этой разработки лишь то, что «нам положено знать».

Владимир

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

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

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

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

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

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

typedef в лабвьюшном, а не сишном понимании.

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

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

Затем, что корректность имплементации инструмента можно проверить только другим инструментом... И это стало возможным потому, что их синтаксис формально и независимо от реализации описан.

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

Я хотел узнать, есть ли хоть какие-то мысли о том, как ты будешь переписывать всё то, что сейчас за тебя сделали копирасты из NI. И в этом плане открытый, формализованный и доступный для независимой репликации формат хранения — самое важное, что только может быть.

Еще предстоит сделать стандартную библиотеку Метапрога. Пока есть ее зачаток с числами и строками. Еще допилю чуток прототип и будет эталонная реализация сериализатора-десериализатора, чтобы потом из нее уже лепить «настоящий» Метапрог. Тогда же устаканится и формат хранения.

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

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

А код на Си можно смотреть в любом текстовом редакторе.

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

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

Опенсорс всегда можно форкнуть. Кстати, стандартную библиотеку я лицензирую под MPL, но высокоуровневый код именно Метапрога думаю делать уже под GPL. Чтобы форки отдавали код.

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

На некорректные данные транслятор долже выдавать ошибки. В прототипе просто выбрасывает брейкпоинты.

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

Думаю, если надо, можно вырезать из транслятора кодогенерацию и оставить только проверки на ошибки в диаграмме. Или сделать режим «только проверка».

И да, тут я не троллирую

Значит с тобой можно культурно общаться, по крайней мере в этот раз.

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

Тут уже, как говорится, проблема курицы и яйца. Это как с Temple OS, которую обязательно нужно запустить, чтобы отредактировать ее код. Если б там был HolyMetaprog вместо HolyC - я б в нее влюбился:)

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

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

Это список из сишных функций и типов, которые можно использовать в Метапрог-диаграммах. За подробностями о том, как его формировать и как он устроен, заходи и спрашивай в «Метапрог онлайн». Можешь посмотреть "!сі парсер хмл.vi", он формирует и обновляет функции и типы из сишных инклюдов.

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

Такое ощущение, что иногда я могу и росто отвлечься от ЛОРа и ответить позже.

Конечно, но это «позже» уж очень часто «не возникает».
А ведь большинство то вопросов было именно, касающихся разработки ...

Владимир

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

Тут уже, как говорится, проблема курицы и яйца.

В твоём случае это одна из серьёзнейших проблем, мешающих распространению твоих идей. Ты же, наверное хочешь, чтобы у тебя пользователей было больше, чем у TempleOS?

Ты можешь эту проблему решить, сделав целостный документ с 1) описанием языка; 2) описанием внутреннего формата. Никто другой это не сделает так же хорошо, как ты.

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

У меня картинка не открывается. Хотя вчера на мобильнике открывалась, но на мобильнике ничего не разберёшь.

Правда уже не совсем так (кое-что изменилось, новый скрин делать лень - смотри код прототипа)

Нет. Таким макаром ты людей только отпугиваешь.

Я не говорю, что это описание нужно сейчас, но к моменту, когда ты соберёшься выкатывать «метапрог на себе» — оно будет нужно. Иначе отношение к «метапрогу на себе» будет как к такой же проприетарщине, как и лабвью, только неизвестно откуда взявшейся и без гарантий.

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

Или бинарный формат (твой, не лабвьюшный) сохраняется уже сейчас?

P.S. Кстати, если этот документ появится прямо сейчас, то в-первых, отношение на ЛОРе к тебе изменится в лучшую сторону, во-вторых, по документу тебе могут что-то посоветовать, и к выходу первой версии метапрога на себе ты это уже учтёшь, избавив себя от дурной работы в дальнейшем.

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

Но используется то LabView API?

За подробностями о том, как его формировать и как он устроен, заходи и спрашивай в «Метапрог онлайн».

Пока в этом необходимости нет /нужно будет - «не побрезгую»/.

Владимир

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

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

«Научная фантастика» по реалистичности часто-густо ненамного лучше фэнтези. Я попытался посмотреть Вавилон-5, снятый в 90х годах, и жутко удивился как он устарел даже на сегодняшний (!) день. Ни гаджетов, ни нейроинтерфейсов или чего-то еще более продвинутого, космолетами управляют пилоты. А космические бои в Звездных войнах прямо слизаны с воздушных боев Второй мировой войны. В общем, к черту художку, реальная техника интереснее.

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

Разве это не главное, если говорить о поезде?

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

А космические бои в Звездных войнах прямо слизаны с воздушных боев Второй мировой войны.

А им нужно было сделать в Звёздных Войнах многоразовую аэрокосмическую систему?

Владимир.

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

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

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

На ЛОР главное не «лапшу на уши вешать», а говорить как есть.
Тогда посты будут совершенно другого «цвета».

Владимир

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

А космические бои в Звездных войнах прямо слизаны с воздушных боев Второй мировой войны.

А им нужно было сделать в Звёздных Войнах многоразовую аэрокосмическую систему?

Да.

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

Ты же, наверное хочешь, чтобы у тебя пользователей было больше, чем у TempleOS?

Там сетевого функционала нет, а у меня он есть даже в прототипе.

У меня картинка не открывается. Хотя вчера на мобильнике открывалась, но на мобильнике ничего не разберёшь.

Странно, у меня все работает (тор браузер)

Я не говорю, что это описание нужно сейчас, но к моменту, когда ты соберёшься выкатывать «метапрог на себе» — оно будет нужно. Иначе отношение к «метапрогу на себе» будет как к такой же проприетарщине, как и лабвью, только неизвестно откуда взявшейся и без гарантий.

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

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

Рад за вас, что стиль общения у вас стал много «лучше».

PS: «ЛОР вам поможет».

Владимир

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

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

Многие проекты из-за отсутствия manuals - «буксуют».

Владимир

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

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

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

А по интуиции без формального описания у тебя может получиться что-то вроде картин Мориса Эшера — красивое, но совершенно оторванное от реальности. Я и говорю — написание описания тебе сэкономит дурную работу потом, когда твоё детище начнут тыкать другие, и у них концы начнут с концами не сходиться.

Вот моя любимая (и, наверное, самая известная).

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

А файлы, сделанные в лабвьюшном прототипе Метапрога, я перегоню в «настоящий» метапроговский формат специальными функциями-трансляторами.

Описание этого формата будет доступно где-нибудь ещё, в виде документа? Чтобы любому желающему с ним ознакомиться не приходилось ставить лабвью/винду/чёрта лысого.

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

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

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

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

Тогда же устаканится и формат хранения.

Хорошо. Ждём-с.

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

См. два абзаца выше. А код прототипа вообще на практике неюзабелен, поскольку требует лабвью и вообще GUI. Но да ладно, на то он и прототип.

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

Надо. И желательно это бы оформить отдельной утилитой, а ещё желательнее — чтобы сгенерированный код на Си у оной был хотя бы откомментирован.

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

Изометрия творит чудеса.

Владимир

anonymous
()

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

Я инженер из НАСА (Национальное управление по аэронавтике и исследованию космического пространства, надеюсь, что вы в России знаете об этой организации. Если нет, вы можете воспользоваться поиском Google). Недавно мы узнали об инновационной разработке Metaprog. Сотрудники нашего исследовательского центра высоко оценили это программное обеспечение, поэтому мы уже внедряем Metaprog для управления всеми нашими космическими кораблями. Это позволит инженерам упростить работу без знания программирования.

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

Поблагодарить.

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

Очень надеюсь, что разработки НАСА помогут развитию научно-технического прогресса, если конечно метапрог предоставит свои банковские реквизиты на пользу всего человечества.

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

Так что нет, он не фантаст.

Ты прав! Просто это единственное цензурное слово, которое я вспомнил после прочтения сего опуса. Почему-то показался знакомым стиль, вот и посмотрел на авторство.

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

Описание этого формата будет доступно где-нибудь ещё, в виде документа? Чтобы любому желающему с ним ознакомиться не приходилось ставить лабвью/винду/чёрта лысого.

Чтобы посмотреть код Метапрога «сам на себе», нужен будет только Метапрог. Который будет с открытым кодом. Чтобы понять рекурсию, надо сначала понять рекурсию.

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

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

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

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

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

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

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

Чтобы посмотреть код Метапрога «сам на себе», нужен будет только Метапрог.

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

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

Реализация и будет таким описанием.

Тебе уже объясняли, что это разные вещи, но ты всё благополучно пропустил мимо ушей, поздравляю.

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

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

liksys ★★★★
()

metaprog «утек».

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