(战略管理)Linux程序设计模式(机制与策略)

上传人:管****问 文档编号:119573375 上传时间:2020-01-19 格式:DOC 页数:8 大小:715.54KB
返回 下载 相关 举报
(战略管理)Linux程序设计模式(机制与策略)_第1页
第1页 / 共8页
(战略管理)Linux程序设计模式(机制与策略)_第2页
第2页 / 共8页
(战略管理)Linux程序设计模式(机制与策略)_第3页
第3页 / 共8页
(战略管理)Linux程序设计模式(机制与策略)_第4页
第4页 / 共8页
(战略管理)Linux程序设计模式(机制与策略)_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《(战略管理)Linux程序设计模式(机制与策略)》由会员分享,可在线阅读,更多相关《(战略管理)Linux程序设计模式(机制与策略)(8页珍藏版)》请在金锄头文库上搜索。

1、Linux程序设计模式机制与策略什么是设计模式(Design pattern)?设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、软件设计经验的总结。使用设计模式是为了提高代码或模块的重用、让程序更容易被他人理解、提高代码可靠性和可维护性。同时,通过学习设计模式可以降低解决一般性问题的开发难度。Linux程序设计模式的起源和发展Linux程序的设计模式起源于Unix文化,是Unix哲学的重要组成部分,而Linux本身就是Unix的一个发展分支。Unix哲学说来不算是一种正规设计方法,它是自下而上的,而不是自上而下的。Unix哲学注重实效,立足于丰富的经验。

2、你不会在正规方法学和标准中找到它,它更接近于隐性的半本能的知识,即Unix文化所传播的专业经验。它鼓励那种分清轻重缓急的感觉,以及怀疑一切的态度,并鼓励你以幽默达观的态度对待这些。什么是Unix哲学?Unix管道的发明人、Unix传统的奠基人之一Doug McIlroy在McIlroy78中曾经说过:I. 让每个程序就做好一件事。如果有新任务,就重新开始,不要往原程序中加入新功能而搞得复杂。II. 假定每个程序的输出都会成为另一个程序的输入,哪怕那个程序还是未知的。输出中不要有无关的信息干扰。避免使用严格的分栏格式和二进制格式输入。不要坚持使用交互式输入。III. 尽可能早地将设计和编译的软件

3、投入试用, 哪怕是操作系统也不例外,理想情况下, 应该是在几星期内。对拙劣的代码别犹豫,扔掉重写。IV. 优先使用工具而不是拙劣的帮助来减轻编程任务的负担。工欲善其事,必先利其器。后来他这样总结道(引自Unix的四分之一世纪):Unix哲学是这样的:一个程序只做一件事,并做好。程序要能协作。程序要能处理文本流,因为这是最通用的接口。从整体上来说,可以概括为以下几点:01.模块原则:使用简洁的接口拼合简单的部件。02.清晰原则:清晰胜于机巧。03.组合原则:设计时考虑拼接组合。04.分离原则:策略同机制分离,接口同引擎分离。05.简洁原则:设计要简洁,复杂度能低则低。06.吝啬原则:除非确无它法

4、,不要编写庞大的程序。07.透明性原则:设计要可见,以便审查和调试。08.健壮原则:健壮源于透明与简洁。09.表示原则:把知识叠入数据以求逻辑质朴而健壮。10.通俗原则:接口设计避免标新立异。11.缄默原则:如果一个程序没什么好说的,就沉默。12.补救原则:出现异常时,马上退出并给出足够错误信息。13.经济原则:宁花机器一分,不花程序员一秒。14.生成原则:避免手工hack,尽量编写程序去生成程序。15.优化原则:雕琢前先要有原型,跑之前先学会走。16.多样原则:决不相信所谓“不二法门”的断言。17.扩展原则:设计着眼未来,未来总比预想来得快。给大家推荐一本书UNIX 编程艺术这不是一本讲如何

5、编程的书,而是一本讲UNIX设计哲学的书,当然也适应于Linux。这本书是我来威胜工作后,同事们推荐我读的第二本书(范律推荐)。第一本书是UNIX环境高级编程(邱云松推荐),第三本书是UNIX网络编程 第2卷 进程间通信(张栋推荐),第四本书是Linux设备驱动程序第三版(刘利方推荐),第五本书是linux程序设计第三版(我推荐)。什么是机制与策略?我们通过下面文字来理解什么是机制与策略:设备驱动程序的作用在于提供机制,而不是提供策略。X(windows)致力于提供一套机制,而不是策略。策略相对短寿,而机制才会长存。前端实现策略,后端实现机制。策略和机制是按照不同的时间尺度变化的,策略的变化要

6、远远快于机制。把策略同机制揉成一团有两个负面影响:一来会使策略变得死板,难以适应用户需求的改变,二来也意味着任何策略的改变都极有可能动摇机制。相反,将两者剥离,就有可能在探索新策略的时候不足以打破机制。另外,我们也可以更容易为机制写出较好的测试(因为策略太短命,不值得花太多精力在这上面)。机制与策略的实例:(下面的讲解过程中,我会提出一些问题。如果回答错误将会有一个小小的惩罚)1.Uboot的环境变量(bootcmd)2.Linux驱动程序(examples/scull)3.cmdline中的mtdparts解析程序(linux-2.6.32.2/drivers/mtd/cmdlinepart

7、.c)4.udev的rules文件自动执行U盘脚本(60-removable-storage.rules)5.udev的net.agent,实现USB网卡的自动挂接(80-drivers.rules)6.BusyBox工具集介绍(sed,awk,inetd,chat,crond,find,grep,getty-login-bash,start-stop-daemon,run-parts)7.嵌入式数据库(TokyoCabinet,Sqlite3)8.脚本语言(SHELL,TCLSH,Lua,TCC,python)9.图形界面库(qt,pyGTK)MCU嵌入式系统中的机制与策略:MCU(Micr

8、o Control Unit,微控制器单元)片上集成外围器件,没有外扩总线,不带MMU单元是其的主要特征,比如ARM7,Cortex-M3系列等。与之相对的是MPU(Micro Processor Unit,微处理器单元)不带外围器件(例如存储器),是高度集成的通用结构的处理器,比如ARM926,Cortex-A8系列等。在资源非常紧张的深度嵌入式系统中,同样也有使用机制与策略设计模式的成功案例与成熟方案。例如:1.pForth,eForth,RetroForthForth是六十年代末期,由Charles H. Moore发展出来在天文台使用的电脑自动控制系统及程序设计语言,允许使用者很容易组

9、合系统已有的简单指令,定义成为功能较复杂的高阶指令。forth是一种可扩展的,交互式的语言。最初为小型的嵌入式电脑设计的,现在它几乎可以在任何主流的芯片上解译和编译,甚至已有多种可直接运行forth指令的芯片。http:/retroforth.org/http:/ Pawn, Pawn+freeRTOSAn embedded scripting language formerly called Small.pawn is a simple, typeless, 32-bit extension language with a C-like syntax. A pawn source progr

10、am is compiled to a binary file for optimal execution speed. The pawn compiler outputs P-code (or bytecode) that subsequently runs on an abstract machine. Execution speed, stability, simplicity and a small footprint were essential design criteria for both the language and the abstract machine.http:/

11、 eLua, nutlua(Lua+Nut/OS)eLua stands for Embedded Lua and the project aims to offer the full implementation of the Lua Programming Language to the embedded world, extending it with specific features for efficient and portable software embedded development.http:/ 的许多投币游戏机都是用 Forth 开发的。他们相信开发高性能代码的最快方

12、法是使用 Forth ,加上使用汇编语言来重写最内层的循环。按照最近与著名的 Infocom 高级游戏开发者的谈话,他们的游戏解释器也是用 Forth 写成的。Unison World 为 CP/M 操作系统开发了许多游戏,全部都是用 FIG-Forth 编写的。按他们技术总监 Marc de Groot 的说法,把一个基于 Z80 的游戏移植到 6502 或者 MC6809 上,典型的时间不多于 3 个月。美国 Federal Express (联邦快递)公司的手持式行李分捡系统的程序是用 Forth 编写的。项目经理 Gene Farrar 说,他可以按需要在几个星期内升级新固件,相比而言

13、,其它的小组维护 C 语言代码则至少需要 6 个月的时间。1990 年 11 月哥伦比亚航天飞机的 4 个载荷中有 3 个是用 Forth 编程的。按设计团队之一Johns Hopkins Universitys Applied Physics Laboratory的 John Hayes 说法,他们选择 Forth 来解决飞行中的硬件问题,灵活性是一个主要的因素。SUN 公司把 Forth 用于它的工作站可编程 Boot ROM 中,以每天 500-1000 台的速度发货,是可编程 Forth 系统中数量最大的。 1994 年 IEEE 1275-1994 将 Forth 用于 BOOT (

14、初始配置) 固件的标准,这也是 POWER PC 通用硬件平台的基础。在电影终结者 II :世界末日中, Cyberdyne Systems T1000 系统的特技效果是基于 Morphing 软件包 Forth 产生的。Pleo是一只可爱的小恐龙,是由富士康公司研发的电子宠物,所有Pleo的个性都是通过PAWN的脚本实现。官方网站:著名的第一人称射击类游戏CS反恐精英就是使用了Pawn脚本语言来控制游戏。而另两款著名的3D即时策略类游戏魔兽争霸3和RPG类在线游戏魔兽世界中也大量使用lua脚本。还有在移动设备上一直很火热的游戏愤怒的小鸟也使用lua脚本。机制与策略设计模式在游戏中的应用是最为广泛的,常常关卡的设计和场景的变换都是利用脚本语言来完成策略部分。而画面的渲染和动画的着色这交给图形引擎库来完成机制功能。Terminal中的机制与策略:Terminal平台大量使用了机制与策略的设计模块。在这些方案中,有些做到很简单,有些则做得很灵活。但不管怎样,它们都为解决实际问题做出了重要的贡献。1. analysis统计分析模块实时库中的部分数据是通过分析计算从电表上采集的数据而得来的,Analysis.i

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 经营企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号