《梦断代码》阅读笔记01

  以前没有怎么看过这方面的书,这本书确实是让我眼前一亮。梦断代码并不是一本枯燥的只讲代码的东西,而是通过作者写自己,写自己的经历,身边的事情,向我们讲述了代码的王国。

       在计算机的世界里,不是1就是0。而作为程序员来讲,开始的数并不是1 而是0。也因为这个,作者是从第0章开始写起。开玩笑的说,如果我早点看到这本书的第一章,可能我就不会选这个专业了,软件开发这个过程远比我想象中的复杂艰难的多。每天工作到凌晨,又或是没日没夜的苦干好几个星期,几乎所有的时间都放在了软件的开发过程中。但这并不说明,你设计出的东西就一定是好的完美的,恰恰相反,可能花了很长时间做出来的东西还存在着很致命的漏洞,你还要再去花费很多时间去修复这个漏洞,这并不比开发软件时要轻松,按时按预算交付软件也成为了一件很困难的事情。

      第一章-死定了,一开头讲述了程序员们因为完不成任务而陷入深深的苦恼中,他们其中的人认为原因是一直没有蓝图,才会碰到难以预料的问题,而另一个人认为不确定因素太多,所需时间取决于他人所花的时间。然而他们过了好长时间仍然没能修复,一开始他们认为是一个小问题,没想到居然花掉了他们大把的时间,最终意见取得一致:黑洞式的缺陷,即无法确定修正所需时长的缺陷,在Bugzilla中应该用特别的警示词标记出来,后来又提到了软件项目难以按进度安排实现,这种情况极为常见,而且为众人所宽容。可以看到程序员是多么顽固又不得不把抽象写成诗的物种。软件就其中灵活性而言,非常顽固,令人发指地棘手,而且常以其强硬的一面示人。构建软件系统最难的就是精确设定要做什么东西,而且,重要的是,当你好不容易构建出来了一些看似不错的,那么在软件开发过程中,这些可能没什么重要的用途。

     第二章:Chandler 项目并没有真的“正在“改变世界(至少尚未开始)。但Chandler 项目正是为改变世界之梦所驱动。卡普尔自己以及他的莲花公司还有更多开发者对项目的执着与对灾难的坚持。正是某种意义上的开发者的精神。Agenda的创建者们认定这样一些超乎常规的原则:用户不用关心软件的存储结构,只管输入数据就好,用户应该能够容易地扩展和修改数据结构、添加新分类, 且不会导致数据丢失,用户应该能够用自己创建的新方式查看数据——也可以在自己创建的视图中操作和修改数据。初次启动计算机时,内存是空的。这就造成了鸡与蛋的悖论:计算机硬件需要操作系统软件来装载程序——包括操作系统本身。计算机系统发明者们通过一个叫做"bootstrap loader (靴带装载者,引导程序)”的小程序让机器具备刚好足够把大操作系统装入内存的能力,开始正常运行。之后,本章介绍了很多个失败的项目,这些项目失败的原因都是因为项目需求不断地变化。用一句话来概括就是:标靶移来移去。目的忽上忽下。计划不切实际。期限一拖再拖。预算膨胀超支。绝望已极。混乱不堪。

    第三章:在抽象层叠的最底端, 正好在核心内存之上的部分就是汇编语言。语言的选择可能都是一个项目在前期选择时必须要经历的痛苦抉择。文中谈到了汇编、Fortran、C、Perl,谈到了编译型语言和解释型语言,最后项目用Python语言来实现。Python 是一种“解释型语言" 。“编译型语言(" 通过编译器先将程序员的源代码翻译为机器可读的二进制代码后再运行,而解释型语言则是在运行时做类似的工作——解释器逐行翻译源代码,再喂给处理器运行。解释型语言效率较差,因为你要同时运行自己的程序和解释器。但这也使得解释型语言较为敏捷。Python是解释型语言,但是简单易懂的语言,很明显在修改错误和拓展程序上事半功倍。这恰恰说明了,解释型语言这种往往被忽略的“脚本语言”是至关重要的。很多语言都用括号或其他符号来划分代码块,而Python 却只简单地用缩进表示。它的另一个优点是变量类型设定宽松。

原文地址:https://www.cnblogs.com/1234yyf/p/14188626.html