Визуальная среда разработки Flowstone

В последние годы все чаще и чаще встречаются визуальные среды разработки, которые предназначены для обеспечения программирования сложных процессов. Впрочем, их не так много, но общую тенденцию проследить можно. Конечно, наибольшей автоматизации подверглась сфера средств веб- разработки. Появилось много визуальных конструкторов. Помимо этого значимое развитие сейчас происходит в системах проектирования и визуализации инженерно-технических решений. А многие новые пакеты 3D-моделирования уже являются и средами разработки для компьютерных игр. В общем, ситуация не стоит на месте, и сегодня мы рассмотрим одного из малоизвестных и мощных представителей молодого поколения разработок — визуальный конструктор Flowstone от фирмы DSP Robotics (www.dsprobotics.com). Интересен он прежде всего тем, что разработчик не только продает свое ПО, но и специализируется на выпуске электронных компонент (датчиков, интерфейсов и т.п.). Другими словами, мы имеем довольно редкое сочетание разработчик/производитель, причем Flowstone является не(!) узкоспециализированной средой для общего применения. Собранные конструкции можно экспортировать в exe-файлы и применять в любых системах, где установлена ОС Windows.

Flowstone хорошо подходит для создания DSP-приложений под Windows

DSP Robotics Flowstone

Требования к установке: Pentium III/AMD и выше (должна иметься поддержка SSE), 512 Mб RAM, Windows 7/Vista/XP/2000.

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

Перво-наперво нужно выделить ее предназначение — работа с цифровым сигнальным процессингом (DSP — Digital Signal Processing).

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

В общем, везде, где требуется программирование DSP. Основной базис программы — это, конечно же, звук, хотя уже на данный момент среда развилась до уровня более широкого применения и предусматривает, например, варианты управления роботами и устройствами. Другими словами, сейчас вы можете создавать программные структуры, ограниченные не только входами и выходами звукового интерфейса, но и USB, и ИК, и COM.

В рамках реализации мы имеем три варианта поставки Flowstone — бесплатная версия (хороша для ознакомления и обучения, но есть ограничения по количеству поддерживаемых внешних устройств и отсутствует экспорт в *.exe-файл), средняя по возможностям Enterprise ($295) и профессиональная Professional ($745) версии. Последние довольно дороги.

Использование Flowstone для управления роботами

Что интересно, Flowstone сильно напоминает модульные конструкторы для звука, которые в небольшом количестве присутствовали на рынке в начале 00- х. В их рамках из определенного набора компонент можно было на визуальном уровне собирать звуковые плагины и музыкальные инструменты. Между тем, такие решения не очень прижились, за исключением ныне популярной программы Native Instruments Reaktor, а также конструктора синтезаторов SynthMaker.

Разработчики из DSP Robotics решили пойти дальше, то есть, во-первых, не зацикливаться только на звуке, во-вторых, создать более универсальную визуализированную модель. Например, в тех же звуковых конструкторах вы не встретите таких компонент, как визуализаторы FFT (FFT — быстрое преобразование Фурье) и тому подобное. Здесь же вы можете собрать готовую программу с хорошим GUI, особенно не затрудняясь.

Также можно провести некую параллель с Matlab, но в Flowstone мы имеем более узкоспециализированную среду, к тому же от пользователей требуются только базовые знания.

Как в ней работать?

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

Графический интерфейс разделяется на несколько ключевых групп, среди которых:
. Главное меню.
. Панель инструментов (Компонент).
. Рабочая область.
. Окно навигации по рабочим областям.

Компонент очень много, и все они довольно удобно распределены по подгруппам, которые имеет смысл указать, для того чтобы вы более полно смогли представить себе картину.
. External — внешние устройства и порты, например, Audio In/Out, COM-порт и так далее.
. Element — стандартные событийные элементы типа After Load, After Duplicate.
. Maths — все математические операции, включая округление до целых чисел, работа с массивами и т.п., здесь представлена в виде готовых модулей, у которых есть входы, куда поступают исходные данные, и выходы, посредством которых передаются результаты.
. String — операции со строковыми типами данных в виде отдельных модулей.
. Flow — дополнительные промежуточные элементы для работы с данными.
. DSP — готовые модули цифрового сигнального процессинга, здесь вы можете найти генераторы, фильтры, модуляторы и т.п.
. Audio — специализированные аудиокомпоненты, а именно, ADSR-огибающие, обработка MIDI-сообщений, матрицы подключений.
. Imagery — загрузка изображений, видео.
. GUI — кнопки, индикаторы и другие интерфейсные элементы.
. System — основные блоки настройки для экспортированной exe-программы. Здесь можно сформировать главное меню и так далее.
. Other — остальные, не вошедшие ни в одну из названных групп.

Видеоплеер/рекордер, созданный в Flowstone

Стоит сказать, что перед тем как приступить к работе с программой, нужно разобраться не столько в самих Компонентах, сколько в Коннекторах. Дело в том, что все входы и выходы помечаются специальными символами. Например, «I» указывает на то, что данный вход или выход подразумевает использование целых значений (т.е. integer) и так далее. Естественно, начальные знания в области программирования у пользователя должны быть, иначе он просто не сможет работать. И как он это сделает, если не понимает, что такое массивы и переменные? Помимо этого тот же самый пользователь должен обладать знаниями в области цифрового сигнального процессинга, чтобы понимать, что, куда и зачем идет.

Нужно сказать, что компания DSP Robotics занимается не только разработкой среды Flowstone, но и продает всевозможные сенсоры, датчики, электронные модули и аппаратные интерфейсы. То есть сама среда разработки родилась не на пустом месте. И сами блоки (Компоненты) разделены качественно, то есть применимы для различных областей.

Скорость освоения

Если вы обладаете знаниями начального уровня в области программирования и DSP-процессинга, то освоение не будет долгим. Первые дни идет привыкание к интерфейсу, изучению Компонент и вариантов Коннекторов. Стоит отметить, что у среды имеется разносторонний Help, правда, с одним недостатком — приведено мало примеров использования того или иного Компонента. Вместе с тем на сайте разработчика имеется множество собранных схем, сохраненных в формате *.fsm (внутренний формат файлов). Поэтому перед тем как приняться создавать что-либо свое, рекомендуется изучить то, что есть. В примерах как от самих разработчиков, так и от сторонних пользователей вы сможете ощутить всю мощь среды Flowstone. Потому как там есть видеоплееры/рекордеры, мр3-пллеры, полноценные реализации интернет-радио, эквалайзеры и т.п.

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

Пример использования Code Component. В результате ввода наших строк на самом модуле появились новые входы и выходы

Результаты

Что касается результатов, то тут мы больше оцениваем скорость работы кода самих Компонентов. Стоит отметить, что явных проблем не отмечено, равно как и конфликтов приложений, созданных в Flowstone с другими подобными. Например, в ряде конструкторов случаются подобные ошибки.
Есть ли стандартное программирование или можно использовать только блоки?

В рамках среды Flowstone предусмотрено и обычное программирование, для чего используется специальный Компонент Кода (Code Component), который находится в закладке DSP. В его рамках вы можете пользоваться скриптовым С++-подобным языком. Код может выглядеть так:

streamin in;
streamout out;
float gain;
gain = 2.0;
out = in*gain;

Согласно этому коду, после его введения в Code Component у вас автоматически (!) появляются один in и один out, а сам модуль выдает результат после вычислений по единственной формуле. Параметр/переменную gain можно поместить и в качестве входных данных, подключив его, например, к ручке управления уровнем сигнала.

В общем, скриптовое программирование несложное. При этом мы неспроста говорим о скриптах, а не о полноценном языке, поскольку в Flowstone все очень урезано. В рамках программирования подразумеваются только вычисления, при этом вы не можете явно создавать собственные функции. Это возможно только в случае, если саму функцию вы реализуете в виде отдельного Code Component. Даже в примере с нашим кодом мы создали отдельную функцию (умножение входного сигнала на значение gain). А в дальнейшем все собирается по блокам. Можно сказать, визуализированное ООП и процедурное программирование одновременно.

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

Пример FM-модулятора в Flowstone

Подытожим

Flowstone — это молодое начинание, которое позволяет качественно визуализировать сам процесс программирования. Вполне возможно, что такая схема работы для высокоуровневых языков может прижиться: функции — это отдельные блоки, собранные по схемам модули — отдельные классы. На программирование уходит мало времени, при этом пользователь не зацикливается на мелких деталях и видит всю картину целиком, что немаловажно. Нужно сказать, что такое видение процесса является конкурентоспособным по сравнению со стандартными IDE, в которых создание приложений подразумевает два направление работы — формирование GUI и непосредственно написание внутреннего кода. В варианте Flowstone вместо второго предлагается создание внутренних схем взаимодействий. Думается, что данное направление будет активно развиваться и дальше.

Кристофер


Компьютерная газета. Статья была опубликована в номере 41 за 2010 год в рубрике soft

©1997-2024 Компьютерная газета