1. Вы использовали FBP для реального проекта?
Мы разработали и внедрили сервер DF для нашего проекта автоматизации (диспетчер, интерфейс компонентов, набор компонентов, язык DF, компилятор DF, пользовательский интерфейс). Он написан на голом C ++ и работает на нескольких Unix-подобных системах (Linux x86, MIPS, avr32 и т. Д., Mac OSX). В нем отсутствуют некоторые функции, например Сложное управление потоком, сложное управление потоками (для него есть только не слишком продвинутый компонент), так что это всего лишь прототип, даже он работает. Сейчас мы работаем над полнофункциональным сервером. Мы многому научились при реализации и использовании прототипа.
Кроме того, когда-нибудь мы сделаем визуальный редактор.
2. Каково ваше мнение о FBP?
2,1. Прежде всего, программирование потока данных - это высшее удовольствие
Когда я познакомился с программированием потоков данных, я чувствовал себя как 20 лет назад, когда я впервые познакомился с программированием. Хотя DF-программирование отличается от процедурного / ООП-программирования, это всего лишь разновидность программирования. Есть много вещей, чтобы обнаружить, даже так просто! Это очень забавно, когда, будучи опытным программистом, вы столкнулись с проблемой DF, которая является очень-очень простой вещью, но раньше она была для вас совершенно неизвестна. Так что, если вы перейдете в DF-программирование, вы почувствуете себя новичком-программистом, который первым выполнил «цикл» или «условие».
2,2. Может использоваться только для определенных архитектур
Это просто молоток, который предназначен для забивания гвоздей. DF не подходит для интерфейсов пользователя, веб-сервера и т. Д.
2,3. Архитектура потока данных оптимальна для некоторых задач
Каркас потока данных может творить чудеса. Он может паралеллизировать процедуры, которые изначально не предназначены для паралеллизации. Компоненты являются однопоточными, но когда они организованы в граф DF, они становятся многопоточными.
Пример: знаете ли вы, что make является системой DF? Попробуйте make -j (см. Человек, для чего используется -j). Если у вас многоядерный компьютер, скомпилируйте ваш проект с -j и без и сравните время.
2,4. Оптимальное разбиение задачи
Если вы пишете программу, вы часто разделяете проблему на более мелкие подзадачи. Существуют обычные точки разделения для известных подзадач, которые вам не нужно реализовывать, просто используйте существующие решения, такие как SQL для БД или OpenGL для графики / анимации и т. Д.
DF архитектура разбивает вашу проблему очень интересным способом:
- структура потока данных, которая предоставляет архитектуру (просто используйте существующую),
- компоненты: программист создает компоненты; компоненты - это простые, хорошо разделенные блоки - компоненты легко изготовить;
- конфигурация: a.k.a. программирование потока данных: конфигуратор объединяет график потока данных (программу), используя компоненты, предоставляемые программистом.
Если ваш набор компонентов хорошо спроектирован, конфигуратор может создать такую систему, о которой программист даже не мечтал. Конфигуратор может реализовать новые функции , не мешая программисту. Клиенты довольны, потому что у них есть индивидуальное решение. Производитель программного обеспечения также счастлив, потому что ему / ей не нужно обслуживать несколько пользовательских ветвей программного обеспечения, только пользовательские конфигурации.
2,5. Скорость
Если система построена на собственных компонентах, программа DF работает быстро. Единственная потеря времени - отправка сообщений между компонентами по сравнению с простой ООП-программой, она также минимальна.
3. Есть ли у FBP будущее?
Да, конечно.
Основная причина в том, что он может решать огромные проблемы многопроцессорности, не вводя совершенно новые странные программные архитектуры, странные языки. Программирование потоков данных легко, и я имею в виду и программирование компонентов, и построение конфигурации потоков данных. (Даже написание структуры потока данных не является ракетостроением.)
Кроме того, это очень экономично. Если у вас есть хороший набор компонентов, вам нужно только собрать кирпичи lego. Программа DF проста в обслуживании. Для создания конфигурации DF не требуется опытный программист, просто системный интегратор.
Я был бы рад, если бы родные системы распространились, с открытыми дверцами для создания пользовательских компонентов. Также должен существовать стандартный язык DF, что означает, что он может использоваться с независимыми от платформы визуальными редакторами и несколькими серверами DF.