tag:blogger.com,1999:blog-68273632805925329572024-02-08T08:24:51.703+02:00cat **/* | grep яAkshaalhttp://www.blogger.com/profile/05677582369584740657noreply@blogger.comBlogger1125tag:blogger.com,1999:blog-6827363280592532957.post-87828215752499460962008-07-10T16:48:00.003+03:002009-02-22T16:32:00.178+02:00Выбор domain языкаПредположим нужно контроллировать некоторую автоматику. Для этих целей необходимо выбрать способ формализации алгоритмов управления. Короче и проще говоря, нужен язык со следующими, как мне кажется, требованиями:<br />1. Имеющий реализацию интерпретатора на Java.<br />2. Парсинг исходного кода в runtime'е, а не предварительно.<br />3. Локоничный.<br />4. Расширяемый словарь.<br />5. Возможность захватывать состояние выполнения... мммм.. как это по-русски.. continuationы.<br /><ad></ad><br />Это может быть что угодно, функциональный, императивный, декларативный, rewriting engine, macro и.д.<br /><br />Пример псевдокода, который должен писаться на целевом языке не намного более длиннее чем это:<pre><br />Loop:<br /> T = GetCurrentTemperature<br /> State = AccordingToMode ( If (T < REQUIRED_T, On, Off) )<br /> SetDeviceState ("HeaterDevice", State)<br /> WaitEvent (Polled("TemperatureDevice"), ModeChange)<br /></pre>При этом, в момент вызова WaitEvent выполнение скрипта должно прерваться с сохранением состояния, чтобы я дальше мог продолжить выполнение после WaitEvent. Как это предполагается использовать из Java (типа того):<br /><pre>Script script = Script.prepare (scriptSource);<br />ScriptYield yield = script.run ();<br />eventManager.addPendingScript (yield.getScriptState(), yield.getResult());</pre><br />а где-то позже, может быть очередное:<br /><pre>ScriptYield yield = scriptState.continue ();</pre><ad2></ad2><br />Я не много хочу? :)<br /><br /><b>Update:</b> Groovy не поддерживает cont-ions, jpython из-за отступов не получится никуда встроить толком, jruby не поддерживает (fiber в виде нитей не канает)... ищем дальше<br /><br /><b>Update:</b> По результатам подошел <a href="www.gradsoft.ua/products/termware_eng.html">TermWare</a>.Akshaalhttp://www.blogger.com/profile/05677582369584740657noreply@blogger.com0