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

📚 Вычислительная точка

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

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

Вычислительная точка позволяет обрабатывать любую математическую функцию при условии, что и аргументы, и значение являются действительными¹ числами. Конечная точка (точка без аргументов) не требует специального математического определения, поскольку ее единственная роль — принимать значение из внешнего источника. Её можно рассматривать как первичный аргумент. Однако не существует функций по умолчанию, определенных для вычислительных точек наверху и в середине вычислительной иерархии. Их функция должна быть указана или описана в модели.

Ключевой информацией о функции является имя класса (class) Java, включая имя пакета и простое имя класса. Его можно увидеть в браузере проекта за значком логотипа Java. Например, вот имя класса функции суммирования в демонстрационном проекте: com.varankin.brains.sample.summator.Sum3.

Точка, которая только ссылается на имя класса, предполагает, что код класса Java был передан в модель любым методом, обычно в файле jar, указанном в переменной среды CLASSPATH. В качестве альтернативы этой «статической» доставки Мыслитель версии 2 позволяет включать текст кода класса Java прямо в модель, либо для конкретной точки, либо в составе библиотеки. Последний вариант позволяет ссылаться на класс, как если бы он был предоставлен в файле jar. Мыслитель использует встроенный компилятор Java для генерации байт-кода класса. Его можно вызвать в интерактивном режиме для конкретного класса, чтобы обеспечить безошибочную компиляцию предоставленного текста. Когда модель подготовлена к выполнению, все классы компилируются автоматически.

Минимальным требованием для ссылки на класс Java в точке является реализация им определенного интерфейса. Рекомендуемый и самый простой из них представляет собой метод преобразования массива аргументов (float[]) в одно значение (float), то есть свертку. Мыслитель заворачивает этот класс в типичное вычислительное решение во время выполнения. Для более специфичных требований модель может предоставить класс более общего интерфейса, соответствующий финальной, средней и конечной точкам в вычислительной иерархии. Предоставленный класс может иметь обычные зависимости от других классов Java. В модель также можно добавить пользовательские классы. Чтобы помочь Мыслителю правильно разрешить иерархию классов, любому указанному или предоставленному классу можно присвоить метку применимости.

Вычислительная точка может быть дополнена одним или несколькими доступными параметрами, которые будут использоваться в методе вычисления результата. Им может быть присвоено начальное значение в модели. Тип параметра Java не ограничивается числовыми типами. Мыслитель применяет свои собственные инструменты базы данных для обмена представлениями значений с типом String и другими типами Java. Кроме того, реализация параметра внутри класса имеет три варианта: переменная в составе класса, метод получения значения и пара методов получения и установки значения. Значение параметра можно просмотреть и изменить во время выполнения. Чтобы быть доступным через графический интерфейс, параметр в коде класса должен быть помечен специальным интерфейсом. Также можно использовать неаннотированные обычные члены класса любого типа.

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

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

 

 

Примечания:

  1. Версии программного обеспечения 1.X и 2.X работают с экономичными 32-битными числами с плавающей запятой, т.е. с типом float Java.

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