SETL
Парадигма | мультипарадигмальность : императивная , процедурная , структурированная , объектно-ориентированная. |
---|---|
Разработано | (Джек) Джейкоб Т. Шварц |
Разработчик | Курантовский институт математических наук |
Впервые появился | 1969 год |
Стабильная версия | 1.1
/ 7 января 2005 г |
Дисциплина набора текста | Динамический |
Веб-сайт | решить |
Под влиянием | |
АЛГОЛ 60 | |
Под влиянием | |
SETL2 , ISETL , SETLX , Starset , ABC |
SETL (SET Language) — язык программирования очень высокого уровня. [1] на основе математической теории множеств . [2] [3] Первоначально он был разработан в Нью-Йоркского университета (NYU) Институте математических наук Куранта в конце 1960-х годов группой, в которую входили Джек Джейкоб Т. Шварц , [1] [3] РБК Дьюар и Э. Шенберг. [1] Шварцу приписывают разработку языка. [4]
Дизайн
[ редактировать ]SETL предоставляет два основных типа совокупных данных: (неупорядоченные) наборы и кортежи . [1] [2] [5] Элементы множеств и кортежей могут быть любого произвольного типа, включая сами множества и кортежи, за исключением неопределенного значения om. [1] (иногда пишется с заглавной буквы: ОМ ). [6] Карты предоставляются в виде наборов пар (т. е. кортежей длины 2) и могут иметь произвольные типы домена и диапазона. [1] [5] Примитивные операции в SETL включают, среди прочего, членство в множестве, объединение, пересечение и построение степенного множества. [1] [7]
SETL предоставляет количественные логические выражения, построенные с использованием универсальных и экзистенциальных кванторов логики предикатов первого порядка . [1] [7]
SETL предоставляет несколько итераторов для создания различных циклов над совокупными структурами данных. [1] [8]
Примеры
[ редактировать ]Выведите все простые числа от 2 до N :
print([n in [2..N] | forall m in {2..n - 1} | n mod m > 0]);
Обозначение аналогично пониманию списка .
Определение факториальной процедуры:
procedure factorial(n); -- calculates the factorial n! return if n = 1 then 1 else n * factorial(n - 1) end if; end factorial;
Более традиционное выражение SETL для факториала (n > 0):
*/[1..n]
Использование
[ редактировать ]Реализации SETL были доступны на DEC VAX , IBM/370 , рабочей станции SUN и APOLLO . [9] В 1970-е годы СЭТЛ была портирована на БЭСМ-6 , ЕС ЭВМ и другие российские вычислительные системы. [10]
SETL использовался для ранней реализации языка программирования Ada , названного переводчиком Ada/ED NYU. [11] Позже это стало первой проверенной реализацией Ada, сертифицированной 11 апреля 1983 года. [12]
По словам Гвидо ван Россума , « Python предшественник , ABC , был вдохновлен SETL — Ламберт Меертенс провел год с группой SETL в Нью-Йоркском университете, прежде чем придумал окончательный дизайн ABC!» [13]
Языковые варианты
[ редактировать ]Язык SET 2 (SETL2), обратно несовместимый потомок SETL, был создан Кирком Снайдером из Института математических наук Куранта при Нью-Йоркском университете в конце 1980-х годов. [14] Как и его предшественник, он основан на теории и обозначениях конечных множеств, но на его синтаксис и стиль также повлиял язык Ада. [14]
Интерактивный язык SET (ISETL) — вариант SETL, используемый в дискретной математике . [15]
GNU SETL — это утилита командной строки, которая расширяет и реализует SETL. [16]
Ссылки
[ редактировать ]- ^ Перейти обратно: а б с д и ж г час я Шварц, Дж. Т.; Дьюар, РБК; Шенберг, Э.; Дубинский, Э. (1986). «Программирование с помощью наборов» . SpringerLink : v–vii, 2, 48, 53, 57–58, 63, 113 и далее. дои : 10.1007/978-1-4613-9575-1 .
- ^ Перейти обратно: а б «GNU SETL Ом» . setl.org . Проверено 24 апреля 2024 г.
- ^ Перейти обратно: а б Маркофф, Джон (4 марта 2009 г.). «Джейкоб Т. Шварц, 79 лет, неугомонный учёный, умер» . Нью-Йорк Таймс . ISSN 0362-4331 . Проверено 24 апреля 2024 г.
- ^ Вычислительная логика и теория множеств . стр. VII. дои : 10.1007/978-0-85729-808-9 .
- ^ Перейти обратно: а б «ГЛАВА 2» . www.settheory.com . Проверено 24 апреля 2024 г.
- ^ «ГЛАВА 3» . www.settheory.com . Проверено 24 апреля 2024 г.
- ^ Перейти обратно: а б «ГЛАВА 3» . www.settheory.com . Проверено 24 апреля 2024 г.
- ^ «ГЛАВА 4» . www.settheory.com . Проверено 24 апреля 2024 г.
- ^ Дж. Т. Шварц; РБК Дьюар; Э. Дубинский; Э. Шенберг (1986). Программирование с наборами. Введение в SETL Спрингер Паблишинг Нью-Йорк Инк. ISBN 978-1-4613-9577-5 .
- ^ И.В. Поттосин, ed. (2001). Становление новосибирской школы программирования (мозаика воспоминаний) [ Formation of the Novosibirsk school of programming (mosaic of memories) ] (PDF) (in Russian). Новосибирск: Институт систем информатики им. А. П. Ершова СО РАН. pp. 106–113.
- ^ Дьюар, Роберт Б.К.; Фишер-младший, Джеральд А.; Шенберг, Эдмонд; Фрёлих, Роберт; Брайант, Стивен; Госс, Клинтон Ф.; Берк, Майкл (ноябрь 1980 г.). «Переводчик Ады Нью-Йоркского университета». Материалы симпозиума ACM-SIGPLAN по языку программирования Ada — SIGPLAN '80 . Том. 15. стр. 194–201. дои : 10.1145/948632.948659 . ISBN 0-89791-030-3 . S2CID 10586359 .
- ^ SofTech Inc., Уолтем, Массачусетс (11 апреля 1983 г.). «Сводный отчет о проверке компилятора Ada: NYU Ada/ED, версия 19.7 V-001» . Архивировано из оригинала 7 июня 2017 года . Проверено 16 декабря 2010 г.
{{cite web}}
: CS1 maint: несколько имен: список авторов ( ссылка ) - ^ Python-Dev: SETL (был: вяло относился к литералам диапазона)
- ^ Перейти обратно: а б «СЭТЛ2 – ЭДМ2» . www.edm2.com . Проверено 24 апреля 2024 г.
- ^ Бакстер Гастингс, Нэнси; Дубинский, Эд; Левин, Гэри (1989). Изучение дискретной математики с ISETL . Нью-Йорк: Springer-Verlag. ISBN 978-0-387-96898-8 .
- ^ «ГНУ СЭТЛ» . setl.org . Проверено 24 апреля 2024 г.
Дальнейшее чтение
[ редактировать ]- Шварц, Джейкоб Т., «Теория множеств как язык спецификации программ и программирования». Институт математических наук Куранта, Нью-Йоркский университет, 1970.
- Шварц, Джейкоб Т., «О программировании, промежуточный отчет о проекте SETL», факультет компьютерных наук, Институт математических наук Куранта, Нью-Йоркский университет (1973).
- Шварц, Джейкоб Т., Дьюар, РБК, Дубинский Э. и Шонберг Э., Программирование с наборами: введение в SETL , 1986. ISBN 0-387-96399-5 .