PDA

Просмотр полной версии : Идеальный на мой взгляд, язык блоков диаграмм.



anthrwpos
25.06.2018, 07:02
Лучшая реализация языка диаграмм функциональных блоков, что я видел - это "графы событий" из Unreal Engine.
Unreal Engine - это бесплатный физикографический движок с открытым исходным кодом, предназначенный для создания компьютерных игр.
Не вдаваясь в подробности самого движка, так как тема не о нем, перечислю основные свойства тамошнего ЯДФБ, которые мне особенно понравились.
Во-первых - это явное управление потоком вычислений. Каждый блок кроме блока получения значения переменной или чистой функции имеет особый вход и выход "исполнение". Соединяя блоки через них мы таким образом указываем, в каком именно порядке происходит вычисление. Начинается любое вычисление из блока события, который имеет только выход исполнения.
Это особенно радует, потому что во-первых, все ЯДФБ предназначенные для программирования контроллеров исполняются в порядке одному Богу известному, а во-вторых, каждый раз когда где-то изменяется переменная (введена в поле ввода, изменена каким-то алгоритмом, поступила из СКАДЫ), то программист часто оказывается бессилен как бы то ни было согласовать поступившие из разных мест значения между собой (хотя бы проигнорировать ввод по какой либо причине). В "графах событий" никакое событие не изменяет никаких переменных, а лишь при наступлении вызывает исполнение и может быть, возвращает некие значения, а уже пользователь использует или не использует это событие для изменения переменных.
Существует событие "тик", вызывающее исполнение каждый вычислительный такт, и возвращающее время прошедшее с предыдущего такта.
Поддерживаются циклы (внутри одного вычислительного такта), массивы. Пользователь может создавать свои функции и макросы.
Все используемые переменные обязательно имеют инициализирующее значение. Все случаи глюков в моих проектах в Лоджике связаны с тем, что блоки отрабатывают операции на переменных инициализированных нулем, причем блоки работающие с выходами и переменными связанными с этими-же выходами отрабатывают в разное время, поэтому в работе проекта в Лоджике постоянно возникают неведомые ужасы, вызванные неинициализированными переменными плюс непонятной последовательностью исполнения.
Ну и наконец, о чем мечтают некоторые юзеры - вместо использования языка блоков, пользователь может писать те-же самые скрипты на c++ текстом, так как в данном виде взаимно-однозначное соответствие диаграммы и текстового кода полностью очевидно.
Очень хотелось бы, чтобы программисты, разрабатывающие Лоджик, посмотрели, как это выглядит, а то и в исходники, и вдохновились концепцией, потому что в таком виде на мой взгляд, Лоджик стал бы самым удобным и простым для разработки ЯДФБ.

Внешний вид графа событий
37782

PS заранее извиняюсь за то, что эта тема имеет слишком косвенное отношение к Лоджику.

krollcbas
25.06.2018, 08:25
Самое лучшая ИМХО реализация языков МЭК в программе от Schneider Electric - Unity Pro XL
Позволяет делать на одном экране крайне много элементов, причем хорошая онлайн поддержка.
Изменения кода налету, хорошая визуализация всех значений. Ничего не пропадает и не жалуется на "мало памяти".
При наладке больших объектов очень удобно
37783

melky
25.06.2018, 09:21
не сравнивайте несравнимое. Процессорные мощности у разных железок разные...

rovki
25.06.2018, 10:48
Это как язык Эсперанто ,искусственно ,мертворожденный ;) Языки МЭК появились не с бухты барахты ,а после серьезного анализа дел на рынке,всего предыдущего опыта ,предпочтений пользователей ...Все эти симбиозы ,мутанты не приживуться ,хотя ни кто не отменял развитие ,но нужно соблюдать чистоту линий .Графические языки они заточены под одни задачи и пользователей ,а текстовые для других.Не видел я человека ,который одинаково хорошо пишет кники и рисует картины(хотя художники говорят ,что они пишут картины,а мореходы ходят ,но дело не в глаголе ,а сущности отображения и восприятии мира).

anthrwpos
25.06.2018, 11:29
Самое лучшая ИМХО реализация языков МЭК в программе от Schneider Electric - Unity Pro XL
Позволяет делать на одном экране крайне много элементов
Изменения кода налету, хорошая визуализация всех значений.
37783
А что там с последовательностью выполнения, инициализацией переменных и откликом на события ввода?
Меня лично именно эти три темы волнуют больше всего, так как именно с ними связана вся жесть разработки на языках диаграмм блоков.