четверг, 10 июля 2008 г.

Выбор domain языка

Предположим нужно контроллировать некоторую автоматику. Для этих целей необходимо выбрать способ формализации алгоритмов управления. Короче и проще говоря, нужен язык со следующими, как мне кажется, требованиями:
1. Имеющий реализацию интерпретатора на Java.
2. Парсинг исходного кода в runtime'е, а не предварительно.
3. Локоничный.
4. Расширяемый словарь.
5. Возможность захватывать состояние выполнения... мммм.. как это по-русски.. continuationы.

Это может быть что угодно, функциональный, императивный, декларативный, rewriting engine, macro и.д.

Пример псевдокода, который должен писаться на целевом языке не намного более длиннее чем это:

Loop:
T = GetCurrentTemperature
State = AccordingToMode ( If (T < REQUIRED_T, On, Off) )
SetDeviceState ("HeaterDevice", State)
WaitEvent (Polled("TemperatureDevice"), ModeChange)
При этом, в момент вызова WaitEvent выполнение скрипта должно прерваться с сохранением состояния, чтобы я дальше мог продолжить выполнение после WaitEvent. Как это предполагается использовать из Java (типа того):
Script script = Script.prepare (scriptSource);
ScriptYield yield = script.run ();
eventManager.addPendingScript (yield.getScriptState(), yield.getResult());

а где-то позже, может быть очередное:
ScriptYield yield = scriptState.continue ();

Я не много хочу? :)

Update: Groovy не поддерживает cont-ions, jpython из-за отступов не получится никуда встроить толком, jruby не поддерживает (fiber в виде нитей не канает)... ищем дальше

Update: По результатам подошел TermWare.