[读书笔记]读《观止》有感

2024-03-30 23:48
文章标签 读书笔记 有感 观止

本文主要是介绍[读书笔记]读《观止》有感,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

书中的主人翁是David Cutler,加入微软之前,此公就职于DEC,设计了大名鼎鼎的VMS系统,因为在DEC的"棱镜"取消了,一怒之下出走DEC,而被盖茨慧眼识中收入麾下。DavidCutler加入微软之后一直在考虑着设计一款全面超越那帮博士们设计的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.chinasem.cn/article/862907

相关文章

三相直流无刷电机(BLDC)控制算法实现:BLDC有感启动算法思路分析

一枚从事路径规划算法、运动控制算法、BLDC/FOC电机控制算法、工控、物联网工程师,爱吃土豆。如有需要技术交流或者需要方案帮助、需求:以下为联系方式—V 方案1:通过霍尔传感器IO中断触发换相 1.1 整体执行思路 霍尔传感器U、V、W三相通过IO+EXIT中断的方式进行霍尔传感器数据的读取。将IO口配置为上升沿+下降沿中断触发的方式。当霍尔传感器信号发生发生信号的变化就会触发中断在中断

秋夜思故人有感

秋夜思故人有感 西楼月影碎,轩窗烛泪灰。门前小犬吠,疑是故人归。

《C++标准库》读书笔记/第一天(C++新特性(1))

C++11新特性(1) 以auto完成类型自动推导 auto i=42; //以auto声明的变量,其类型会根据其初值被自动推倒出来,因此一定需要一个初始化操作; static auto a=0.19;//可以用额外限定符修饰 vector<string> v;  auto pos=v.begin();//如果类型很长或类型表达式复杂 auto很有用; auto l=[] (int

读书笔记(一):双脑记

谁又知道年轻人那反复无常的大脑有着怎样的运行机制?尽管他们的大脑已被荷尔蒙折腾地七荤八素;却偶尔还会有灵感跻身夹缝之间; 层级化:每时每刻,人类都在进行抽象化,也就是说,从客观事实中发展出更具普遍意义的理论和知识。利用这种方法,我们得以不断地开发出新的更为简洁的描述层级,方便我们那容量有限的大脑加以处理。分层的概念几乎可以应用于任何复杂系统,甚至包括我们的社交世界,也即是人们的个人生

2024.09.07【读书笔记】| SMRTLink工具对PB组装疑难解答

在使用SMRT Link的pb_assembly_hifi命令进行组装分析时,可以参考以下步骤和信息: 使用pbcromwell show-workflow-details pb_assembly_hifi命令查看该工作流的详细信息。这将帮助你了解所需的输入参数和可选输入参数。 根据工作流的要求,你需要准备相应的输入文件。例如,对于单样本基因组组装,需要CCS(连续测序)的fastq文件路径作

密码学读书笔记小结

密码学是保证消息的私密性和完整性以及消息认证的基础。加密算法的选择和密钥的管理是安全机制的效率、性能和可用性的关键。 公钥加密算法: 分发密钥比较容易,但是对大数据量的加密性能较差密钥加密算法: 更适合大批的加密任务混合型加密协议: 例如TLS,先用公钥加密建立一个安全通道,然后使用通道交换密钥,并将此密钥用于后续数据交换。 对分布式系统攻击的分类: 窃听: 未经授权获得消息副本伪装: 在未

看 刻意练习 有感

该文章主要从几个事例以及生物方面介绍并验证了刻意练习对于技能掌握的重要性 成为高手的秘诀就是不断的学习不断的进步 刻意练习就是要在舒适区和恐慌区之间的学习区里面不断打熬,看得见的进步,练习获取反馈,不断调整,努力进取 有兴趣就更好

《设计模式:可复用面向对象软件的基础》读书笔记(3)

这篇博客记录了书中《第3章:创建型模式》里的要点。 介绍 创建型设计模式抽象了实例化过程。 在这些模式中有两个不断出现的主旋律: 他们都将关于该系统使用哪些具体的类的信息封装起来。他们隐藏了这些类的实例是如何被创建和放在一起的。 整个系统关于这些对象所知道的是由抽象类所定义的接口。因此,创建型模式在什么被创建、谁创建它、它是怎样被创建的,以及何时被创建等方面给予你很大的灵活性。 下面将这

总结如何成为“好”代码——读《重构:改善既有代码的设计》有感

读后感 说是“读后感”,其实并不是看得很仔细,尤其是各种代码例子,我基本上是跳过的。个人觉得,重构这件事上,关键是要能嗅出坏代码,知道什么是好代码,这样目标明确后,重构的手段其实是水到渠成的,唯一要注意的就是书中强调的:要以小步为单位稳打稳扎进行。 我所理解的“好”代码 核心目标 那么如何才是“好”代码?书中的答案是:“人们是否能轻而易举地修改”,而我觉得抽象层级更高的描述是:易于未来的工

《程序员修炼之道》读书笔记(8):注重实效的项目

第8章:注重实效的项目 随着项目开动,我们需要从个体的哲学与编码问题,转向为项目级别的问题。 本章将讨论影响项目成败的几个关键区域。 41《注重实效的团队》 本书在先前讨论了帮助程序员个体更好的方法,这些方法对团队也有效。 下面将针对团队,来重述前面部分章节。 不要留破窗户。团队不应该容忍那些小小的、无人修正的不完美。煮青蛙。团队更容易被煮熟,因为每个人都觉得别人会在监视环境的变化。交流