Spice (язык программирования, 1998)

Поделись знанием:
Перейти к: навигация, поиск

Здесь представлена статья о языке программирования, разработанном в 1998 году. Статью о языке программирования для симуляции аналоговых цепей, разработанном в 1972 году, см. здесь SPICE (язык программирования, 1972).

Spice
Семантика:

мультипарадигмальный: выражение-ориентированное, процедурное, объектно-ориентированное

Тип исполнения:

компилируемый

Появился в:

1998

Автор:

Дейв Регетт, Крис Доллин и Стива Лич

Система типов:

статическая, динамическая,

Spice — язык программирования, схожий с Common Lisp, но использующий синтаксис в стиле Алгол. Создан с учетом ускорения и упрощения обработки XML. Поддерживается довольно необычное смешение статической и динамической типизации, то есть поддерживается динамическая типизация с дополнительной возможностью статической типизации. Выражение-ориентированный язык с поддержкой множества типов данных, автоматическим управлением хранением данных и несколькими методами управления (multiply-dispatched methods).





Философия языка

Ориентирован на не слишком опытных программистов, время от времени работающих с текстом, HTML и XML, и использующих среднего размера проекты.

История

Язык был разработан на основе идеи Дейва Регетта, Криса Доллина и Стива Лича. Первоначальная работа была закончена осенью 1998 года, после чего было сделано несколько модификаций, в результате чего реализация языка существенно развивалась, а разработчики получили некоторый опыт.

Первая версия языка использовала таблицы стилей, а его синтаксис был близок к ECMAScript. В версии языка от 2002 года таблицы стилей уже не использовались, так как у разработчиков возникли проблемы с привязкой их к основному фреймворку, а синтаксис языка потерял Си-основу, приблизившись скорее к POP-11. Ядро языка осталось тем же самым, а разработчики продолжили эксперименты с добавлением поддержки регулярных выражений.

Технический обзор

Язык поддерживает автоматическое управление размещением в памяти: программы выделяют память под новые данные, которые удаляются, когда на них больше нет ссылок. Это освобождает программиста от рутинного контроля освобождения памяти.

Spice поддерживает динамическую типизацию: по умолчанию, типы являются сущностями времени исполнения (то есть их тип определяется во время исполнения, а не во время компиляции), а не сущностями времени компиляции, привязанными к выражениям. Это обеспечивает гибкость при разработке программ, за счет уменьшения обнаружения открытых ошибок и некоторых накладных расходов во время исполнения. Указание типов могут быть добавлены к объявлению переменных, и компилятор будет их использовать при проверке на ошибки и оптимизации.

Spice — выражение-ориентированный язык: (почти) все конструкции языка возвращают значения, даже циклы. Язык поддерживает многозначность: выражения различают ряд из нуля или более значений. Число значений выражения не относится к свойству, определяемому на стадии компиляции.

Язык относится к высокоуровневым языкам: он поддерживает функции как значения, полную лексическую поддержку, и обладает синтаксисом для использования символов функция (то есть лямбда-выражений).

Spice поддерживает многоуправляемость: функции могут быть определены частями («перегружены») для различных комбинаций типов аргументов, а при вызове функции выполняется наиболее подходящий по описанным параметрам кусок. Обычное однозначное динамическое управление объектно-ориентированных языков (Smalltalk, C++, Java) — частный случай мультиметодов Spice, созданных под влиянием CLOS и ObjectClass.

Spice — классово-нейтральный: новая перегрузка любой обобщенной функции может присутствовать в любом пакете, где данная функция входит в область видимости, причем специальный синтаксис для различения вызова перегруженной функции от неперегруженной не требуется. Классы не поддерживают пространства имен.

Языком поддерживается несколько типов процедур: функции, методы, конструкторы и прочие. Для оформления вызова процедуры используется синтаксис вида F(X), в котором F — имя вызываемой процедуры, а X — передаваемый ей аргумент.

При использовании переменных их объявление является обязательным.

Строки представляют собой последовательности символов Unicode в каноническом виде. Являются неизменяемыми и могут рассматриваться как массивы с использованием стандартной нотации s[i].

Стандартная библиотека

Для языка Spice разработана довольно богатая библиотека стандартных значений и процедур.

Примеры стандартных процедур:

  • x.typeOf — тип x
  • x.print — сокращение от x.printOn(standardOutput)
  • x.toString — конвертирует x в строку, аналогичным образом как это делает print

Реализовано несколько типов чисел: малые целые (Small), большие целые (BigInt), короткие и длинные числа с плавающей запятой (Float, Double), отношения (дроби) (Ratio) и комплексные числа (Complex).

Операторы: +, -, *, /, div, rem, % работают как и в большинстве других языков. Div — деление нацело, операторы должны быть целыми числами, а результат округляется в сторону нуля. Rem — остаток от деления, операторы должны быть целыми числами, результат представляет собой соответствующий остаток от деления. / в результате дает число с плавающей запятой, если операторы не делятся нацело. Оператор /: выполняет точное деление: результат содержит отношение для обозначения составляющих, не относящихся ни к целым числам, ни к числам с плавающей запятой (собственно, это является основным способом получения подобных значений). Функционал операторов отношения <=, <, >=, >, ==, /== реализован схожим образом, как в других языках (единственное, операторы == и /== не рекомендуется применять к числам с плавающей запятой).

Будущее развитие

Примеры программ

Пример традиционной программы «Hello, world!» на языке Spice:

# Простейший пример
println( "Hello, world!" );

Здесь знак # означет начало строчного комментария, а процедура println печатает строку. Символ ; используется для разделения инструкций, означая конец одной строки и возможное начало другой. Не всегда является необходимым, но рекомендуется его всегда использовать.

Достоинства и недостатки языка

Достоинства

Недостатки

См. также

Напишите отзыв о статье "Spice (язык программирования, 1998)"

Ссылки

  • [www.hpl.hp.com/techreports/2002/HPL-2002-229.html The Spice language manual]  (англ.)


К:Википедия:Изолированные статьи (тип: не указан)

Отрывок, характеризующий Spice (язык программирования, 1998)

Наташа посмотрела по тому направлению, по которому смотрел отец, и увидала, Жюли, которая с жемчугами на толстой красной шее (Наташа знала, обсыпанной пудрой) сидела с счастливым видом, рядом с матерью.
Позади их с улыбкой, наклоненная ухом ко рту Жюли, виднелась гладко причесанная, красивая голова Бориса. Он исподлобья смотрел на Ростовых и улыбаясь говорил что то своей невесте.
«Они говорят про нас, про меня с ним!» подумала Наташа. «И он верно успокоивает ревность ко мне своей невесты: напрасно беспокоятся! Ежели бы они знали, как мне ни до кого из них нет дела».
Сзади сидела в зеленой токе, с преданным воле Божией и счастливым, праздничным лицом, Анна Михайловна. В ложе их стояла та атмосфера – жениха с невестой, которую так знала и любила Наташа. Она отвернулась и вдруг всё, что было унизительного в ее утреннем посещении, вспомнилось ей.
«Какое право он имеет не хотеть принять меня в свое родство? Ах лучше не думать об этом, не думать до его приезда!» сказала она себе и стала оглядывать знакомые и незнакомые лица в партере. Впереди партера, в самой середине, облокотившись спиной к рампе, стоял Долохов с огромной, кверху зачесанной копной курчавых волос, в персидском костюме. Он стоял на самом виду театра, зная, что он обращает на себя внимание всей залы, так же свободно, как будто он стоял в своей комнате. Около него столпившись стояла самая блестящая молодежь Москвы, и он видимо первенствовал между ними.
Граф Илья Андреич, смеясь, подтолкнул краснеющую Соню, указывая ей на прежнего обожателя.
– Узнала? – спросил он. – И откуда он взялся, – обратился граф к Шиншину, – ведь он пропадал куда то?
– Пропадал, – отвечал Шиншин. – На Кавказе был, а там бежал, и, говорят, у какого то владетельного князя был министром в Персии, убил там брата шахова: ну с ума все и сходят московские барыни! Dolochoff le Persan, [Персианин Долохов,] да и кончено. У нас теперь нет слова без Долохова: им клянутся, на него зовут как на стерлядь, – говорил Шиншин. – Долохов, да Курагин Анатоль – всех у нас барынь с ума свели.
В соседний бенуар вошла высокая, красивая дама с огромной косой и очень оголенными, белыми, полными плечами и шеей, на которой была двойная нитка больших жемчугов, и долго усаживалась, шумя своим толстым шелковым платьем.
Наташа невольно вглядывалась в эту шею, плечи, жемчуги, прическу и любовалась красотой плеч и жемчугов. В то время как Наташа уже второй раз вглядывалась в нее, дама оглянулась и, встретившись глазами с графом Ильей Андреичем, кивнула ему головой и улыбнулась. Это была графиня Безухова, жена Пьера. Илья Андреич, знавший всех на свете, перегнувшись, заговорил с ней.
– Давно пожаловали, графиня? – заговорил он. – Приду, приду, ручку поцелую. А я вот приехал по делам и девочек своих с собой привез. Бесподобно, говорят, Семенова играет, – говорил Илья Андреич. – Граф Петр Кириллович нас никогда не забывал. Он здесь?
– Да, он хотел зайти, – сказала Элен и внимательно посмотрела на Наташу.
Граф Илья Андреич опять сел на свое место.
– Ведь хороша? – шопотом сказал он Наташе.
– Чудо! – сказала Наташа, – вот влюбиться можно! В это время зазвучали последние аккорды увертюры и застучала палочка капельмейстера. В партере прошли на места запоздавшие мужчины и поднялась занавесь.
Как только поднялась занавесь, в ложах и партере всё замолкло, и все мужчины, старые и молодые, в мундирах и фраках, все женщины в драгоценных каменьях на голом теле, с жадным любопытством устремили всё внимание на сцену. Наташа тоже стала смотреть.


На сцене были ровные доски по средине, с боков стояли крашеные картины, изображавшие деревья, позади было протянуто полотно на досках. В середине сцены сидели девицы в красных корсажах и белых юбках. Одна, очень толстая, в шелковом белом платье, сидела особо на низкой скамеечке, к которой был приклеен сзади зеленый картон. Все они пели что то. Когда они кончили свою песню, девица в белом подошла к будочке суфлера, и к ней подошел мужчина в шелковых, в обтяжку, панталонах на толстых ногах, с пером и кинжалом и стал петь и разводить руками.
Мужчина в обтянутых панталонах пропел один, потом пропела она. Потом оба замолкли, заиграла музыка, и мужчина стал перебирать пальцами руку девицы в белом платье, очевидно выжидая опять такта, чтобы начать свою партию вместе с нею. Они пропели вдвоем, и все в театре стали хлопать и кричать, а мужчина и женщина на сцене, которые изображали влюбленных, стали, улыбаясь и разводя руками, кланяться.
После деревни и в том серьезном настроении, в котором находилась Наташа, всё это было дико и удивительно ей. Она не могла следить за ходом оперы, не могла даже слышать музыку: она видела только крашеные картоны и странно наряженных мужчин и женщин, при ярком свете странно двигавшихся, говоривших и певших; она знала, что всё это должно было представлять, но всё это было так вычурно фальшиво и ненатурально, что ей становилось то совестно за актеров, то смешно на них. Она оглядывалась вокруг себя, на лица зрителей, отыскивая в них то же чувство насмешки и недоумения, которое было в ней; но все лица были внимательны к тому, что происходило на сцене и выражали притворное, как казалось Наташе, восхищение. «Должно быть это так надобно!» думала Наташа. Она попеременно оглядывалась то на эти ряды припомаженных голов в партере, то на оголенных женщин в ложах, в особенности на свою соседку Элен, которая, совершенно раздетая, с тихой и спокойной улыбкой, не спуская глаз, смотрела на сцену, ощущая яркий свет, разлитый по всей зале и теплый, толпою согретый воздух. Наташа мало по малу начинала приходить в давно не испытанное ею состояние опьянения. Она не помнила, что она и где она и что перед ней делается. Она смотрела и думала, и самые странные мысли неожиданно, без связи, мелькали в ее голове. То ей приходила мысль вскочить на рампу и пропеть ту арию, которую пела актриса, то ей хотелось зацепить веером недалеко от нее сидевшего старичка, то перегнуться к Элен и защекотать ее.
В одну из минут, когда на сцене всё затихло, ожидая начала арии, скрипнула входная дверь партера, на той стороне где была ложа Ростовых, и зазвучали шаги запоздавшего мужчины. «Вот он Курагин!» прошептал Шиншин. Графиня Безухова улыбаясь обернулась к входящему. Наташа посмотрела по направлению глаз графини Безуховой и увидала необыкновенно красивого адъютанта, с самоуверенным и вместе учтивым видом подходящего к их ложе. Это был Анатоль Курагин, которого она давно видела и заметила на петербургском бале. Он был теперь в адъютантском мундире с одной эполетой и эксельбантом. Он шел сдержанной, молодецкой походкой, которая была бы смешна, ежели бы он не был так хорош собой и ежели бы на прекрасном лице не было бы такого выражения добродушного довольства и веселия. Несмотря на то, что действие шло, он, не торопясь, слегка побрякивая шпорами и саблей, плавно и высоко неся свою надушенную красивую голову, шел по ковру коридора. Взглянув на Наташу, он подошел к сестре, положил руку в облитой перчатке на край ее ложи, тряхнул ей головой и наклонясь спросил что то, указывая на Наташу.