Русская Википедия:Старсет

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Старсет — высокоуровневый язык программирования, разработанный под руководством М. М. Гилулы в Институте программных систем РАН в 1991 году.

Типы данных

Старсет поддерживает три типа данных: слова (они же строки), множества и классы. Каждое слово, представляющее собой корректно записанное число, имеет численное значение. Если численное значение слова равно 0, то слово логически интерпретируется как тождественно ложный предикат. В противном случает слово логически интерпретируется как тождественно истинный предикат. Тип «множество» определён как математическое множество слов. Тип «класс» определён как математическое множество множеств. Старсет позволяет определить индексы для переменных типа «класс». Индексированный класс является эквивалентом словаря в языках типа Python. Идентификаторы переменных типа «множество» и «класс» начинаются с $ и $$, соответственно.

Операции

Помимо «традиционных» арифметических и логических операторов и операторов над строками, Старсет поддерживает сопоставление с образцом на уровне как слов, так и множеств. Для оптимизации операции сопоставления слова и множества представлены в виде S(1)-деревьев[1].

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

Старсет поддерживает операторы ветвления, простого цикла, параллельного цикла по множеству или классу и последовательного цикла по множеству или классу. Для имитации работы с базами данных используются операторы создания и удаления индекса, поиска, модификации, добавления и выборки множества. Виртуализованная встроенная система ввода/вывода позволяет сохранять множества и классы на внешних носителях.[2][3]

Пример кода

Процедура Ivanov вводит класс с дисплея, удаляет все подмножества, не содержащие ни одного слова с подсловом 'Иванов', и выводит полученный класс на дисплей.

   Proc Ivanov()
     word: x;
     set: $set;
     class: $$class;
     Read $$class;
     $$class := {$set in $$class : (Exist x in $set)(x is [..]^'Иванов'^[..])};
     Write $$class;
   Endproc

См. также

Примечания

Шаблон:Примечания

Литература

Шаблон:Языки программирования