Svoboda | Graniru | BBC Russia | Golosameriki | Facebook

Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Альтернативы
Недавние
Show all languages
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

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

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

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

Отличия от Lua

  • Синтаксис языка ближе к C/C++
  • Поддержка классов на уровне языка
  • Для создания полей у таблиц нужно использовать специальный оператор <-, таким образом, невозможно создать новое поле, случайно совершив ошибку в имени
  • Lua разрабатывается на протяжении более 25 лет и для него создано большое количество библиотек, 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;
    }
    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.

Ссылки

Эта страница в последний раз была отредактирована 15 июня 2023 в 12:06.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).