Scheme — мова праграмавання з сямейства моваў Лісп, створаная Гаем Сцілам і Джэральдам Сасмэнам.

Scheme
Клас мовы мультыпарадыгмная
З'явілася ў 1975
Аўтар(ы) Гай Сціл, Джэральд Сасмэн
Пашырэнне файлаў .scm
Тыпізацыя дадзеных строгая, дынамічная
Асноўныя рэалізацыі Chibi-Scheme, Chicken, Gambit, Guile, Kawa, MIT Scheme, Racket, Tiny Scheme
Зведала ўплыў Lisp, ALGOL, MDL
Паўплывала на Clojure, Common Lisp, Dylan, EuLisp, Haskell, JavaScript, Lua, R, Ruby

Традыцыйна асноўнай рысай мовы Scheme быў мінімалізм, але стандарт R6RS быў значна большым за папярэднія, а новы стандарт R7RS будзе апісваць два варыянта мовы: «малы» варыянт (уключае толькі найбольш неабходныя ў мове праграмавання рэчы, на аснове якіх можна пабудаваць усе іншыя; ствараецца працоўнай групай 1[1]) і «вялікі» (уключае тое, што неабходна для практычнага выкарыстання мовы; ствараецца працоўнай групай 2[2]).

Фармальным стандартам мовы Scheme з'яўляецца стандарт IEEE 1178. Стандартамі дэ-факта з'яўляюцца дакументы RnRS (англ. Revisedn Report on on the Algorithmic Language Scheme, гэта значыць Палепшаная n раз справаздача пра алгарытмічную мову Scheme), якія ствараюцца спецыяльна абраным камітэтам і прымаюцца ў рэзультаце галасавання. Стандарт R6RS быў прыняты ў 2007 годзе[3]. 20 мая закончыцца галасаванне[4] па «маленькаму» варыянту мовы з R7RS.

Стандарт апісвае толькі неабходны мінімум.

Асноўныя рысы мовыПравіць

Як і ўсе мовы з сямейства Ліспаў, Scheme выкарыстоўвае прэфіксную натацыю. У Scheme матэматычныя аператары +, -, /, * разглядаюцца як функцыі і пішуцца перад іх аргументамі. Напрыклад, сума x і 1 запісваецца так:

   (+ x 1)

Выклік функцыі запісваецца такім жа чынам:

   (display "Hello, world")

Для схемы характэрная гомаіканічнасць — код і дадзеныя выглядаюць аднолькава. Выклік функцыі у той жа час з'яўляецца звязаным спісам. Вось так апісваецца спіс з двума элементамі — сімвалічным аб'ектам display і радком "Hello, world":

   '(display "Hello, world")

Гомаіканічнасць дазваляе ствараць макрасы — код, які пераўтварае іншы код.

У адрозненне ад іншых ліспаў (у першую чаргу ад Common Lisp), у Схеме ёсць толькі адна прастора імён. Гэта значыць, што імёны зменных і функцый не могуць быць аднолькавымі.


СпасылкіПравіць

  1. Charter for working group 1. Scheme Steering Committee. 2007-08-13.
  2. Charter for working group 2. Scheme Steering Committee. 2007-08-13.
  3. R6RS Ratification Vote. Scheme Steering Committee. 2007-08-13.
  4. Ліст extension of voting period у спіску рассылкі Scheme-reports.