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 печатает строку. Символ ; используется для разделения инструкций, означая конец одной строки и возможное начало другой. Не всегда является необходимым, но рекомендуется его всегда использовать.

См. также

Ссылки

Read other articles:

Châtenay-MalabryNegaraPrancisArondisemenAntonyKantonIbukota 2 kantonAntarkomuneCommunauté d'agglomérationdes Hauts de BièvreKode INSEE/pos92019 /  Châtenay-Malabry merupakan sebuah komune di pinggiran barat daya Paris, Prancis. Terletak 10.8 km (6.7 mil) dari pusat kota Paris. Komune ini termasuk lembah la vallée aux loups dengan hutan hijau dan rumah unik termasuk kediaman penulis Prancis Chateaubriand. Juga termasuk Butte Rouge, wilayah terpadat. Kota Kebun di Butte Rouge, C...

 

DouYu Hanzi sederhana: 斗鱼 Hanzi tradisional: 鬥魚 Alih aksara Mandarin - Hanyu Pinyin: Dòuyú DouYu (Hanzi: 斗鱼; Pinyin: Dòuyú) adalah sebuah situs web penyedia layanan penyiaran terbesar di Tiongkok. Pada tahun 2019, situs web tersebut tercatat memiliki 163,3 juta pengguna aktif bulanan sepanjang tahunnya.[1] Tencent adalah pemegang sepertiga saham dari DouYu.[2] Pada 2023, pemilik DouYu, Chen Shaojie, ditangkap atas dakwaan perjudian.[3] Referens...

 

Jutta Urpilainen Deputi Perdana Menteri FinlandiaMasa jabatan22 Juni 2011 – 6 Juni 2014Perdana MenteriJyrki Katainen PendahuluJyrki KatainenPenggantiAntti RinneMenteri KeuanganMasa jabatan22 Juni 2011 – 6 Juni 2014Perdana MenteriJyrki Katainen PendahuluJyrki KatainenPenggantiAntti RinnePemimpin Partai Demokratik SosialMasa jabatan6 Juni 2008 – 9 Mei 2014 PendahuluEero HeinäluomaPenggantiAntti Rinne Informasi pribadiLahir4 Agustus 1975 (umur 48)Lapua, Fin...

Belanda U21JulukanJong Oranje (Pemuda Oren)AsosiasiAsosiasi Sepak Bola Kerajaan BelandaPelatihErwin van de LooiKaptenTeun KoopmeinersPenampilan terbanyakArnold Bruggink & Leroy Fer (31)Pencetak gol terbanyakKlaas-Jan Huntelaar (18)Stadion kandangDe Vijverberg (12,600) Warna pertama Warna kedua Kejuaraan UEFA U-21Penampilan6 (Pertama kali pada 1988)Hasil terbaikPemenang (2006, 2007) Tim nasional sepak bola U-21 Belanda adalah tim nasional U-21 dari Belanda dan dikontrol oleh Asosiasi Sepak...

 

BabskfrazioneBabsk – VedutaChiesa a Babsk LocalizzazioneStato Polonia Voivodato Łódź Distretto Rawa ComuneBiała Rawska TerritorioCoordinate51°50′N 20°21′E / 51.833333°N 20.35°E51.833333; 20.35 (Babsk)Coordinate: 51°50′N 20°21′E / 51.833333°N 20.35°E51.833333; 20.35 (Babsk) Altitudine150 e 142 m s.l.m. Superficie150 km² Abitanti690 (2006) Densità4,6 ab./km² Altre informazioniCod. postale96-205 Prefisso(+4...

 

Il miglio verdeDavid Morse, Michael Clarke Duncan e Tom Hanks in una scena del filmTitolo originaleThe Green Mile Paese di produzioneStati Uniti d'America Anno1999 Durata189 min Generedrammatico, fantastico RegiaFrank Darabont SoggettoStephen King (romanzo) SceneggiaturaFrank Darabont ProduttoreFrank Darabont, David Valdes Casa di produzioneWarner Bros., Universal Pictures, Castle Rock Entertainment, Darkwoods Productions Distribuzione in italianoUIP FotografiaDavid Tattersall MontaggioRi...

Stasiun Hwangju adalah stasiun kereta di Daerah Hwangju, Provinsi Hwanghae Utara, Korea Utara. Stasiun ini adalah titik persimpangan Jalur P'yŏngbu, yang berjalan dari P'yŏngyang menuju Kaesong, dengan Jalur Songrim, yang berjalan dari Hwangju menuju Songrim.[1] Referensi ^ Kokubu, Hayato, 将軍様の鉄道 (Shōgun-sama no Tetsudō), ISBN 978-4-10-303731-6 lbs Jalur Pyongbu Jalur Utama P'yŏngyang Taedonggang Ryŏkp'o Chunghwa Hŭkkyo Kindŭng Hwangju Ch'imch'on Ch'ŏngnyŏn Chŏn...

 

Variety of stew Not to be confused with Chuppah. ChupeChupe de camaronesTypeStewMain ingredientsMeat (chicken, red meat, lamb or beef tripe, or offal) or seafood (fish, shrimp, crayfish, or shellfish), vegetables, potatoes or yuca, milk or cream Chupe is a generic term used in South America to a variety of stew generally made with chicken, red meat, lamb or beef tripe and other offal, or with fish, shrimp, crayfish or shellfish such as loco, and vegetables, potatoes or yuca.[1][2&...

 

Men's cycling road raceat the Games of the XXX OlympiadAlexander Vinokourov leading the breakaway group in the men's road race, approximately 10 km from the finish line on The Mall.VenueCentral and southwest London and north Surrey[1] 250 km (155.3 mi)Date28 July 2012Competitors144 from 63 nationsWinning time5:45:57Medalists Alexander Vinokourov  Kazakhstan Rigoberto Urán  Colombia Alexander Kristoff  Norway← 20082016 → C...

У этого термина существуют и другие значения, см. Маракас. Маракас Традиционные маракасы Классификация Ударный идиофон Родственные инструменты Гуиро, Кабаса[1], Кашиши  Медиафайлы на Викискладе Мара́кас, маракасы[2][3], мара́ка́[1] (кариб. maraca, мн. ч. maracas) ...

 

الدوري الإكوادوري لكرة القدم 2013 تفاصيل الموسم الدوري الإكوادوري لكرة القدم  النسخة 55،  و56  البلد الإكوادور  البطل نادي إيميلك  عدد المشاركين 12   الدوري الإكوادوري لكرة القدم 2012  الدوري الإكوادوري لكرة القدم 2014  تعديل مصدري - تعديل   الدوري الإكوادوري...

 

North Carolina-based newspaper The Gaston GazetteThe May 5, 2008, front page ofThe Gaston GazetteTypeDaily newspaperFormatBroadsheetOwner(s)GannettPublisherLucy TalleyEditorNAFounded1880LanguageAmerican EnglishHeadquarters1893 Remount Rd.Gastonia, North Carolina 28054  United StatesCirculation9,883 (as of 2018)[1]OCLC number27041214 Websitegastongazette.com The Gaston Gazette is a daily newspaper based in Gastonia, North Carolina. The newspaper was owned by Freedom Communicat...

American television series (1970–71) The Most Deadly GameGeorge Maharis, Yvette Mimieux and Ralph Bellamy in a promotional photoGenreDramaCreated byMorton S. FineDavid FriedkinWritten byMorton S. FineDavid FriedkinBernard C. SchoenfeldDirk Wayne SummersDirected byDavid FriedkinLee MaddenStarringRalph BellamyGeorge MaharisYvette MimieuxCountry of originUnited StatesOriginal languageEnglishNo. of seasons1No. of episodes12ProductionExecutive producersMorton S. FineDavid FriedkinAaron SpellingP...

 

  لمعانٍ أخرى، طالع سواك (توضيح). السواك السِّوَاك (الجمع: أَسْوِكَة وسُوك) أو الـمِسْوَاك (الجمع: مَسَاوِيك) هو قطعة خشبية من جذور شجر الأراك (الفصيلة: سلفادورا برسيكا Salvadora persica) وهي شجيرة دائمة الخضرة توجد في منطقة الجزيرة العربية في المملكة العربية السعودية۔ ويحصل عل�...

 

Son of Sadr al-Dīn Mūsā Khvajeh Ali SafaviTimur (far left) meets Khvajeh Ali Safavi (center)Safavid orderPreceded bySadr al-Dīn MūsāSucceeded bySheikh Ebrahim Personal detailsDied1427ChildrenSheikh EbrahimParentSadr al-Dīn Mūsā (father)RelativesShaykh Junayd (grandson) Khvajeh Ali Safavi (Persian: خواجه علی سیاهپوش; died 1427) was a son of Sadr al-Dīn Mūsā and grandson of Safi-ad-din Ardabili.[1][2] He assumed leadership of the Safavid order after hi...

2018 single by Luis Fonsi and Stefflon DonCalypsoSingle by Luis Fonsi and Stefflon Donfrom the album Vida LanguageSpanishEnglishReleasedJune 14, 2018 (2018-06-14)GenreLatin popreggaetonLength3:19LabelUniversal LatinUniversalSongwriter(s)Luis FonsiDyoMauricio RengifoAndrés TorresStefflon DonProducer(s)Andrés TorresMauricio RengifoLuis Fonsi singles chronology Échame la Culpa (2017) Calypso (2018) Sigamos Bailando (2018) Stefflon Don singles chronology Senseless(2018) Caly...

 

الصندوق العربي للإنماء الاقتصادي والاجتماعي الصندوق العربي للإنماء الاقتصادي والاجتماعي الأرض والسكان المركز الإداري الكويت اللغة الرسمية العربية الحكم التأسيس والسيادة التاريخ تاريخ التأسيس 16 مايو 1968  توقيع الاتفاقية 16 مايو 1968 بيانات أخرى الموقع الرسمي الموقع الر�...

 

American politician (born 1969) Austin ScottScott in c. 2022Member of the U.S. House of Representativesfrom Georgia's 8th districtIncumbentAssumed office January 3, 2011Preceded byJim MarshallMember of the Georgia House of RepresentativesIn office1996–2011Preceded byHenry BostickSucceeded byTony McBrayerConstituency165th district (1996–2003)138th district (2003–2005)153rd district (2005–2011) Personal detailsBorn (1969-12-10) December 10, 1969 (age 54)August...

WXXY redirects here. For previous uses, see WXXY (disambiguation). Radio station in Rochester, New YorkWXXORochester, New YorkFrequency91.5 MHz (HD Radio)BrandingWXXI ClassicalProgrammingFormatClassical musicSubchannelsHD2: Simulcast of WXXI AM–FMHD3: News and informationAffiliationsNational Public RadioPublic Radio ExchangeAmerican Public MediaClassical 24OwnershipOwnerWXXI Public Broadcasting CouncilSister stationsWXXIWXXI-FMWXXI-TVHistoryFirst air dateDecember 23, 1974; 49 y...

 

玉水嘉一(左)と富松正安(右) 加波山事件(かばさんじけん)とは、1884年(明治17年)9月23日に発生した栃木県令三島通庸等の暗殺未遂事件。 概要 自由民権運動の激化事件の一つであり、急進的な考えを抱いた若き民権家たちが起こした。福島事件に関わった河野広躰(河野広中の甥)等のグループが中心で、これに茨城県・下館の富松正安や栃木県内の民権家が�...