Linux程序设计模式

上传人:ni****g 文档编号:458136734 上传时间:2024-01-09 格式:DOC 页数:9 大小:252.50KB
返回 下载 相关 举报
Linux程序设计模式_第1页
第1页 / 共9页
Linux程序设计模式_第2页
第2页 / 共9页
Linux程序设计模式_第3页
第3页 / 共9页
Linux程序设计模式_第4页
第4页 / 共9页
Linux程序设计模式_第5页
第5页 / 共9页
点击查看更多>>
资源描述

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

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

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

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

4、则:策略同机制分离,接口同引擎分离。05. 简洁原则:设计要简洁,复杂度能低则低。06. 吝啬原则:除非确无它法,不要编写庞大的程序。07. 透明性原则:设计要可见,以便审查和调试。08. 健壮原则:健壮源于透明与简洁。09. 表示原则:把知识叠入数据以求逻辑质朴而健壮。10. 通俗原则:接口设计避免标新立异。11. 缄默原则:如果一个程序没什么好说的,就沉默。12. 补救原则:出现异常时,马上退出并给出足够错误信息。13. 经济原则:宁花机器一分,不花程序员一秒。14. 生成原则:避免手工hack,尽量编写程序去生成程序。15. 优化原则:雕琢前先要有原型,跑之前先学会走。16. 多样原则:

5、决不相信所谓“不二法门”的断言。17. 扩展原则:设计着眼未来,未来总比预想来得快。给大家推荐一本书 UNIX 编程艺术这不是一本讲如何编程的书,而是一本讲UNIX设计哲学的书,当然也适应于Linux。这本书是我来威胜工作后,同事们推荐我读的第 本书(范律推荐)。第一本书是UNIX环境高级编程(邱云松推荐),第三本书是UNIX网络编 程 第 2卷 进程间通信(张栋推荐),第四本书是 Linux 设备驱动程序第三版(刘利方推 荐), 第五本书是 linux 程序设计第三版(我推荐)。什么是机制与策略? 我们通过下面文字来理解什么是机制与策略: 设备驱动程序的作用在于提供机制,而不是提供策略。 X

6、(windows) 致力于提供一套机制,而不是策略。策略相对短寿,而机制才会长存。前端实现策略,后端实现机制。 策略和机制是按照不同的时间尺度变化的,策略的变化要远远快于机制。 把策略同机制揉成一团有两个负面影响:一来会使策略变得死板,难以适应用户需求的改 变,二来也意味着任何策略的改变都极有可能动摇机制。相反,将两者剥离,就有可能在探索新策略的时候不足以打破机制。另外,我们也可以更容 易为机制写出较好的测试(因为策略太短命,不值得花太多精力在这上面)。机制与策略的实例:(下面的讲解过程中,我会提出一些问题。如果回答错误将会有一个小小的惩罚)1. Uboot 的环境变量(bootcmd)2.

7、Linux 驱动程序(examples/scull)3. cmdline 中的 mtdparts 解析程序(linux-2.6.32.2/drivers/mtd/cmdlinepart.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, r

8、un-parts )7. 嵌入式数据库(TokyoCabinet , Sqlite3 )8. 脚本语言(SHELL, TCLSH, Lua, TCC, python )9. 图形界面库(qt,pyGTK)MCI嵌入式系统中的 机制与策略:MCU(Micro Control Unit,微控制器单元)片上集成外围器件,没有外扩总线,不带 MMU单元是其的主要特征,比如 ARM,7 Cortex-M3 系列等。与之相对的是 MPU(Micro Processor Unit ,微处理器单元)不带外围器件(例如存储器),是高度集成的通用结构的处理器,比如 ARM92,6 Cortex-A8 系列等。在资

9、源非常紧张的深度嵌入式系统中,同样也有使用机制与策略设计模式的成功案例与成熟 方案。例如:1. p Forth , eForth , RetroForthForth 是六十年代末期,由 Charles H. Moore 发展出来在天文台使用的电脑自动控制系统 及程序设计语言,允许使用者很容易组合系统已有的简单指令,定义成为功能较复杂的高阶指令。forth是一种可扩展的,交互式的语言。最初为小型的嵌入式电脑设计的,现在它几乎可以 在任何主流的芯片上解译和编译,甚至已有多种可直接运行forth指令的芯片。http:/retroforth.org/http:/ Paw n, Paw n+freeRT

10、0SAn embedded scripting Ianguage formerly called Small.paw n is a simple, typeless, 32-bit exte nsion lan guage with a C-like syn tax. A paw n source program is compiled to a bi nary file for optimal executi on speed. The paw n compiler outputs P-code (or bytecode) that subseque ntly runs on an abst

11、ract mach ine. Execution speed, stability, simplicity and a small footprint were essential design criteria for both the language and the abstract machine.http:/ n/paw n.htm3. eLua, nutlua(Lua+Nut/OS)eLua sta nds for Embedded Lua and the project aims to offer the fullimplementation of the Lua Program

12、ming Language to the embedded world, extending it with specific features for efficie nt and portable software embedded developme nt.http:/ Forth开发的。他们相信开发高性能代码的最快方法是使 用Forth ,加上使用汇编语言来重写最内层的循环。按照最近与著名的In focom 高级游戏开发者的谈话,他们的游戏解释器也是用Forth写成的。Un ison World为CP/M操作系统开发了许多游戏,全部都是用 FIG-Forth 编写的。按他 们技术总监M

13、arc de Groot 的说法,把一个基于 Z80的游戏移植到6502或者MC6809 上, 典型的时间不多于3个月。美国Federal Express (联邦快递)公司的手持式行李分捡系统的程序是用Forth 编写的。项目经理Gene Farrar说,他可以按需要在几个星期内升级新固件,相比而言,其它的小 组维护C语言代码则至少需要6个月的时间。1990年11月哥伦比亚航天飞机的4个载荷中有3个是用Forth 编程的。按设计团队 之一 Johns Hopkins Universitys Applied Physics Laboratory的 John Hayes 说法,他们选择Forth

14、来解决飞行中的硬件问题,灵活性是一个主要的因素。SUN公司把Forth 用于它的工作站可编程 Boot ROM中,以每天500-1000台的速度发 货,是可编程 Forth 系统中数量最大的。1994年IEEE 1275-1994 将Forth 用于BOOT(初始配置)固件的标准,这也是POWER PC通用硬件平台的基础。在电影终结者II :世界末日中,Cyberdyne Systems T1000 系统的特技效果是基于 Morphing软件包Forth 产生的。Pleo是一只可爱的小恐龙,是由富士康公司研发的电子宠物,所有Pleo的个性都是通过PAWN的脚本实现。官方网站:著名的第人称射击类游戏CS反恐精英就是使用了 Pawn脚本语言来控制游戏。而另两款著名的3D 即时策略类游戏魔 兽争霸3和RPG类在线游戏魔兽世界中也大量使用lua脚本。愤怒的小鸟也 使用lua脚本。仪还有在移动设备上 一直很火热的游戏机制与策略设计模式在游戏中的应用是最为广泛的,常常关卡的设计和场景的变换都是利用 脚本语言来完成策略部分。而画面的渲染和动画的着色这交给图形引擎库来完成机制功能。Terminal 中的机制与策略:Terminal 平台大量使用了机制与策

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

最新文档


当前位置:首页 > 办公文档 > 活动策划

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