什么才是状态机?什么又是状态?
来源:互联网 发布:基本公共卫生考核软件 编辑:程序博客网 时间:2024/05/01 02:04
一关于状态机的认识
最近我正在重新认识状态机的一些内容,这个东西很重要至少目前我知道无论是在硬件和软件上面都有状态机这个东西,而在控制上现代控制理论里也有状态方程的概念,并且几乎是现代控制理论的基石,另外运动控制理论里运动群的概念其本质上也是状态机。
对于软件还有控制方面我多多少少都知道一些,可是非常可惜的是到底什么是状态机,硬件,软件及控制上侧重点都不一样,做运动控制软件理解状态机甚至比理解面向对象还要重要,为什么要这样说,做过运动控制的估计都见过PLC的梯形图程序,有多少人意识到这个横行运动控制领域几十年的东西是个状态机,呵呵又多少人能意识到,状态机曾被很多软件人员看成比较玄奥的东西,中国竟然有那么多人在天天从事着基于状态机的开发工作,呵呵又有多少人曾经想过,很多人都认为比较简单的PLC梯形图程序,为什么能完成运动控制里大部分的应用(认为梯形图程序简单的不包括我),估计意识到那是基于状态机编程的人不多。
很多人都认为状态机是理论上的东西,离我们比较远,其实我想说的是,不是那样的。我们几乎每个人天天都在用状态机,生活当中你有取舍嘛!呵呵如果你有的话,有可能你就通过状态机进行选择呢。或许我认为这句话并不过分,这个世界有可能是基于对象的,但是这个世界的运动绝对是基于状态的,我们做了这么多年的程序。世界是由模块构成的,而描述模块的变化应当是状态。状态机不但能做算法,还能做框架。我最近正在看LUA的源码,可惜我几乎就LUA一提出状态机,大家就认为和词法分析有关。其实不是这样的。
我所找到的状态机的定义是下面这个(有限状态机):
我的第一个问题:什么是状态机?
FSM 定义:总的来说,有限状态机系统,是指在不同阶段会呈现出不同的运行状态的系统,这些状态是有限的、不重叠的。这样的系统在某一时刻一定会处于其所有状态中的一个状态,此时它接收一部分允许的输入,产生一部分可能的响应,并且迁移到一部分可能的状态。
五个要素:状态,事件,条件,动作,迁移
这个是纯软件的定义,或者我认为这个概念太笼统,控制上状态并不是离散的,所以有限状态机并不能和控制上的状态机进行统一,至于无限状态机,我还没有清楚的弄懂它的概念。
我的第二个问题:什么是状态?上面的概念其实太笼统。
二怎么基于状态机去做程序架构
我总结了一下过去我所见过的一些程序架构,其中LUA和OPENGL的程序架构,我确信他们是基于状态机的程序架构,PLC的后台肯定也是,还有就是我所见过的我所在行业内的一些软件也是基于状态机的程序架构,另外很多协议的解析及生成原理,包括其设计也都是基于状态机的,不单单只有TCP/IP。诚然国内和国外在就状态机的认识上,国外比我们深刻的多。
有兴趣的希望大家能一起学,多多交流,目前我主要是在看LUA的源码,希望能通过它的源码获得一些启示。至于运动控制上的状态机,是我必须要搞明白的,希望感兴趣的大家能多多交流。目前就运动控制方面的状态机设计,倒是总结了一些东西但是很不成熟。
- 什么才是状态机?什么又是状态?
- 又是五味瓶,什么滋味都有
- 什么是TCP/IP 什么又是UDP
- 戏说什么是类什么又是方法
- 什么是ANSI,什么又是UNICODE
- 什么是ANSI,什么又是UNICODE呢?
- 你是弱者,又有什么了不起
- 页面状态还是组件?到底什么才是交互的中心?
- 什么才是拥有
- 什么才是兴趣?
- 什么才是好工作
- 什么才是ajax!!!!!?????
- 什么才是爱
- 什么才是爱
- 什么才是真
- 什么才是代码质量
- 什么才是高手??
- 什么才是根本
- 声明式事务管理
- 使用MRTG监控路由、交换设备(上)
- SEO价格考
- 使用MRTG监控路由、交换设备(下)
- getHibernateTemplate().method()与getSession().method()
- 什么才是状态机?什么又是状态?
- mrtg实验
- mrtg 安装指南
- PIC的PWM模块学习经验
- RRDTOOL使用说明
- iBATIS框架技术----一个简单的应用
- 用mrtg监测win2003流量
- 迭代算法与递归算法的概念及区别
- 什么是i18n?