Расширяемый встраиваемый язык - Extensible Embeddable Language
Парадигма | Мультипарадигма: сценарии, императив, функциональный, объектно-ориентированный |
---|---|
Разработано | Дэвид Олофсон |
Впервые появился | 2005 |
Стабильный выпуск | 0.3.6 / 4 февраля 2014 г. |
Печатная дисциплина | Динамический |
Операционные системы | Кроссплатформенность |
Лицензия | Стандартная общественная лицензия ограниченного применения GNU |
Расширения имени файла | угорь |
Интернет сайт | угорь |
Под влиянием | |
Lua, C, Паскаль |
В Расширяемый встраиваемый язык (УГОРЬ) - это язык сценариев и программирования, разрабатываемый Дэвидом Олофсоном. EEL предназначен для сценарии в системы реального времени с частотой цикла в диапазоне кГц, например, музыкальные синтезаторы и промышленные системы управления, но также стремится к использованию в качестве независимая платформа общее назначение язык программирования.
Философия
Что касается языкового дизайна, общая идея состоит в том, чтобы найти практический баланс между мощностью, простотой использования и безопасностью. Цель состоит в том, чтобы помочь избежать многих типичных ошибок программирования, не прибегая к чрезмерно многословному синтаксису или ограниченной функциональности.
История
Первое воплощение EEL было в форме простого парсера для структурированных определений звука, используемого в звуковом движке Бесплатный и открытый исходный код игра Кобо Делюкс, SDL порт X11 игра XKobo. Это был простой интерпретатор с очень ограниченным управлением потоком и синтаксисом, сильно отличавшимся от текущих версий. Эта начальная ветвь EEL была впервые выпущена в 2002 году и до сих пор используется в Kobo Deluxe с версии 0.5.1.
В декабре 2003 года EEL был выделен в отдельный проект и подвергся серьезному переписыванию, чтобы его можно было использовать для создания сценариев в реальном времени. встроенный реология заявление. Это где переключатель с устный переводчик к компилятор /ВМ был создан, и материализовался реальный язык программирования EEL. Первый официальный релиз был выпущен в январе 2005 года. С тех пор EEL медленно развивался, движимый в основном личными и профессиональными потребностями его автора.
Функции
Общий
Язык строго не предназначен для каких-либо конкретных парадигма программирования, но поддерживает объектно-ориентированного программирования, или более конкретно, программирование на основе прототипов, через минимальный набор синтаксический сахар Особенности. Другие парадигмы, такие как функциональный, модульный и метапрограммирование также поддерживаются.
В результате избегания указатели и предоставляя полностью управляемые структурированные типы данных, EEL является «безопасным» в том смысле, что программы EEL не должны иметь возможность сбой виртуальной машины или хост-приложения.
Особенности
- C-подобный синтаксис.
- Непрозрачный Рекомендации (в отличие от сырых указатели ).
- Динамический набор текста.
- Автоматическое управление памятью.
- Обработка исключений.
- Встроенные структурированные типы данных, такие как:
- нить - неизменный нить.
- dstring - динамический нить.
- вектор - числовой фиксированного типа множество.
- множество - множество динамически типизированных элементов.
- стол - ассоциативный массив.
Пример кода
Классический привет мировая программа можно записать так:
функция экспорта 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]
Рекомендации
- ^ Лучшее за 2013 год: 31 год спустя - независимые игры на Commodore 64 Джеймс Монкман на indiegames.com (20 декабря 2013 г.)