Our website is made possible by displaying online advertisements to our visitors.
Please consider supporting us by disabling your ad blocker.

Responsive image


Scheme

Scheme
Изображение логотипа
Семантика функциональный
Класс языка язык программирования, мультипарадигмальный, язык функционального программирования, процедурный язык программирования и язык метапрограммирования
Тип исполнения интерпретатор или компилятор
Появился в 1975
Автор Гай Стил и Джеральд Сассмен
Расширение файлов .scm, .ss
Выпуск
Система типов строгая, динамическая
Основные реализации PLT Scheme, MIT Scheme, Scheme48, Guile, JScheme
Диалекты T
Испытал влияние Lisp, ALGOL
Повлиял на Common Lisp, JavaScript, R, Ruby, Dylan, Lua, Hop, Racket
Сайт scheme.org (англ.)
Логотип Викисклада Медиафайлы на Викискладе

Scheme [skiːm] — функциональный язык программирования, один из трёх наиболее популярных диалектов Лиспа (наряду с Common Lisp и Clojure). Создан в середине 1970-х годов исследователями Массачусетского технологического института Гаем Стилом (англ. Guy L. Steele) и Джеральдом Сассменом (англ. Gerald Jay Sussman).

Обладает минималистичным дизайном, содержит минимум примитивных конструкций и позволяет выразить всё необходимое путём надстройки над ними. Например, использует всего два механизма организации циклов — хвостовую рекурсию и итеративный подход (в котором используются временные переменные для сохранения промежуточного результата).

Язык начинался с попытки реализовать модель акторов Карла Хьюитта, для чего Стил и Сассман написали «крошечный интерпретатор Лиспа», а затем «добавили механизм создания акторов и посылки сообщений». Scheme стал первым диалектом Лиспа, применяющим исключительно статические (а не динамические) области видимости переменных, что гарантировало оптимизацию хвостовой рекурсии и обеспечило поддержку булевского типа (#t и #f вместо традиционных T и NIL). Также стал одним из первых языков с поддержкой продолжений. Начиная со спецификации R⁵RS, язык приобрёл средство для записи макросов на основе шаблонов синтаксического преобразования с «соблюдением гигиены» (англ. hygienic macro). Предусматривается «сборка мусора» (автоматическое освобождение памяти от неиспользуемых более объектов).

В качестве базовых структур данных язык использует списки и одномерные массивы («векторы»). В соответствии с декларируемым минимализмом, (пока) нет стандартного синтаксиса для поддержки структур с именованными полями, а также средств ООП — все это может быть реализовано программистом по его предпочтению, хотя большинство реализаций языка предлагают готовые механизмы.

Первоначальное название языка — Schemer, было изменено из-за ограничения на длину имён файлов в ITS; (англ. schemer — «авантюрист», «комбинатор»; видимо, намёк на другие лиспообразные языки, вышедшие из MIT — Planner (в одном из значений — «прожектёр») и Conniver («потворщик»)). Значительный вклад в популяризацию языка внесла книга Абельсона и Сассмана «Структура и интерпретация компьютерных программ», длительное время использовавшаяся как базовый учебник программирования в Массачусетском технологическом институте.

  1. https://small.r7rs.org/

Previous Page Next Page