当前位置: 首页 > news >正文

Think HY 读《观止-微软》一书有感

8月中旬在豆瓣上有一本书吸引了我,这本书便是<<观止> > ,英文名<<ShowStopper>> 。 这本书讲述的是微软在八十年代末九十年代初设计和开发NT内核的过程,所以书名下还有一个冗长的副标题--微软创建NT和未来的夺命狂奔(The Breakneck Race to Create Windows NT and the Next Generation at Microsoft)。Windows NT完成于93年年中,而这本书的英文版也于94年6月发布,时隔15年其中文版终于能与我们见面。

 

与前几年技术专家李维写的<<Borland传奇>> 不 同,本书的作者Pascal Zachary是文科出身,这本书写作风格更像报告文学。 这本书面向的读者还有非技术人员,所以对技术和行业以及软件本身的分析和描述很少,作者关注的是人,设计、开发、测试Windows NT的工程师。作者不惜笔墨的介绍他们的个人成长史、工作、家庭。所以看过此书感觉软件开发过程好像就是与人不同沟通的过程,在软件项目中,这个过程所花 的时间可能比与机器交流的时间还多。

 

书中的主人翁是David Cutler , 加入微软之前,此公就职于DEC,设计了大名鼎鼎的VMS系统,因为在DEC的"棱镜"取消了,一怒之下出走DEC,而被盖茨慧眼识中收入麾下。 David Cutler加入微软之后一直在考虑着设计一款全面超越那帮博士们设计的Unix,而当时盖茨刚从Windows操作系统中尝到了甜头,雄心勃勃的正准备 打造一款为21世界准备的操作系统 ,于是,两个人为了这个共同的理想开启了NT项目。

 

Culter最初为NT内核的设计制定了三个目标: 1 可移植性:创造出一个可以适合每一种硬件的操作系统。2 可靠性:  用“防弹”系统来结束不必要的崩溃。3 个性化:NT应该灵活十足,它将拥有不止一种用户界面。面对可移植性的问题,Cutler决定用高级语言来实现NT系统,这意味着NT会很大,是的,最终 发布的NT版本是很大,但硬件行业的飞速发展帮了NT的忙。而对于可靠性和个性化的问题,Cutler大胆的在NT中采用了微内核设计方式,可这要付出速 度的代价,Cutler和他的团队最终用高超的编程技巧弥补了速度的不充。

 

90年,微软与IBM在OS/2项目上分道扬镳,OS/2项目的人马加入到Cutler的团队,微软决定让支持更美观的界面和更好的易用性的 Windows与追求可移植性、可靠性的NT内核合流, 这次合流让微软能集中精力打造Windows NT这款改变世界的操作系统。

 

本书后面三章写得比较草率,作者啰嗦着BUG的更改过程和团队成员心理状态,没有站在更高的角度分析软件工程的得与失,也没有全面的介绍Windows NT对软件业的影响,这样的内容可能只能在布鲁克斯 的<<人月神话> >找到,对文科背景的作 者勉为其难。

总的来说,这是本不错的书,NT系统发布一年,作者能将这项复杂的工程活动描述得如此传神,实属不易。感谢Pascal和中文版的译者将本书带给我们,让我们能重历那无比艰辛而又激昂的NT创建过程。

微软的张亚勤博士评价此书:

“合上这本书的时候你会发现,软件不仅是智慧的结晶,也是信仰、尊严和魅力的代名词。“

而我,作为一个刚进入软件行业的新人,从此书中看到的是软件开发过程的复杂、艰辛和疯狂,正如书中所述,研发软件的过程是世界上最复杂的智力活动,而正是那些复杂才成就了Cutler们的伟大,我们应该向伟大的程序员致敬。

在软件开发方面的,这本书带给我以下几点思考:

1. 吃你自己的狗粮 eating your own dog food,只有通过吃狗粮,创作者才能发现由软件系统各个部分相互作用产生的问题。这一点与Unix的成功原因相似,The UNIX Time- Sharing System一文中曾提到Unix的开发者同是也是Unix系统的使用者,所以他们会不断的改进系统。

2.  构建与测试的重要性,Cutler甚至亲自驻扎在构建实验室,这两个环节决定了系统的最终质量。

3.  编码质量、可读性的重要性。 Cutler的代码风格,一行代码一行注释,在Google Code上搜索David Culter的大名可以欣赏到他写的代码(发现他老人家60岁时还在编码)。

4. 团队的重要性。 Cutler在DEC组建了他的核心团队,这些团队成员性格各异,有着不同的专长。 NT每每到最关键的时候,Cutler的团队总能有人挺身而出。

5. 市场因素是软件项目成功的内因,技术顶天,市场立地。NT的经理穆格利亚反复强调的是

“计算机软件尽管一定是由程序员构思和创造出来的,但一定要反映当前的市场状况和客户需求“。

6. 伟大的工程作品总是来自伟大的公司,一来大公司牛人多,二来大工程项目要耗费大量人力、财力,非一般机构所能承受。
-------------------------

Thinkhy 09/09/07 深夜写于上地

完整的文章请见:http://www.disandu.com/?p=55

相关文章:

  • 《人月神话》的故事版《观止》
  • 国内首本Windows 7图书与Windows 7 同步发行
  • 《新京报》版面推荐《正在爆发的互联网革命》一书
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 活动预告:终结互联网“偷菜”狂潮
  • 2009中国互联网大会圆满落幕
  • 《正在爆发的互联网革命》北京西单图书大厦签售活动圆满结束
  • 《玩转Windows 7 》销售节节攀高
  • 华为研发的秘密
  • 全球24位顶尖架构师之作《架构之美》
  • 《WCF编程,第2版》
  • 国内顶尖风光摄影家集锦(作品集+拍摄技巧)
  • 老赵书托(1)-SCIP
  • 《架构之美》已经上市啦~
  • 《玩转Windows 7》
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • Computed property XXX was assigned to but it has no setter
  • ES6语法详解(一)
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • node和express搭建代理服务器(源码)
  • Vue ES6 Jade Scss Webpack Gulp
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 数组大概知多少
  • Linux权限管理(week1_day5)--技术流ken
  • scrapy中间件源码分析及常用中间件大全
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #考研#计算机文化知识1(局域网及网络互联)
  • $jQuery 重写Alert样式方法
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (1)常见O(n^2)排序算法解析
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (九)信息融合方式简介
  • (蓝桥杯每日一题)love
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • (转载)利用webkit抓取动态网页和链接
  • 、写入Shellcode到注册表上线
  • .net CHARTING图表控件下载地址
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET面试题(二)
  • @hook扩展分析
  • @property @synthesize @dynamic 及相关属性作用探究
  • [C语言]一维数组二维数组的大小
  • [dfs] 图案计数
  • [EFI]Dell Inspiron 15 5567 电脑 Hackintosh 黑苹果efi引导文件
  • [ES-5.6.12] x-pack ssl
  • [Excel]如何找到非固定空白格數列的條件數據? 以月份報價表單為例
  • [Java、Android面试]_05_内存泄漏和内存溢出