Evgeny_CDАрхитектор (17.05.2009 22:01, просмотров: 3091)
Наткнулся на интересный язык - Squirrel -> --> both compiler and virtual machine fit together in about 6k lines of C++ code. http://ru.wikipedia.org/wiki/Squirrel
http://squirrel-lang.org/
Основные особенности
Динамическая типизация
Поддержка классов и наследования
Управление памятью и сборка мусора
Делегаты
Генераторы
Работа с исключениями
Малый размер
Отличия от 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;
Реализация
Исходный код компилируется в байт код, который впоследствии выполняется на виртуальной машине. Для задач критичных по времени имеется JIT компилятор.