software.wikisort.org - Язык_программирования

Search / Calendar

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

Squirrel
Класс языка мультипарадигменный
Тип исполнения интерпретируемый, JIT
Появился в 2003
Автор Альберто Демичелис
Выпуск 3.2 (10 февраля 2022; 3 месяца назад (2022-02-10))
Испытал влияние Lua, Python, Javascript, C++
Лицензия Лицензия zlib/libpng
Сайт squirrel-lang.org

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



Отличия от Lua



Типы данных


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

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


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


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

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

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

  function gen_random(max)
  {
    local last = 42;
    local IM = 139968;
    local IA = 3877;
    local IC = 29573;
    for (;;) // бесконечный цикл
    {
      yield (max * (last = (last * IA + IC) % IM) / IM);
    }
  }

  local randtor = gen_random(100);

  for (local i = 0; i < 10; i++)
     print(">" + resume randtor + "\n");

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

  class BaseVector
  {
    constructor(x, y, z)
    {
        this.x = x;
        this.y = y;
        this.z = z;
    }
    x = 0;
    y = 0;
    z = 0;
  }

  class Vector3 extends BaseVector
  {
    function _add(other) // перегрузка оператора '+', см. подробности http://www.squirrel-lang.org/squirreldoc/reference/language/metamethods.html
    {
      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-компилятор.


Приложения, использующие язык



Игры



Неигровые приложения



См. также



Примечания


  1. «Welcome to Vice City Multiplayer website!» Архивная копия от 30 марта 2015 на Wayback Machine. vicecitymultiplayer.com
  2. Biplab Kumar Modak. Scripting Code::Blocks // C++ Application Development with Code::Blocks. — Packt Publishing Ltd, 2013. — ISBN 9781783283422.

Ссылки





Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.org внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.org - проект по пересортировке и дополнению контента Википедии