ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
22 декабря
156797
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 компилятор.