Jump to content

Расширяемый встраиваемый язык

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

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

Философия

[ редактировать ]

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

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

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

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

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

Основные моменты

[ редактировать ]

Пример кода

[ редактировать ]

Классическую программу hello world можно записать следующим образом:

export function main<args>
{
    print("Hello, world!\n");
    return 0;
}

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

export function main<args>
{
    print("Recursion test 1:\n");
    
    procedure recurse(arg)
    {
        print("arg = ", arg, "\n");
        if arg
            recurse(arg - 1);
    }
    
    recurse(10);
    
    print("Recursion test 2; Mutual Recursion:\n");
    
    procedure mrecurse2(arg);
    
    procedure mrecurse1(arg)
    {
        print("arg = ", arg, "\n");
        if arg
            mrecurse2(arg);
    }
    
    procedure mrecurse2(arg)
    {
        mrecurse1(arg - 1);
    };
    
    mrecurse1(10);
    
    print("Recursion test 2; Mutual Recursion with Function Reference:\n");
    
    procedure mrrecurse1(arg, fn)
    {
        print("arg = ", arg, "\n");
        if arg
            fn(arg, fn);
    }
    
    local mrr2 = procedure (arg, fn)
    {
        mrrecurse1(arg - 1, fn);
    };
    
    mrrecurse1(10, mrr2);
    
    print(Recursion tests done.\n);
    return 0;
}

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

[ редактировать ]

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

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

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

Приложения

[ редактировать ]

Кобо Делюкс

[ редактировать ]

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

  1. Лучшее за 2013 год: 31 год спустя — независимые игры на Commodore 64 Джеймса Монкмана на indiegames.com (20 декабря 2013 г.)
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1968d5290dae5a2e0266e6fb2314d576__1676666160
URL1:https://arc.ask3.ru/arc/aa/19/76/1968d5290dae5a2e0266e6fb2314d576.html
Заголовок, (Title) документа по адресу, URL1:
Extensible Embeddable Language - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)