谢国波,罗路天
(广东工业大学计算机学院,广东广州510006)
哲学,是理论化、系统化的世界观,是自然知识、社会知识、思维知识的概括和总结,是世界观和方法论的统一.哲学思想决定着我们看待问题的方式.例如:在混沌理论[1]出现之前,人们对于世界的认识只是停留在确定性和随机性的对立方面,但是众所周知,世界的任何事物都是对立统一的.随着人们思维的不断发展,人们对混沌理论的研究不断深化,最终人们提出了混沌是确定性系统的内在(秉)随机性,是确定性和随机性的辨证统一.从此混沌理论逐步走向成熟并日渐运用于社会实践当中.这个例子表明:认识对实践具有指导作用.本文对嵌入式系统的几种层次体系结构模型做了哲学分析思考.并由此进一步总结这种哲学思想以及它在社会的发展和人的学习过程中的指导作用.
文献[2]分析了层次体系结构是解决复杂过程问题的有效手段.我们通常习惯解决一个相对简单的问题,于是我们试想通过把复杂的问题进行若干简单问题的抽象,而分层正是通过抽象和信息隐藏体现了这样的一种思想,达到简化复杂问题的目的.层次型体系结构这一易理解、易实现的特征,简化了软件的设计、开发和维护工作.比如在设备驱动中的bdd(bus-dev-drv)模型-总线设备驱动模型,总线层负责驱动程序框架,设备和驱动层则各自专注于硬件和驱动相关的代码.
一个分层系统采用层次化的组织方式构建,系统中的每一层都要担任两个角色.首先,它要为结构中的上层提供服务;其次,它要作为结构中下层次的客户,调用它下层有效的相关函数.一个概念上的分层模型[3-4],如图1所示.
图1 概念上的分层模型Fig.1 Conceptual hierarchical model
层与层之间的相互联系是通过接口实现的.比如在驱动程序的框架里,应用程序调用C库里的open函数时,库函数根据open函数传入的参数执行“swi”指令,这条指令引起CPU异常,系统调用接口根据CPU异常的原因,调用不同的处理函数,从而进入内核空间执行更加复杂的业务功能.
既然分层能将一个繁杂问题一步一步简化来逐步完成,那么落实到具体问题时,应该怎么样一步一步来解决?换句话说,应该怎么样来分层解决一个复杂问题.这个问题没有确切的标准,层数过多,层与层之间的关系又会变得很复杂;层次过少,问题得不到简化.一般来说,层数的多少与问题的规模有关,问题的规模越大,层次一般来说就越多[5].问题的规模越小,层次一般来说就越少.下面,对两种嵌入式系统层次体系结构模型进行哲学理论分析.
早期的嵌入式设备中[6],它的体系结构如图2所示.
图2 早期嵌入式设备体系结构Fig.2 The early structure of embedded devices
图2中,显然是耦合度较高的一个结构,当要开发一个具有特定功能的嵌入式应用时,必须具备上述诸如硬件、驱动、操作系统和特定应用领域知识.此结构中,应用软件层通常作为一个进程,实现某些功能;操作系统层提供了完整的电源管理、进程管理、网络管理、内存管理、文件管理的抽象;硬件驱动层可以作为内核的一部分,实现了对特定外设的直接访问.这样的体系结构不管对开发人员来讲还是对于企业来讲,都是个很大的弊端.于是,文献[2]也提出了改进式的嵌入式系统层次体系结构模型,具体结构如图3所示.
图3 改进式的嵌入式体系结构Fig.3 Improved architecture for embedded system
现代嵌入式层次体系结构如图3所示,在这个嵌入式应用软件层运行的程序是由多个进程组成,它们协调共同完成一个嵌入式设备的特定功能.文献[2]分析了这种体系各个层的功能,其中一个非常重要的功能就是提高了代码的复用率.并依据此系统结构开发了一个基于ICS的多进程嵌入式应用层软件.验证了此体系结构的高效可行性.
层次体系结构应用广泛,具有易理解、易实现、提高重用率;有利于将不同层的开发任务在开发者之间进行适当的分配;具有较高的可维护性、可修改性、可扩展性等优点,文献[7-9]探讨了嵌入式软件设计方法,利用层次模型对嵌入式软件进行开发,并且都取得了不错的效果.
文献[10]探讨了冯·诺依曼计算机科学的哲学思想,从哲学的角度挖掘了计算机的结构设计必须追求逻辑简洁性.同样,这一节也从哲学的角度论证嵌入式层次体系结构模型的合理性.正如引言中提到的,哲学是世界观和方法论的统一,是人与自然,人与社会的和谐统一.哲学的核心是“求真”和“求知”,它的特点是思辨性、解释性和概括性.正如老子在《道德经》[11-12]里阐述所说:“道可道,非常道;名可名,非常名”.这句话的意思是:能够用语言表达清楚的道,就不是永恒不变的道;能够叫得出来名字,就不是永恒不变的名字.老子认为:永恒不变的“道”,是无法用语言来描述清楚的.反过来讲,就是语言的表述能力有限,特别是道理中的那些精髓部分和感情中的细微部分,更是无法用语言讲得清楚.老子往往不说道是什么,而说道不是什么,而事实上还是在说道是什么,只是不直接说道而已.我国香港著名武术家李小龙,创建的“截拳道”中的“道”和老子所提倡的“道”本质是一样的.李小龙认为拳术应该追求人性的心灵自由,即将思想从条条框框中解放出来.结合中国古代老子哲学观点,李小龙的“截拳道”[13]里提到的思想解放以及现代的实际生活,笔者认为在解决自然和实际问题,或者做社会方面的学术研究,都应该有一种“自然性”.
“自然性”在老子的《道德经》中有精辟的阐述,并且向我们论证了“尊重规律,尊重自然”的观点.道家思想对自然、规律的最根本的见解就是“规律是自然的、变化的,不为人所控制的.”对待规律的根本态度是“充分尊重规律,然后才是自然地利用规律.”[14]
“自然性”,概况性来讲就是遵循客观事物的自然规律,顺应它的规律,找出合理的解决问题的方案.这样使得自己在轻松愉快的环境氛围下从事工作而不受束缚.在嵌入式系统的体系结构模式中的研究也有这种“自然性”.上述图3相比图2更加细分了体系中的层次,每层功能简单单一,具有很好的封装性.图3层次式体系结构解决了代码复用的问题,减轻了编程人员的负担.对于编程开发人员来说,这一体系结构使程序员的思想得到解放,面对类似的问题,摆脱了重复编码的束缚,使得编程开发人员真正归于“自然”,针对一个层次的问题,可以根据程序员自己的风格喜好来编写相应的程序.对于企业来讲,它的“自然性”来自于对生产效率的需求.图3所示的层次体系结构,由于实现了代码的复用,这样一来,编程开发人员在相同的时间内可以创造出更多的价值,给企业带来更多的利润.
过程论,就是遵循事物发展的过程.要做到过程与结果的统一[15-16].事物的发展过程是质变和量变的统一,量变是事物数量的增减和次序的变动,是保持事物质的相对稳定的不显著变化,是事物渐进过程的连续性.质变是事物性质的根本变化,是事物由一种质态向另一种质态的飞跃,它是事物渐进过程和连续性的中断.质变是量变的必然结果,量变是质变的必要准备,质变和量变是相互渗透的.只有把握好了质变和量变的辨证关系,才能真正理解过程和结果的辨证统一关系.
所谓过程就是要层层地剖析,把事物的发展划分成不同的过程.每个过程解决好了,结果就会顺其自然地解决了.过程论在嵌入式系统体系结构模型中也得到充分体现.从嵌入式系统这个整体性因素考虑,它是非常繁杂的.但是,站在哲学角度,我们应该考虑整体与局部的关系.整体包含着局部,局部在整体中体现.在从事嵌入式系统开发工作时,既要对整个系统的最终功能有充分的了解,但更多的是要重视系统在开发过程中的每个环节——局部性.嵌入式产品在用户看来,他们关注的是系统的整体功能,而站在编程开发人员的角度上来说,则要注重每个小功能的具体实现.这种现实工作需求要求我们做到整体与局部的统一,过程与结果的统一.在事物发展的过程中,也要分清主要因素和非主要因素.从企业的发展角度上来讲.企业的生产效率是主要因素,所以人才、技术是根本.而企业的地理位置、办公环境在发展的过程中,相对而言就是非主要因素.站在技术工程开发人员的角度,开发人员的工作效率是主要因素.而嵌入式层次体系结构的开发模式大大提高了开发人员的工作效率,符合社会发展的客观规律.
从我国当代社会发展规律来看,也有这种层次型的“自然性”.在十一届三中全会之前,中华民族和中国人民一直在探寻着一条符合中国国情的发展道路,经过了艰苦卓绝的探索,终于探索出一条强国之路——改革开放.这条道路符合中国的国情,顺应了时代的发展.但是随着改革的深入,一系列矛盾日益凸显.为了解决这些日益凸显的矛盾,勇敢智慧的中国人民继续深化改革,符合历史发展的规律.这也是一种“自然性”的体现.
对于学习嵌入式系统的编程人员来说,学习就是一个过程,遵循着“过程论”.嵌入式系统具有学科交叉广、入门门槛高的特点,只要踏踏实实做好每一个细节,长期坚持这个学习过程,结果就会发生质的改变.在“过程论”当中,量变是质变的准备,质变是量变的必然结果.所谓“为山九仞 功亏一篑”,也是这个道理.所以在嵌入式的学习方式上,也同样遵循图3所示的层次模型.
层次型体系结构具有很多其他结构无可比拟的优势.哲学思想已经渗入到我们生活的方方面面,哲学思想不仅是门社会学科,更是一门工程理论学科.本文根据前人已经提出来的嵌入式系统系统模型,做了一定的哲学理论分析,并提出社会发展的过程也具有“自然性”,以及“过程论”对于嵌入式系统开发人员的影响.我们要充分挖掘层次型体系结构中丰富的哲学思想,这对于日后的科学研究工作具有丰富的指导意义.
[1]禹思敏.混沌系统与混沌电路——原理、设计及其在通信中的应用[M].西安:西安电子科技大学出版社,2011.
[2]万相奎,陈建明.改进的嵌入式软件架构及其应用层开发模式[J].计算机工程与设计,2009,30(23):5358-5360.Wan X K,Chen J M.Improved software architecture for embedded system and its development pattern for application layer[J].Computer Engineering and Design,2009,30(23):5358-5360.
[3]Bruce Powel Douglass.C嵌入式编程设计模式[M].刘旭东译.北京:机械工业出版社,2012.
[4]华清远见嵌入式培训中心著,嵌入式Linux C语言应用程序设计[M].北京:人民邮电出版社,2011.
[5]孙爱昌,金茂忠,刘超.软件体系结构综述[J].软件学报,2002,13(7):1228-1235.Sun A C,Jin M Z,Liu C.Overviews on software architecture research[J].Journal of Software,2002,13(7):1228-1235.
[6]博韦·西斯特.深入理解Linux内核[M].3版.陈莉君,张琼声,张宏伟,译.北京:中国电力出版社,2007.
[7]严和平,邓荣佐,王知衍.一种用于嵌入式应用开发的软件体系结构[J].计算机应用研究,2005,22(11):89-91.Yan H P,Deng R Z,Wang Z Y.A Kind of software architecture for embedded application development[J].Application Research of Computers,2005,22(11):89-91.
[8]许晓伟,王知衍,曹晓叶.一种面向嵌入式开发的软件体系结构[J].计算机科学,2007,34(8):258-260.Xu X W,Wang Z Y,Cao X Y.A kind of software architecture for embedded system development[J].Computer Science,2007,34(8):258-260.
[9]张邦术.嵌入式软件设计之思想与方法[M].北京:北京航空航天出版社:2009.
[10]任晓明,潘沁.冯·诺依曼的计算机科学哲学思想[J].科学技术哲学研究,2011,28(4):18-22.Ren X M,Pan Q.On Von Neumann’s pllilosophy of computer science[J].Studies in Philosophy of Science and Technology,2011,28(4):18-22.
[11]张松辉.国学金典导读—老子[M].北京:中国国际广播出版社,2011.
[12]老子著,雅瑟编.道德经大全集[M].北京:新世界出版社,2011.
[13]张建广.李小龙传奇[M].北京:中国青年出版社,2008.
[14]叶舟.国学九家智慧[M].广西:广西科学技术出版社,2008.
[15]全国工程硕士政治理论课教材编写组著,自然辨证法—在工程中的理论与应用[M],北京:清华大学出版社,2012.
[16]逢锦剧,陶得麟.马克思主义基本原理概论[M].北京:高等教育出版社,2007.