Старсет

Старсет — высокоуровневый язык программирования, разработанный под руководством М. М. Гилулы в Институте программных систем РАН в 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

См. также править

Примечания править

  1. Konstantin V. Shvachko. S(b)-Tree Library: an Efficient Way of Indexing Data (англ.). — DIMACS Series in Discrete Mathematics and Theoretical Computer Science, 1999. — Vol. 50. — P. 207 - 222.
  2. Laszlo Böszörmenyi and Karl-Heinz Eder. Adding Parallel and Persistent Sets to Modula-3 (англ.). — Joint Modular Languages Conference JMLC'94, Ulm, Germany, 1994.
  3. Karl-Heinz Eder and Laszlo Böszörmenyi. Optimized Parallel Sets for Data Intensive Applications (англ.). — Proceedings of 7th International Conference and Workshop on Database and Expert Systems Applications: DEXA 96, 1996. — P. 185 - 192. — doi:10.1109/DEXA.1996.558293.

Литература править

  • Гилула М. М., Столбоушкин А. П. Язык программирования Старсет. — М.: «Наука», 1991. — ISBN 5-020-06831-4.
  • Гилула М. М. Множественная модель данных в информационных системах. — М.: «Наука», 1992. — 207 p. — ISBN 5-02-006938-8.
  • Gilula M. M. Множественная модель для баз данных и информационных систем = The Set Model for Database and Information Systems. — Reading, Massachusetts: Addison-Wesley, 1994. — ISBN 0-201-59379-3.