《软件设计精要与模式》第二版推荐序一

简介:

西门子中国中央研究院首席架构师 
《软件架构的艺术》作者     李伟

张逸先生邀我为他的新著做序言,起初觉得难以应命。毕竟,一本书会成为很多人阅读学习的材料,并逐渐沉淀为社会文化的一部分而影响长远。长年的工程习惯告诉我,应该先认真阅读书稿,并且深刻理解书中鲜明的思想和观点后再下笔。但就个人目前的工作及精力,深感不能追求到如此完美的情景。然而,又意识到软件架构与设计工作对整个中国行业发展的重要和紧迫程度,决定借写序为契机,谈点关于架构和设计方面的点滴体会,做为本书的书序。

少年时代的我,充满了对科学的向往。儒乐.凡尔纳的科幻小说,把我带向了科学梦幻的世界,彷佛科学能够创造出美妙的未来世界。后来,对天文及天体物理的迷恋,把我强烈地吸引到了对伽利略、牛顿、爱因斯坦等伟人的崇拜。可笑的是,原想报考南京大学天文专业的我,被父母当头浇了一盆凉水。但是,一颗热爱科学的心一直在跳动。

整个大学的前两年,听课一直混混沌沌。直到大学三年级的时候,听了一位教授讲的数据结构课程,可以算是开启了我对计算机科学最初的认识。这是我第一次感知到计算机科学在很大程度上是研究人类智慧的学科,这也正是年轻的我所热望的专业!

毕业后,由于在国营单位这样的圈子中工作,又经历了一段混混沌沌。1992年后,面向对象的Borland C++ 及Turbo C++ 开始在世界乃至中国大陆范围内流行。半生半熟地阅读完这种全新的编程思想,仔细体会一番,又一次为人类智慧的结晶而震撼和赞叹。原来结构化的编程思想,虽然出自自然,但并不一定就是最好。人类居然可以模仿自然规律,来界定一个个关联的对象,可谓聪明和经典。

九十年代,是一个出国潮涌的时代,我也随着潮流,漂洋到北美。从那时开始,有两件事,真正把我从一个懵懵懂懂的年轻人,带到了计算机科学的智慧天堂。从而满足了专业工作人员的第一个要求,即知识的储备。

第一件是把自己所从事的研究工作,定位到了状态依赖的系统。这个方向的研究,彷佛打开了一扇大门,让我从只知道传统计算机科学的基础知识,加上有限的编程经验,真正地走向了专业知识的研究工作。进而使我深刻理解了国外为什么能够领先中国很多年,就已经能研发出很多严重状态依赖的实时系统。这也是我平生第一次,从软件系统的结构上,知晓了人类智慧的创造力。

另外,这个阶段也自然而然地接触到当时刚刚开始流行的Java这样相对纯净的面向对象编程语言所设计出来的一些系统。也很自然,工作中面对一个资深设计编程人员所设计出的模块结构和编写出的代码,科学之美的情感油然而生。期间,做为一个中国人,开始经常听到“架构”和“设计”这样两个有些陌生的词汇。最令我难忘的事,有个非常友善的同事,甚至还指导我去阅读一些有关架构和设计方面的知名著作。我也是从这个时刻开始,知道了Gang of Four的设计模式、Frank Buschmann(日后服务与西门子时,我的德国业务领导人)的架构和设计模式、Martin Fowler的著作……遗憾的是,由于当时自己所处工作环境的限制,没有能够更深入地体验出更多的东西,也没有一个合适的场合锻炼一下自己。庆幸的是,我已经比很多中国人早一些读到了一些经典的著作,学到了一些知识。

混混沌沌的我,在2003年底举家回到了祖国。当时的中国,正处于IT革命所带来的一片欣欣向荣的环境当中。由于是所谓的海归,自然有机会在这样的系统研发浪潮中冲锋在前,把自己一知半解的所谓经验使用到现实的系统研发工作中。着实轰轰烈烈的实践了一轮,却发现自己又一次迷失了:理论学习过了,实践也经历了,我该走向何方?

糊里糊涂地,无意间读到了一篇纪事报告,题目叫《最后的大师》。此文的作者是应钱学森先生的邀请,来记录自己的导师,清华大学物理系及清华大学创始人之一的叶企孙先生。叶先生早年在美国留学期间,在物理方面做出过杰出的贡献。虽然大多数后人并不知道叶先生,但是他的学生没有一个会忘记他,这包括三钱、华罗庚、李政道、杨振宁等等。可以这样说,你所知道的中国大师,大多都是他的学生。阅读完此文,颇受启发:真可谓“大师培养大师”。我非常欣赏这句话。既然我身边没有大师,就应该认真回味一下自己这些年来的学习和实践,看看是否能将既有的种种知识和经验,上升为智慧。毕竟,智慧是指导我继续工作的原始动力,并指导自己未来的创新工作。因此,我选择了阅读、学习和思考。

自己成长的这段历史,算是翻过去了。再回到张逸先生的这本《软件设计精要与模式》上来,我虽作粗略阅读,但从实践分享的视角来看,书的内容编写地非常认真。作者从自身工作的经历,分享了自己对软件设计的理解,并以设计原则这样的方式,来分享最宏观层面上的要点。总结、思考的分量,可见一斑。本书有些章节很有新意,注意到了利用自身实践过的设计模式,以真实示例的方式来介绍如何灵活使用各种设计模式。此举对读者的实际工作,颇有帮助,愿为推荐。

其实,个人成长的历程,也在一定程度上代表了中国专业从业人员的成长轨迹。中国正在面临一次深刻的变革,需要更多优秀的编程人员,优秀的设计人员,优秀的架构人员,优秀的创新人员。毕竟,一个要立足于世界之林的强国,急迫地需要能把事情做得精彩和经典的行动人员。

谨记所感,提供讨论。

 

2010年2月12日北京










本文转自wayfarer51CTO博客,原文链接:http://blog.51cto.com/wayfarer/280143,如需转载请自行联系原作者

相关文章
|
7月前
|
消息中间件 架构师 安全
重新认识架构 — 不只是软件设计
通常情况下,人们对架构的认知仅限于在软件工程中的定义:架构主要指软件系统的结构设计,比如常见的 SOLID 准则、DDD 架构。一个良好的软件架构可以帮助团队更有效地进行软件开发,降低维护成本,提高系统的可扩展性和可维护性。这里的架构定义有更多元化的理解:架构不仅是对软件开发设计和流程规范的定义,也包含了参与架构设计的人员、以及项目过程中和架构有关的活动,都可以称为架构。 从广义角度来理解架构,意味着更全面的思考和新的融合。
23 0
|
7月前
|
消息中间件 架构师 安全
重新认识架构—不只是软件设计
结合自身经历阐述架构师定位、架构活动如何保障企业、组织实现商业价值。
重新认识架构—不只是软件设计
|
设计模式 算法
重构代码设计精要
重构代码设计精要
|
设计模式 算法 程序员
代码大全2札记:软件架构中的设计
代码大全2札记:软件架构中的设计
139 0
|
设计模式 开发框架 前端开发