LINUX.ORG.RU
 
adarovsky

Обновился FSME


0

0

FSME - это моя программа по созданию конечных автоматов. Написана под Qt. Добавилась возможность удобно посылать событие самому себе, проверка синтаксиса вводимого текста (из моей старой курсовой) + некоторые мелкие улучшения.

Доступно только с CVS. Файловый релиз сделать пока не могу.

cvs -d:pserver:anonymous@cvs.sourceforge.net :/cvsroot/fsme login cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net :/cvsroot/fsme co fsme

cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net :/cvsroot/fsme co fsmc

Генерацию текстов для Python обновлю попозже.

>>> Взять с CVS

НАУЧИ КОМПЬЮТЕР ВАРИТЬ КОФЕ

управление электрическими цепями с помощью компьютера
лучший подарок для техногика; только открытые программы
http://www.unicontrollers.com/products/unc01x

[#]  

Re: Обновился FSME

Не компилячится. Может, надо что-нить заапгрейдить? Дистрибутив ASPLinux 9.0, QT v3.1.1, gcc v3.2.2

l -I../diagram -I.. -I/usr/lib/qt-3.1/include -I.ui/ -I.moc/ -o .obj/semantic.o syntax/semantic.cpp syntax/semantic.cpp: In member function `bool Semantic::BlockList::canBreak() const': syntax/semantic.cpp:133: `compose2' undeclared (first use this function) syntax/semantic.cpp:133: (Each undeclared identifier is reported only once for each function it appears in.) make[1]: *** [.obj/semantic.o] Ошибка 1 make[1]: Выход из каталог `/home/tigra/foo/fsme-0.8/ui' make: *** [sub-ui] Ошибка 2

anonymous ()
[#]  

Re: Обновился FSME

конечные автоматы - это finite state machines? так уже давно есть неплохая QFSM (http://qfsm.sourceforge.net/).

anonymous ()
[#]  

Re: Обновился FSME

объясните в двух словах, что такого революционного в таком подходе ?

anonymous ()
[#] Ответ на: Re: Обновился FSME от anonymous 06.04.2004 15:08:22  

Re: Re: Обновился FSME

это типа мегаответ маздайщикам-RAD'овцам ;)))

anonymous ()
[#] Ответ на: Re: Re: Обновился FSME от anonymous 06.04.2004 15:57:16  

Re: Re: Re: Обновился FSME

А qfsm исходники на C++ и python генерит? imho, это разные вещи.

anonymous ()
[#] Ответ на: Re: Обновился FSME от anonymous 06.04.2004 14:36:33  

Re: Re: Обновился FSME

gmgm... i fixed that.. it's due to move compose2 from std to __gnucxx... I'll try to fix it in the nearest future.

anonymous ()
[#] Ответ на: Re: Обновился FSME от anonymous 06.04.2004 14:36:33  

Re: Re: Обновился FSME

Hey, can't you tell me where is compose2 on gcc-3.2.2?

P.S. It works well on gcc-3.3.x

anonymous ()
[#] Ответ на: Re: Обновился FSME от anonymous 06.04.2004 14:36:33  
adarovsky

Re: Re: Обновился FSME

There are #if GNU_MINOR.blablabla at the beginning of the file. Try to decrease it from 3 to 2. It should help

**** ()
[#] Ответ на: Re: Обновился FSME от anonymous 06.04.2004 15:08:22  
adarovsky

Re: Re: Обновился FSME

Logic description will be greatly simplified.

**** ()
[#] Ответ на: Re: Обновился FSME от anonymous 06.04.2004 15:08:22  

Re: Re: Обновился FSME

> объясните в двух словах, что такого революционного в таком подходе ?

дело в том что этот подход даёт немало выгод при правильном применении и просто незаменим в некоторых случаях (создание сложных сервисов с кучей состояний и сложной схемой переходов между ними). Я не хочу строить из себя сноба и гуру программирования, но лично мне знакомство с этим методом серьёзно облегчило жизнь, главным образом при борьбе со сложностью. Сейчас у меня вызывает недоумение его неизвестность. Советую познакомится с ним поближе:

http://www.softcraft.ru/auto.shtml

anonymous ()
[#] Ответ на: Re: Обновился FSME от anonymous 06.04.2004 15:08:22  

Re: Re: Обновился FSME

(вдогонку) вот пример навскидку:

Есть сервис, выполняющий ряд запрашиваемых клиентом функций. Раскладываем сервисные функции, запрашиваемые клиентом, на блоки выполняющие некоторые законченые действия и переводящие систему из одного определённого состояния в другое (как это сделать - это вопрос конкретного сервиса и опыта разработчика). Далее пишем функцию переходов между вычленеными состояниями, дающую адрес следующей функции-действия (или смещение в массиве-обойме таких же функций) на основе адреса предыдущей и текущего состояния (вот они автоматы!), и организуем цикл переходов, где один прогон цикла это:

1) если выполнено условие выхода (заготовка обработана или безнадёжно испорчена :) ) конец цикла, иначе:

2) определение следующей функции-действия (замена инструмента) с помощью функции переходов,

3) вызов функции-действия (обработка инструментом заготовки) из массива-обоймы по адресу или смещению от предыдущей

Выгодность такого подхода заключается в том, что легко добавляются операции-обёртки (всё в одном месте - в теле цикла), например:

1) общение с базой данных легко переводится на транзакции привязанные к определённым состояниям системы - транзакция стартует перед вызовом функции-действия, коммит производится если функция-действие вернулась без ошибок, а откат, соответственно, если была ошибка,

2) тайминг операций организуется также тривиально - оборачиванием вызова функции-действия началом и концом тайминга соответственно.

Самовосстановление из состояния полома так же тривиально - производится очистка действий последней сломавшейся функции-действия (для базы данных это просто откат) и её повтор. При превышении лимита поломок на одну функцию-действие сервис возвращает ошибку и состояние системы перед поломкой, с которого при устранении неполадки производится рестарт запрошенной функции сервиса вдальнейшем.

anonymous ()
[#] Ответ на: Re: Re: Обновился FSME от anonymous 07.04.2004 21:12:08  
filin

Re: Re: Re: Обновился FSME

(ещё раз вдогонку ;) ) пример сервиса я взял из своей практики, смотри проект GAR на моей страничке - http://filine.home.cern.ch/filine/, правда я его сильно переделал и скоро выложу реинкрнированную версию, но для ознакомления сгодится

** ()
[#]  

Re: Обновился FSME

дык наконец-то про нити можно забыть?:)

anonymous ()
[#] Ответ на: Re: Обновился FSME от anonymous 08.04.2004 15:59:10  
adarovsky

Re: Re: Обновился FSME

Не совсем. Нельзя про нити забывать. Рано. Есть программирование логики приложений, а есть разбивка их на параллельные куски. Ничем не пересекающиеся вещи.

Для программирования с нитями лучше использовать сети Петри, но и автомат может играть тут не последнюю роль.

Автомат можно представить как матекс с логикой, если в генерации текста добавить матекс на функции А. Будет очень интересно.

**** ()