Spin Language
  • Home

Spin Lang - язык описания динамических структур данных

Язык на этапе разработки, на текущий момент данная страница даёт лишь теоретическую информацию. После первого релиза будут добавлены ресурсы на включение языка в Ваш проект.

Spin Lang - язык описания динамических структур данных для ЭВМ со Spin-архитектурой. Ввиду широкого распространения архитектуры фон Неймана, ядро языка реализуется на базе классических языков программирования.

Spin Lang не позволяет описывать исполняемый код - не является языком программирования. Вместо этого предоставляет возможность описания иерархии взаимозависимых элементов, чего может быть достаточно для написания приложений в полностью декларативном стиле.

Синтаксис языка позволяет описывать приложения в виде иерархии элементов, значения которых могут быть представлены в виде динамически вычисляемых формул зависимости от других элементов. Элементы иерархии называются Spin-субъектами, особенностью которых является то, что их значения указываются исключительно в теле субъекта и не могут быть изменены извне.

Ядро базируются на ленивых вычислениях, т.е. вычисления происходят при изменении значений субъектов, от которых зависят другие субъекты, имеющие влияние на внешний мир. Все Spin-структуры данных вложены в абстрактный корневой сетевой субъект иерархии, что позволяет рассматривать все работающие в сети Spin-структуры, как единый кластер взаимозависимых данных.

Синтаксис

Синтаксис языка определяет формат описания типов данных (число, текст, множество и т.д.) и их взаимодействия с помощью операторов (+, -, *, / и т.д.). Операторы в Spin работают не только с числами, а со всеми поддерживаемыми типами. В Spin операторы не имеют приоритетов и вычисляются слева направо. Для изменения порядка операций используются скобки. Например, в отличие от обычной арифметики,

2 + 2 * 2 = 8
а
2 + (2 * 2) = 6
. Это позволяет упростить понимание кода, реализацию ядра, приоритеты операции над нечисловыми данными не имеют прикладного смысла.

Комментарии

  • "..." любые символы, заключенные в двойные кавычки - комментарий кода для разработчика, комментарии игнорируются при интерпретации.

Иерархия, структура:

  • (...), {...}, [...] скобки обособления, позволяют объединять различные данные во множество и менять приоритет операций.
  • ; Разделитель элементов множества, позволяет описать структуру данных, состоящую из последовательности значений, в том числе других множеств.

Операторы:

  • . Приведение
  • + Добавление
  • - Исключение
  • * Повторение
  • / Разделение
  • ^ Возведение
  • : Извлечение
  • % Остаток от разделения
  • ? Зарезервировано
  • & Зарезервировано
  • | Зарезервировано
  • # Зарезервировано
  • = Зарезервировано
  • < Зарезервировано
  • > Зарезервировано

Данные

  • 0-9 цифровые символы позволяют описать числа в десятичном представлении
  • '...' любые символы, заключенные в одинарные кавычки, позволяют описать текст, если текст должен содержать символ одинарной кавычки, её экранируют дублированием
  • Любые символы и их последовательности, кроме описанных выше, позволяют описать текст, аналогично тексту в одинарных кавычках, хотя такая возможность есть, её следует использовать исключительно для алфавитных символов, так как другие могут в перспективе быть включены в синтаксис, как операторы.
©2025 spinlang.net spinlang.net@gmail.com