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