共5条
1/1 1 跳转至页
[推荐]量子编程范型
quantum programming (qp)编程范型
作者Miro Samek 用两个基础新概念:
层次状态机和active object-based computing.
扩展了传统的面向对象编程范型。
http://www.quantum-leaps.com
我还没仔细看,不过我喜欢新思想:)
以前看过miro的文章:
“Portable Inheritance and Polymorphism in C”
http://www.embedded.com/97/fe29712.htm
“State-Oriented Programming”
http://www.embedded.com/2000/0008/0008feat1.htm
觉得很是不错, 真希望看到他的新书
Practical Statecharts in C/C++
http://www.programming-reviews.com/Practical_Statecharts_in_CC_Quantum_Programming_for_Embedded_Systems_with_CDROM_1578201101.html
Model reactive systems with UML statecharts
Efficiently code statecharts directly in C/C++
Rapidly build embedded software with statechart-based frameworks
[align=right][color=#000066][此贴子已经被作者于2003-7-17 19:08:20编辑过][/color][/align]
关键词: 推荐 量子 编程 范型
Active object[主动对象] (a.k.a. actor)
状态机对象有自己的执行线程,通过交换事件实例与其他主动对象通讯.
解释:
主动对象最重要的特征是它的不透明封装外壳. 外壳将对象内部结构和外界环境严格隔离. 无论从外部还是内部,只有事件实例能通过该外壳.
通过事件通讯的自治软件对象(actors)概念在70年代后期出现, 当时Carl Hewitt和同事[Hewitt+ 71] 提出了actors概念. 在80年代, actors在分布式人工智能界很盛行,就象今天的agents一样. 90年代, ROOM[Selic+ 94]一类的方法论修改actors用于实时计算. 最近, UML规范引入的主动对象概念,本质上与actor概念同义[OMG 01]. 在多任务系统中,主动对象是控制线程的根, 并通过事件异步地启动其他对象. UML进一步引入状态图[statecharts], 用以对事件驱动的主动对象建模.
Active object computing[主动对象计算]
一种实现方法,将并行应用组织成为主动对象的集合, 每个对象都有一个执行线程, 对象间互相协作. 在这样的应用中, 主动对象间不共享内存和其它任何资源, 仅通过发送和接受事件来通讯, 并用完全运行[run-to-completion (RTC)]的方式来处理每个事件.
解释:
可能主动对象计算模型最重要的特点就是: 可以用纯顺序技巧来完成各对象内部的编程, 从而避免了传统多线程中可能出现的大多数问题(如race conditions, 死锁, starvation, 优先级逆转). 而主动对象应用能获得并行编程的所有好处, 如快速任务级响应, 充分利用CPU, 可量测性[scalability]等.
一般从主动对象应用构架来实例化应用. 应用构架提供对象和事件的基类, 以及线程安全的事件交换机制.与应用不同, 构架必须明确处理并行相关的问题.
Application framework[应用构架]
一个互相协作的类的集合, 为特定类型的软件构成一个可重用设计. 构架提供体系结构方面的指导, 将设计分化为各抽象类, 并定义类的责任和相互间的协作关系. 通过继承[subclassing]和组合构架的类, 开发者将构架定制到具体的应用上[Gamma+ 95].
解释:
构架级的重用会颠倒应用和基础库之间的关系. 当你使用类库时, 你编写应用主体并调用想重用的代码. 而你使用构架时, 是重用主体并自己写被调用代码[Gamma+ 95].
你可以将构架看作应用的骨架, 你需要补充血肉以创建完整的应用.你将你的代码附加在构架上特定的设计扩展点. 通过扩展构架内定义的类, 你可以定制构架的行为. 另外, 实际上每个构架还包含一个兼容的类库, 你可以将该类库作为组件工具包来使用.
Behavioral inheritance[行为继承]
层次主体机中, 父状态(或爷状态)和子状态之间的一种关系[Samek+ 00].
解释:
层次状态机中的子状态(嵌套状态)只需要定义与父状态(外围状态)的不同之处.子状态可以方便地分享(重用)父状态的行为, 只要简单地忽略公共处理事件, 这些事件由高层状态自动处理. 这种状态嵌套语义允许子状态继承父状态的所有行为, 因此称为行为继承.
QP中的行为继承, 就象OOP中的类继承, 组合抽象和分层, 可以建立状态的完整分类[taxonomies]. 同类继承一样, 行为继承遵循相同的generalization(Liskov替代原则扩展到嵌套状态)基本准则. 另外, 同其它种类的继承一样, 行为继承也通过programming-by-difference支持重用.
Class[类]
类定义对象的接口和实现. 类指定对象的内部表示, 并定义对象可执行的操作[Gamma+ 95].
共5条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |