Scheme

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

Традыцыйна асноўнай рысай мовы Scheme быў мінімалізм, але стандарт R6RS быў значна большым за папярэднія, а новы стандарт R7RS будзе апісваць два варыянта мовы: «малы» варыянт (уключае толькі найбольш неабходныя ў мове праграмавання рэчы, на аснове якіх можна пабудаваць усе іншыя; ствараецца працоўнай групай 1Charter for working group 1. Scheme Steering Committee. 2007-08-13.) і «вялікі» (уключае тое, што неабходна для практычнага выкарыстання мовы; ствараецца працоўнай групай 2Charter for working group 2. Scheme Steering Committee. 2007-08-13.).

Фармальным стандартам мовы Scheme з’яўляецца стандарт IEEE 1178. Стандартамі дэ-факта з’яўляюцца дакументы RnRS (англ. Revisedn Report on on the Algorithmic Language Scheme, гэта значыць Палепшаная n раз справаздача пра алгарытмічную мову Scheme), якія ствараюцца спецыяльна абраным камітэтам і прымаюцца ў выніку галасавання. Стандарт R6RS быў прыняты ў 2007 годзеR6RS Ratification Vote. Scheme Steering Committee. 2007-08-13.. 20 мая закончыцца галасаваннеЛіст extension of voting period  у спіску рассылкі Scheme-reports. па «маленькаму» варыянту мовы з R7RS.

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

 Асноўныя рысы мовы 

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

    (+ x 1)

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

    (display "Hello, world")

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

    '(display "Hello, world")

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

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

Катэгорыя:Мовы праграмавання высокага ўзроўню