Николай Варанкин - Программы - Мыслитель™
 Кратко   Программы   Контакты   Обо мне   Новости   LinkedIn™   Quora™ 

📚 Модуль и фрагмент

Иерархия вычислительных точек в Мыслителе™ по своей сути ограничена древовидной структурой. Более сложные вычисления можно выполнять с помощью типичных функций, завернутых в многоразовые оболочки, называемые «модулями».

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

Создание экземпляра модуля, что называется «фрагментом», — это еще один вид оболочки. В то время как модуль описывает то, что включено внутрь него, фрагмент описывает, как этот конкретный экземпляр модуля связан с другими фрагментами. Он также содержит набор конкретных параметров, которые применяются для настройки модуля. Эта концепция имеет прямую аналогию между парой фрагмент-модуль и парой вызов-процедура, используемой в языках программирования. Каждый параметр распространяется вглубь иерархии, но его можно переопределить в любом встроенном фрагменте.

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

Фрагмент может ссылаться на несколько типов модулей. Самый важный из них — вычислительный модуль. Он построен из вычислительных точек. Другой тип модуля – это так называемое «поле». Проще говоря, это взаимно однозначное соединение для сети данных, для выполнения элементарных промежуточных операций над данными, для реализации генераторов данных или агентов данных для внешних поставщиков и потребителей данных и т. д., как определяется назначенным классом Java. По умолчанию поле предоставляет тривиальный сквозной канал для каждого контакта, позволяя объединять сети передачи данных.

Поскольку каждая часть проекта фактически выглядит как своего рода модуль, каждый модуль и каждый фрагмент предоставляют решение для организации входящих и исходящих потоков данных. В модели времени выполнения существует два типа шлюзов потока данных, обычно называемых «каналом»: «источник» для передачи вычисленного значения наружу и «приемник» для получения значения внутри. Их соединения образуют сеть, в которой циркулируют данные. Для сети нет строгих ограничений. Она может содержать множество источников и множество приемников. Сеть работает по единому правилу: каждый источник отправляет свое значение каждому приемнику внутри сети. Это требует, чтобы приемник имел как можно меньшую задержку.

Хотя сеть времени выполнения представляет собой очень простую структуру, сеть проекта предоставляет более удобные способы описания потоков данных. Она определяет «контакт» — аналог канала времени выполнения. У него есть свойство указывать направление потока данных: внутрь или наружу. Другое необязательное свойство сопоставляет контакт с вычислительной точкой. Последняя имеет аналогичное необязательное свойство для ссылки на конкретный контакт. Контакты можно сгруппировать в так называемые «соединения». Это помогает организовать каналы данных схожего значения под единым определением и упростить документацию. Когда модель готовится к выполнению, соединения фрагментов стыкуются с соединениями модулей, чтобы обеспечить связность по всей иерархии.

Разделы
Заказать
Учебники