Squirrel

Squirrel
Squirrel
Класс языка:

мультипарадигменный

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

интерпретируемый, JIT

Появился в:

2003

Автор(ы):

Альберто Демичелис

Релиз:

3.0.3 (19 июня 2012)

Испытал влияние:

Lua, Python, Javascript, С++

Лицензия

Лицензия zlib/libpng

Сайт:

squirrel-lang.org

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

Содержание

Основные особенности

  • Динамическая типизация
  • Поддержка классов и наследования
  • Управление памятью и сборка мусора
  • Делегаты
  • Генераторы
  • Работа с исключениями
  • Малый размер

Отличия от Lua

  • Синтаксис языка ближе к C/C++
  • Поддержка классов на уровне языка
  • Для создания полей у таблиц нужно использовать специальный оператор <-, таким образом невозможно создать новое поле, случайно ошибившись в имени
  • Lua разрабатывается на протяжении более 15 лет и для него создано большое количество библиотек, Squirrel относительно молодой язык.

Типы данных

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

Значения в Squirrel могут быть следующих типов:

  • null - неопределенное значение. Переменные типа Null могут иметь только одно значение - null;
  • bool - логический тип, может иметь значение true или false;
  • integer - целые числа (32 бита или больше);
  • float - вещественные числа (32 бита или больше);
  • string - текстовые строки - может хранить стоки в кодировке ASCII (1 байт) или unicode (2 байта);
  • table - таблица - может хранить набор значений, представленных парами ключ/значение (называемых "слоты");
  • array - массив - последовательность значений переменной длины, индексируемых целыми числами. Индексы начинаются с 0;
  • function - функция - значение типа функция можно "вызвать", передав ему параметры и получив результат выполнения;
  • generator - генератор - функция, выполнение которой может быть приостановлено и возобновлено с помощью операторов yield/resume;
  • class - как и таблица, классы имеют набор слотов, однако, классы могут быть унаследованы а на их основе можно создавать объекты. После создания класса к нему можно добавлять слоты в любой момент;
  • instance объект, созданный из класса. Так же содержит слоты, однако добавлять новые слоты в объект нельзя;
  • thread - поток выполнения ;
  • userdata - пользовательские данные - участки памяти и указатели, которые используются приложением, использующим squirrel;

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

Вычисление факториала

  function factorial(x)
  {
    if (x == 0) {
      return 1;
    }
    else {
      return x * factorial(x-1);
    }
  }

Генератор случайных чисел:

  function gen_random(max) {
    local last=42
    local IM = 139968;
    local IA = 3877;
    local IC = 29573;
    for(;;) {  //loops forever
      yield (max * (last = (last * IA + IC) % IM) / IM);
    }
  }
 
  local randtor = gen_random(100);
 
  for(local i = 0; i < 10; i += 1)
     print(">"+resume randtor+"\n");

Классы и наследование:

  class BaseVector {
    constructor(...)
    {
      if(vargv.len() >= 3) {
        x = vargv[0];
        y = vargv[1];
        z = vargv[2];
      }
    }
    x = 0;
    y = 0;
    z = 0;
  }
 
  class Vector3 extends BaseVector {
    function _add(other)
    {
      if(other instanceof ::Vector3)
        return ::Vector3(x+other.x,y+other.y,z+other.z);
      else
        throw "wrong parameter";
    }
    function Print()
    {
      ::print(x+","+y+","+z+"\n");
    }
  }
 
  local v0 = Vector3(1,2,3)
  local v1 = Vector3(11,12,13)
  local v2 = v0 + v1;
  v2.Print();

Реализация

Исходный код компилируется в байт код, который впоследствии выполняется на виртуальной машине. Для задач критичных по времени имеется JIT компилятор.

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "Squirrel" в других словарях:

  • Squirrel — Squir rel (skw[ e]r r[e^]l or skw[i^]r ; 277), n. [OE. squirel, OF. esquirel, escurel, F. [ e]cureuil, LL. squirelus, squirolus, scuriolus, dim. of L. sciurus, Gr. si oyros; skia shade + o yra tail. Cf. {Shine}, v. i.] 1. (Zo[ o]l.) Any one of… …   The Collaborative International Dictionary of English

  • squirrel — early 14c., from Anglo Fr. esquirel, O.Fr. escurel (Fr. écureuil), from V.L. *scuriolus, dim. of *scurius squirrel, variant of L. sciurus, from Gk. skiouros a squirrel, lit. shadow tailed, from skia shadow (see SHINE (Cf …   Etymology dictionary

  • squirrel — [skwʉr′əl, skwʉrl] n. pl. squirrels or squirrel [ME squirel < OFr escuriuel < VL * scuriolus, dim. of * scurius, for L sciurus < Gr skiouros, squirrel < skia, shadow (see SHINE) + oura, tail: see URO 2] 1. any of a family (Sciuridae)… …   English World dictionary

  • Squirrel — (engl.: Hörnchen) bezeichnet: den SQuirreL SQL Client die Programmiersprache Squirrel (Programmiersprache) Diese Seite ist eine Begriffsklärung zur Unterscheidung mehrerer …   Deutsch Wikipedia

  • squirrel — ► NOUN ▪ an agile tree dwelling rodent with a bushy tail, typically feeding on nuts and seeds. ► VERB (squirrelled, squirrelling; US also squirreled, squirreling) 1) (squirrel away) hide (money or valuables) in a safe place. 2) …   English terms dictionary

  • Squirrel — Taxobox name = Squirrel image width = 250px image caption = Eastern Gray Squirrel, Sciurus carolinensis regnum = Animalia phylum = Chordata classis = Mammalia ordo = Rodentia familia = Sciuridae subdivision ranks = Genera subdivision = Many, see… …   Wikipedia

  • squirrel — squirrelish, squirrellike, adj. /skwerr euhl, skwur / or, esp. Brit., /skwir euhl/, n., pl. squirrels, (esp. collectively) squirrel, v., squirreled, squirreling or (esp. Brit.) squirrelled, squirrelling. n. 1. any of numerous arboreal, bushy… …   Universalium

  • squirrel — n. & v. n. 1 any rodent of the family Sciuridae, e.g. the red squirrel, grey squirrel, etc., often of arboreal habits, with a bushy tail arching over its back, and pointed ears. 2 the fur of this animal. 3 a person who hoards objects, food, etc.… …   Useful english dictionary

  • squirrel — I. noun (plural squirrels; also squirrel) Etymology: Middle English squirel, from Anglo French escurel, esquirel, from Vulgar Latin *scuriolus, diminutive of scurius, alteration of Latin sciurus, from Greek skiouros, probably from skia shadow +… …   New Collegiate Dictionary

  • Squirrel — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Squirrel peut faire référence à : Squirrel (langage de programmation), un langage de programmation orienté objet Squirrel (beurre de cacahuètes), une …   Wikipédia en Français


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»