Що таке ELI?
Extern Logic Interpreter або ELI (англійською читається як "ілай") – це спеціальний засіб у вигляді динамічно зв'язаної бібліотеки, що підключається до користувацької аплікації. Його безпосереднє призначення – максимально абстрагувати програму від логічних операцій, які до того ж можна було б з легкістю модифікувати без перекомпіляції основної програми. В ідеальному варіанті користувацька аплікація взагалі може обійтись без визначеного алгоритму роботи, все що від неї потрібно – надати певний функціонал для взаємодії з оточенням, наприклад читання або збереження файлів, вивід інформації для користувача тощо. Логіку роботи цих уособлених механізмів та алгоритм за яким буде працювати програма побудує ELI.
Уявіть, що у Вас є клієнт-серверна аплікація, яка приймає та розсилає певні файли за певною схемою. Завдяки ELI Ви зможете не тільки змінювати схему розсилки (наприклад, включати та виключати з неї робочі станції, чи визначати перелік файлів, що надсилаються на кожну станцію), але й змінювати сам алгоритм передачі. Припустимо, змінився розмір буферу для передачі даних. Вам не потрібно заново компілювати аплікацію, достатньо лише змінити значення однієї змінної у скрипті ELI. А якщо аплікація виконується в циклі, то завдяки директиві #include можна змінювати логіку роботи програми взагалі "на льоту".
Наприклад, я використовую скрипти ELI, щоб коригувати параметри утиліти обміну з ftp-сервером на більш ніж сотні комп'ютерів. При цьому можливості ELI дають мені змогу змінювати різні параметри в залежності від налаштувань кожного робочого місця. І все це одним скриптом.
Більше того, ELI сам може відігравати роль аплікації, розширюючи свої можливості за рахунок підключення зовнішніх бібліотек. Все, що потрібно для того, аби створити свою власну програму, користуючись можливостями ELI, це файл скрипта та маленька аплікація, що під'єднає до себе бібліотеку інтерпретатора та запустить трансляцію скрипту. Ця аплікація входить до складу дистрибутива ELI.