Здравствуйте, VoidEx, Вы писали:
VE>В догонку такой ещё вопрос. Вот хочу я создать N state'ов, каждый из которых соединён с последующим, и так по кругу. Могу? VE>Скорее всего да, но как?
Влад дал ссылки на описание, да примеров пока мало, в репо, но будут, в самих описаниях в том числе и на вики странице в репо есть достаточно примеров разных автоматов. Тот пример что Вы представили довольно простой, соединить несколько состояний не составит труда, библиотека расчитана на автоматы любой сложности от простых до иерархических больших, с параллельными состояниями. Например светофор:
[statemachine(
<#
state auto
{
state green
{
entry / green_on;
exit / green_off;
after_10s => yellow;
}
state yellow
{
entry / yellow_on;
exit / yello_off;
after_3s => red;
}
state red
{
entry / red_on;
exit / red_off;
after_10s => yellow_blinking;
}
state yellow_blinking
{
entry / yellow_blink_on;
exit / yellow_blink_off;
after_3s => green;
}
}
state manual_operating
{
}
#>
)]
class TrafficFsm
{
}
в нем циклически переходы из одного состояния в другое по таймеру, небольшой задел для иерархических состояний с возможностью ручного управления светофором и тп. Пока сами события таймеров надо генерировать вручную в будущем планируется добавить соотв. событие after как в стандарте UML. По описаниям должно быть ясно, я планировал добавить больше примеров в репо, но пока это было не главной задачей, активность пользователей делает библиотеку лучше, если есть потребность то задавайте вопросы если что неясно в описаниях, чтобы библиотекой было удобно пользоваться.
Здравствуйте, VoidEx, Вы писали:
VE>Если честно, проще не стало. Два этих примера понятны, но непонятно, что там дают макросы, а вот это непонятно вообще.
макросы для библиотеки дают очень много, то что автомат анализируется полностью на этапе компиляции и генерируется полностью без применения кодирования через DSL в конечный код, в реал тайме уже не нужны проверки и анализ переходов, которые в иерархических автоматах могут быть сложными, скорость обработки события в разы выше чем в обычных библиотеках автоматов. И скорость разработки выше потому что не надо вручную кодировать, а код из диаграммы переходит в ДСЛ, потом через макрос генерируется код автомата в классе.
Re[34]: Недостатки Nemerle
От:
Аноним
Дата:
18.07.12 14:28
Оценка:
Здравствуйте, CodingUnit, Вы писали:
CU>Здравствуйте, VoidEx, Вы писали:
VE>>Если честно, проще не стало. Два этих примера понятны, но непонятно, что там дают макросы, а вот это непонятно вообще.
CU>макросы для библиотеки дают очень много, то что автомат анализируется полностью на этапе компиляции и генерируется полностью без применения кодирования через DSL в конечный код, в реал тайме уже не нужны проверки и анализ переходов, которые в иерархических автоматах могут быть сложными, скорость обработки события в разы выше чем в обычных библиотеках автоматов. И скорость разработки выше потому что не надо вручную кодировать, а код из диаграммы переходит в ДСЛ, потом через макрос генерируется код автомата в классе.
Еще бы ему визуальный редактор
Здравствуйте, WolfHound, Вы писали:
WH>Просто по тому, что задачи, которые решаются в их терминах в природе практически не встречаются.
Они нужны для всевозможных оптимизаций, поскольку у каждой вычислительной модели есть N свойств и особенностей, при чем среди которых есть например сложность и порог вхождения. Это значит, что на простецком языке вроде JS или PHP простоватые программисты создают вагоны продуктов, а если их заставить делать "по правильному", то все эти продукты никогда не появятся, просто потому, что время переключения внимания,время погружения в проблему слишком велики, а скорости создания и усвоения информации ничтожно малы даже у гениальных людей.
Опаньки — это внезапно объясняет популярность JS, пхп и прочих вещей которые по твоему мнению "не нужны".
В кратце это значит, что Лев Толстой не сможет написать всю возможную литературу и прочую печатную продукцию которая только существует.
Помнится ты под словомо сложность понимал исключительно колмгоровскую сложность, а порог вхождения для тебя пустой звук. Так шта для тебя абзац выше будет казаться пустым местом — расслабься, это ожидаему.
WH>Ты еще раз перечитай, что hi_octane пишет
Любой евангелизм "а перечитай ..." есть тоже самое что и предложение попробовать наркоту. Если ты понял чего говорит VoidEx, то предполагается, ты на любое его заблждуение можешь эдакий тест оформить. Опаньки, а у тебя только "а перечитай ...". Вобщем как евангелисты вы с Владом где слева от нуля.
Здравствуйте, Ikemefula, Вы писали:
I>Любой евангелизм "а перечитай ..." есть тоже самое что и предложение попробовать наркоту. Если ты понял чего говорит VoidEx, то предполагается, ты на любое его заблждуение можешь эдакий тест оформить. Опаньки, а у тебя только "а перечитай ...". Вобщем как евангелисты вы с Владом где слева от нуля.
В точку! Остается задуматься почему это так. Одно из самых простых объяснений — мы не евангелисты.
Иметь свою точку зрения и отстаивать ее еще недостаточно чтобы называться евангилистом. Как раз реальные евангилисты (это, к слову, должность в компаниях вроде МС) зачастую вообще не верят в то про то что они проповедуют. Им ставят задачу и они любыми методами ее решают. Собственно задача у их обычно одна — приучать людей к некоторой мысли или технологии.
У нас же нет таких задач. Ты спросил, мы ответили. Веришь ты нам, разделяешь ли ты наши взгляды, понимаешь ли нас, нам в общем-то все равно. Точнее печально, если нас старательно не понимают, но это ни разу не наша проблема. Это ваша проблема, так как это вы приходите и пытаетесь что-то навязать нам. Ну, уж извините, ваша точка зрения нам не кажется правильной.
Лично меня в ваших с VoidEx-ом сообщениях раздражает, то что вы делаете вид, что приходите подискутировать или даже что-то спросить, но на деле у вас уже есть все ответы и вы хотите только по самоутверждаться (что ли?).
Если вы уверены в своей правоте и считаете какую-то там догму, то зачем ходить в форум где вашу точку зрения не разделяют и пытаться "задрать" местных посетителей?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Аноним, Вы писали:
А>Еще бы ему визуальный редактор
Планируется перевод из xml экспорта известных редакторов UML типа Sparx, Visual Paradigm, в код автомата, это тоже самое что иметь свой визуальный редактор.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, CodingUnit, Вы писали:
А>наглядная схема дсля головного мозга, но без пояснений.
Здесь быстрый код того что хотелось, описание синтаксиса состояний / переходов надо смотреть в описании здесь https://github.com/CodingUnit/Nemerle.Statechart/wiki
А>Кто-то временные интервалы замешал в схему переходов конечного автомата
а чем временные интервалы не событие?
Re[36]: Недостатки Nemerle
От:
Аноним
Дата:
19.07.12 05:19
Оценка:
Здравствуйте, CodingUnit, Вы писали:
CU>Здравствуйте, Аноним, Вы писали:
А>>Еще бы ему визуальный редактор
CU>Планируется перевод из xml экспорта известных редакторов UML типа Sparx, Visual Paradigm, в код автомата, это тоже самое что иметь свой визуальный редактор.
это конечно важно, но удобно смотреть и менять по месту.
Здравствуйте, Аноним, Вы писали:
А>это конечно важно, но удобно смотреть и менять по месту.
что значит менять по месту? Из графического представления в код дсл или как вход для макроса для анализа и генерации, что может делаться почти нажатием одной кнопки.
Здравствуйте, VladD2, Вы писали:
I>>Любой евангелизм "а перечитай ..." есть тоже самое что и предложение попробовать наркоту. Если ты понял чего говорит VoidEx, то предполагается, ты на любое его заблждуение можешь эдакий тест оформить. Опаньки, а у тебя только "а перечитай ...". Вобщем как евангелисты вы с Владом где слева от нуля.
VD>В точку! Остается задуматься почему это так. Одно из самых простых объяснений — мы не евангелисты.
Вы именно евангелисты, потому что везде агитируете за немерле.
VD>У нас же нет таких задач. Ты спросил, мы ответили. Веришь ты нам, разделяешь ли ты наши взгляды, понимаешь ли нас, нам в общем-то все равно. Точнее печально, если нас старательно не понимают, но это ни разу не наша проблема. Это ваша проблема, так как это вы приходите и пытаетесь что-то навязать нам. Ну, уж извините, ваша точка зрения нам не кажется правильной.
То есть, когда тебя не спрашивали, а ты влез и брякнул "Попробуй немерле" это называется "Ты спросил, мы ответили" ? Буду знать на будущее.
VD>Лично меня в ваших с VoidEx-ом сообщениях раздражает, то что вы делаете вид, что приходите подискутировать или даже что-то спросить, но на деле у вас уже есть все ответы и вы хотите только по самоутверждаться (что ли?).
Тебе просто хочется видеть это.
VD>Если вы уверены в своей правоте и считаете какую-то там догму,
А тебе не кажется, что за тобой следят ? Ну или заговор на рсдн с целью дискредитации Немерле ?
>то зачем ходить в форум где вашу точку зрения не разделяют и пытаться "задрать" местных посетителей?
А что, в форуме немерле запрещено иметь мнение отличное от твоих с WH ? Не знал.
Здравствуйте, VladD2, Вы писали:
VE>>Пример такого ДСЛя и пример использования можешь привести?
VD>Nemerle.Statechart — ДСЛ для описания конечных автоматов. VD>Nemerle.Xml — ДСЛ для генерации XML/HTML. VD>Nemerle.WUI.Reactive — ДСЛ для описания интерактивного веб-интерфейса.
ДСЛ для КА это нормально, а дальше так себе. Есть — хорошо. Нету — тоже не плохо.
Здравствуйте, hi_octane, Вы писали:
_>А теперь ДЗЕН вынесенный из этого проекта: _>Ближе к концу мы уже не стремились лепить библиотечные навороты и расширять фреймворк, а скорее старались заменять макросами рукопашный код насовсем но локально. Т.е. гораздо проще разработать какую-то феньку нужную в 5 местах и без параметров, и какую-то очень похожую феньку (даже внешне точно такую-же) для 5 других мест, чем лепить универсальную, конфигурируемую через кучу параметров мега-фень, способную покрыть все эти 10 мест и ещё 20 гипотетических похожих.
Вот эта часть интересует больше всего. Можешь выложить пару примеров на таких вот макросах и сам код который получился в результате ?