Spin Language — субъектно-ориентированный язык программирования данных.
Spin Language — субъектно-ориентированный, декларативный, реактивный язык программирования данных. Spin позволяет описывать приложения в виде иерархии взаимозависимых субъектов.
Субъектом называется список свойств, разделённых оператором ; (точка с запятой). Значения свойств определяется константой или формулой, никакой код извне не может на это повлиять, что исключает многие проблемы безопасности на уровне синтаксиса и упрощает отладку.
Все Spin-структуры данных вложены в абстрактный корневой сетевой субъект иерархии, что позволяет описывать приложение, как часть глобального графа взаимозависимых данных.
Синтаксис
Данные могут быть описаны в виде числа, текста, формулы, субъекта. Формулы описываются арифметическими операциями над данными. В Spin операторы не имеют приоритетов и вычисляются слева направо. Порядок вычислений можно явно указывать через выделение подвыражений в отдельный контекст скобками {}, (), []
2 + 2 * 2 вычислится, как 82 + (2 * 2) будет 6.Комментарии
- "..." любые символы, заключенные в двойные кавычки - комментарий кода для разработчика, комментарии игнорируются при интерпретации.
Операторы:
- ~ Приведение типа
- + Добавление
- - Исключение
- * Повторение
- / Разделение
- ^ Возведение
- # Извлечение
- % Остаток разделения
- = Сравнение
- & И
- | ИЛИ
- Если между явно разными операндами оператор отсутствует, применяется оператор по умолчанию, означающий присваивание.
Данные
- 0-9 цифровые символы позволяют описать числа в десятичном представлении
- '...' любые символы, заключенные в одинарные кавычки, позволяют описать текст, если текст должен содержать символ одинарной кавычки, её экранируют дублированием
- Все остальные символы допустимо использовать для описания текста без кавычек, но этот способ рекомендуется использовать только для алфавитных символов, так как другие могут в быть включены в синтаксис с развитием языка, как операторы.
- Вычислимые значения описываются фломулами, аналогичными арифметическим, но операндами могут выступать любые типы, не только числа.
- Структурный оператор ; позволяет описать субъект - сущность, объединяющая множество свойств. Если свойством субъекта описывается формулой, начинающейся с оператора, то в качестве первого операнда по умолчанию выступит сам субъект.
Для программистов
Исходный код Spin Language не позволяет описывать последовательность процедур, функции, циклы, условия - никакого исполняемого кода, вместо этого он ориентируется на данные. Смена парадигмы позволяет описать связанные данные более естественно. Вместо составления логики реагирования на изменения и пошаговых инструкций машине описываются формулы взаимодействия элементов системы, по аналогии с законами физики.