Расширяемый встраиваемый язык - Extensible Embeddable Language

УГОРЬ
ПарадигмаМультипарадигма: сценарии, императив, функциональный, объектно-ориентированный
РазработаноДэвид Олофсон
Впервые появился2005; 15 лет назад (2005)
Стабильный выпуск
0.3.6 / 4 февраля 2014 г.; 6 лет назад (2014-02-04)
Печатная дисциплинаДинамический
Операционные системыКроссплатформенность
ЛицензияСтандартная общественная лицензия ограниченного применения GNU
Расширения имени файлаугорь
Интернет сайтугорь.olofson.сеть
Под влиянием
Lua, C, Паскаль

В Расширяемый встраиваемый язык (УГОРЬ) - это язык сценариев и программирования, разрабатываемый Дэвидом Олофсоном. EEL предназначен для сценарии в системы реального времени с частотой цикла в диапазоне кГц, например, музыкальные синтезаторы и промышленные системы управления, но также стремится к использованию в качестве независимая платформа общее назначение язык программирования.

Философия

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

История

Первое воплощение EEL было в форме простого парсера для структурированных определений звука, используемого в звуковом движке Бесплатный и открытый исходный код игра Кобо Делюкс, SDL порт X11 игра XKobo. Это был простой интерпретатор с очень ограниченным управлением потоком и синтаксисом, сильно отличавшимся от текущих версий. Эта начальная ветвь EEL была впервые выпущена в 2002 году и до сих пор используется в Kobo Deluxe с версии 0.5.1.

В декабре 2003 года EEL был выделен в отдельный проект и подвергся серьезному переписыванию, чтобы его можно было использовать для создания сценариев в реальном времени. встроенный реология заявление. Это где переключатель с устный переводчик к компилятор /ВМ был создан, и материализовался реальный язык программирования EEL. Первый официальный релиз был выпущен в январе 2005 года. С тех пор EEL медленно развивался, движимый в основном личными и профессиональными потребностями его автора.

Функции

Общий

Язык строго не предназначен для каких-либо конкретных парадигма программирования, но поддерживает объектно-ориентированного программирования, или более конкретно, программирование на основе прототипов, через минимальный набор синтаксический сахар Особенности. Другие парадигмы, такие как функциональный, модульный и метапрограммирование также поддерживаются.

В результате избегания указатели и предоставляя полностью управляемые структурированные типы данных, EEL является «безопасным» в том смысле, что программы EEL не должны иметь возможность сбой виртуальной машины или хост-приложения.

Особенности

Пример кода

Классический привет мировая программа можно записать так:

функция экспорта main {    print («Привет, мир!»); возвращаться 0;}

Ниже приводится пример рекурсивный функция:

функция экспорта main {    print ("Рекурсивный тест 1:"); процедура рекурсивный (аргумент) {        печать ("аргумент =", аргумент, ""); если arg recurse (arg - 1); }        рекурсивный (10); print ("Тест рекурсии 2; Взаимная рекурсия:"); процедура mrecurse2 (аргумент); процедура mrecurse1 (аргумент) {        печать ("аргумент =", аргумент, ""); если аргумент mrecurse2 (аргумент); }        процедура mrecurse2 (аргумент) {        mrecurse1 (arg - 1); }; mrecurse1 (10); print («Тест рекурсии 2; Взаимная рекурсия со ссылкой на функцию:»); процедура mrrecurse1 (arg, fn) {        печать ("аргумент =", аргумент, ""); если аргумент fn (arg, fn); }        местный mrr2 = процедура (arg, fn) {        mrrecurse1 (arg - 1, fn); }; mrrecurse1 (10, mrr2); print (Рекурсивные тесты выполнены.); возвращаться 0;}

Внутренности

Исходный код EEL компилируется в байт-код на заказ ВМ, который имеет набор команд относительно высокого уровня, предназначенный для минимизации количества команд и, следовательно, накладных расходов. EEL VM - это регистр на основе и "без стека", т. е. не полагаться на C стек вызовов для управления контекстами виртуальных машин.

Базовый метод управления памятью - это подсчет ссылок, который позволяет автоматическое управление памятью с детерминированной синхронизацией без необходимости одновременной сборки мусора.

ВМ использует «списки неопределенности» для отслеживания промежуточных объектов, созданных внутри выражений и т.п., что значительно упрощает обработку исключений и устраняет необходимость в активном подсчете ссылок в каждой отдельной операции.

Приложения

Кобо Делюкс

Kobo Deluxe - это приложение от EEL.[1]

Рекомендации

  1. ^ Лучшее за 2013 год: 31 год спустя - независимые игры на Commodore 64 Джеймс Монкман на indiegames.com (20 декабря 2013 г.)

внешняя ссылка