В последние годы все чаще и чаще встречаются визуальные среды разработки, которые предназначены для обеспечения программирования сложных процессов. Впрочем, их не так много, но общую тенденцию проследить можно. Конечно, наибольшей автоматизации подверглась сфера средств веб-разработки. Появилось много визуальных конструкторов.
Помимо этого значимое развитие сейчас происходит в системах проектирования и визуализации инженерно-технических решений. А многие новые пакеты 3D-моделирования уже являются и средами разработки для компьютерных игр. В общем, ситуация не стоит на месте и сегодня мы рассмотрим одного из малоизвестных и мощных представителей молодого поколения разработок — визуальный конструктор Flowstone от фирмы DSP Robotics.
Интересен он прежде всего тем, что разработчик не только продает свое ПО, но и специализируется на выпуске электронных компонент (датчиков, интерфейсов и т.п.). Другими словами, мы имеем довольно редкое сочетание разработчик/производитель, причем Flowstone является не(!) узкоспециализированной средой для общего применения. Собранные конструкции можно экспортировать в exe-файлы и применять в любых системах, где установлена ОС 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 сильно напоминает модульные конструкторы для звука, которые в небольшом количестве присутствовали на рынке в начале 00-х. В их рамках из определенного набора компонент можно было на визуальном уровне собирать звуковые плагины и музыкальные инструменты. Между тем, такие решения не очень прижились за исключением ныне популярной программы Native Instruments Reaktor, а также конструктора синтезаторов SynthMaker.
Разрабочики из DSP Robotics решили пойти дальше, то есть, во-первых, не зацикливаться только на звуке, во-вторых, создать более универсальную визуализированную модель. Например, в тех же звуковых конструкторах вы не встретите таких компонент как визуализаторов FFT (FFT — быстрое преобразование Фурье) и тому подобного. Здесь же вы можете собрать готовую программу с хорошим GUI особенно не затрудняясь.
Также можно провести некую параллель с Matlab, но в Flowstone мы имеем более узкоспециализированную среду, к тому же от пользователей требуются только базовые знания.
Как в ней работать?
По терминологии программы имеются два ключевых понятия — Компоненты и Коннекторы. Компоненты — это рабочие блоки из которых вы формируете схему, а Коннекторами для простоты объяснения называются входы и выходы Компонент. Далее уже все зависит от ваших знаний. Графический интерфейс разделяется на несколько ключевых групп, среди которых: - Главное меню.
- Панель инструментов (Компонент).
- Рабочая область.
- Окно навигации по рабочим областям.
Видео-плеер/рекордер, созданный в Flowstone
Компонент очень много, и все они довольно удобно распределены по подгруппам, которые имеет смысл указать, для того, чтобы вы более полно смогли представить себе картину. - External — внешние устройства и порты, например, Audio In/Out, COM-порт и так далее.
- Element — стандартные событийные элементы типа After Load, After Duplicate.
- Maths — все математические операции, включая округление до целых чисел, работа с массивами и т.п. здесь представлена в виде готовых модулей, у которых есть входы, куда поступают исходные данные и выходы, посредством которых передаются результаты.
- String — операции со строковыми типами данных в виде отдельных модулей.
- Flow — дополнительные промежуточные элементы для работы с данными.
- DSP — готовые модули цифрового сигнального процессинга, здесь вы можете найти генераторы, фильтры, модуляторы и т.п.
- Audio — специализированные аудио-компоненты, а именно, ADSR-огибающие, обработка MIDI-сообщений, матрицы подключений.
- Imagery — загрузка изображений, видео.
- GUI — кнопки, индикаторы и другие интерфейсные элементы.
- System — основные блоки настройки для экспортированной exe-программы. Здесь можно сформировать главное меню и так далее.
- Other — остальные, не вошедшие ни в одну из названных групп.
Стоит сказать, что перед тем как приступить к работе с программой нужно разобраться не столько в самих Компонентах, сколько в Коннекторах. Дело в том, что все входы и выходы помечаются специальными символами. Например, «I» указывает на то, что данный вход или выход подразумевает использование целых значений (т.е. integer) и так далее. Естественно, начальные знания в области программирования у пользователя должны быть, иначе он просто не сможет работать. И как он это сделает, если не понимает, что такое массивы и переменные? Помимо этого тот же самый пользователь должен обладать знаниями в области цифрового сигнального процессинга, чтобы понимать, что, куда и зачем идет.
Пример FM-модулятора в Flowstone
Нужно сказать, что компания DSP Robotics занимается не только разработкой среды Flowstone, но и продает всевозмолжные сенсоры, датчики, электронные модули и аппаратные интерфейсы. То есть, сама среда разработки родилась не на пустом месте. И сами блоки (Компоненты) разделены качественно, то есть применимы для различных областей.
Скорость освоения
Если вы обладаете заниями начального уровня в области программирования и DSP-процессинга, то освоение не будет долгим. Первые дни идет привыкание к интерфейсу, изучению Компонент и вариантов Коннекторов. Стоит отметить, что у среды имеется разносторонний Help, правда с одним недостатком — приведено мало приммеров использования того или иного Компонента. Вместе с тем на сайте разработчика имеется множество собранных схем, сохраненных в формате *.fsm (внутренний формат файлов). Поэтому, перед тем как приняться создавать что-либо свое, рекомендуется изучить то, что есть. В примерах как от самих разработчиков, так и от сторонних пользователей вы сможете ощутить всю мощь среды Flowstone. Потому как там есть видео плееры/рекордеры, мр3-пллеры, полноценные реализации интернет-радио, эквалайзеры и т.п. Здесь же вы освоите привязку внутренней схемы к графическому интерфейсу самого модуля, потому как описывать все словами в данном случае не совсем целесообразно по сравнению с тем, что может дать практическое освоение.
Результаты
Что касается результатов, то тут мы больше оцениваем скорость работы кода самих Компонентов. Стоит отметить, что явных проблем не отмечено, равно как и конфликтов приложений, созданных в Flowstone с другими подобными. Например, в ряде конструкторов случаются подобные ошибки.
Есть ли стандартное программирование или можно использовать только блоки?
В рамках среды Flowstone предусмотрено и обычное программирование, для чего используются специальный Компонент Кода (Code Component), который находится в закладке DSP. В его рамках вы можете пользоваться скриптовым С++-подобным языком. Код может выглядеть так:
streamin in; streamout out; float gain; gain = 2.0; out = in*gain;
Согласно этому коду, после его введения в Code Component у вас автоматически (!) появляются один in и один out, а сам модуль выдает результат после вычислений по единственной формуле. Параметр/переменную gain можно поместить и в качестве входных данных, подключив его, например, к ручке управления уровнем сигнала.
Пример использования Code Component. В результате ввода наших строк на самом модуле появились новые входы и выходы
В общем скриптовое программирование не сложное. При этом мы неспроста говорим о скриптах, а не о полноценном языке, поскольку в Flowstone все очень урезано. В рамках программирования подразумеваются только вычисления, при этом вы не можете явно создавать собственные функции. Это возможно только в случае, если саму функцию вы реализуете в виде отдельного Code Component. Даже в примере с нашим кодом мы создали отдельную функцию (умножение входного сигнала на занчение gain). А в дальнейшем все собирается по блокам. Можно сказать, визуализированное ООП и процедурное программирование одновременно. Наверное, фраза об отсутствии возможности создания в рамках скрипта пользовательских функций многих нексолько поставила в тупик. Но стоит отметить, что базовые математические функции, то есть сам математический аппарат в скрипте присутствует, там есть синусы, косинусы и тому подобное.
Подытожим
Flowstone — это молодое начинание, которое позволяет качественно визуализировать сам процесс программирования. Вполне возможно, что такая схема работы для высокоуровневых языков может прижиться: функции — это отдельные блоки, собранные по схемам модули — отдельные классы. На программирование уходит мало времени, при этом пользователь не зацикливается на мелких деталях и видит всю картину целиком, что немаловажно. Нужно сказать, что такое видение процесса является конкурентоспособным по сранению со стандартными IDE, в которых создание приложений подразумевает два направление работы — формирование GUI и непосредственно написание внутреннего кода. В варианте Flowstone вместо второго предлагается создание внутренних схем взаимодействий. Думается, что данное направление будет активно развиваться и дальше.
Кристофер
|