阅读笔记1
这几天开始了第二章的阅读,同样,标题让人捉摸不透--死定了,怀着疑问的心情我继续读了下去,这一章同样是运用叙事的方式,一开头讲述了程序员们因为完不成任务而陷入深深的苦恼中,他们其中的人认为原因是一直没有蓝图,才会碰到难以预料的问题,而另一个人认为不确定因素太多,所需时间取决于他人所花的时间。然而他们记录在Bugzilla中的第44个缺陷过了好长时间仍然没能修复,一开始他们认为是一个小问题,没想到居然花掉了他们大把的时间,最终意见取得一致:黑洞式的缺陷,即无法确定修正所需时长的缺陷,,在Bugzilla中应该用特别的警示词标记出来,后来又提到了软件项目难以按进度安排实现,这种情况极为常见,而且为众人所宽容。在软件开发的世界里,进度延误普遍到人们特意生造出一个委婉词来描述它:slippage,也就是失速的意思。作者用了一个很形象的比喻来解释这种状况:就像是在软件开发项目中暗藏有一条线缆,线缆系紧时,进展迅速,线缆断开时,工作停止。然而历史上任何软件均曾有其隐藏的线缆,对于改进软件开发所做出的努力,都是为了让线缆保持系紧。弗里德里克.布鲁克斯在《人月神话》中曾经说过,对软件时间所导致问题的最早也是最好的诊断。他曾经也提到,软件开发者通常都是乐天派,他们认为每个缺陷都可以被迅速修正,且修正旧缺陷必能减少新缺陷的数量,这种盲目乐观,加上程序员想要取悦主顾,往往让进度在一开始就偏离正轨。在预计及安排项目进度上的每一分努力,都是危险且具欺骗性的神话,所谓人月,是一种科学管理概念,它假定生产力可被拆分为不连续,无差异,可替换的单元。并且布鲁克观察到,只有在任务能分派给许多互相之间无需沟通的工作者时,人和月才是可互换品。了解到了布鲁克斯法则暗示最理想的开发组规模是一个人--无须停下工作与同事沟通的单个开发者。学术计算领域一直提倡开元,1985年,麻省理工怪才斯托曼对于商业软件产业封闭代码积习的憎恨,创办了自由软件基金会,发布了一种特殊的许可,即将全部代码,复用组合到新产品中,,这种被称为GPL的许可显然意在限制将自由程序私有化的行为,但是批判者将他看做是可怕的传染病毒。直到后来归纳出了开放源代码软件开发模式。开元不仅给出了一种生产和分发软件的替代性经济基础方案,它还能彻底改变软件开发的具体过程。在瑞蒙德的《大教堂与集市》中了解到了大教堂模式。接下来了解到了莲花开发公司的创始人卡普尔,了解了他创建软件公司的辛苦历程以及OSAF开发者的辛苦,以及Chander项目的运行历程。
很快便读到了第二章,这一章的标题是Agenda之魂,这一章的情节延续了第一章的内容,开头的主题依然是Chandler项目,它正是为改变世界之梦所驱动。接着提到了Exchange,由此又引出了P2P技术,卡普尔为莲花公司命名,并发布了Agenda这个项目,这是个简单的列表管理软件,但是有几个突出特性让它跻身于软件传奇之列:管理日常生活,组织学术研究,音乐收藏,工作项目。它还引入了一种管理数据的新手段--介于传统计算机数据库的严格结构和字处理软件的自由格式之间。Agenda突破了计算机的严格逻辑与人类的语焉不详之间的阻隔,在这一片黄土上拓出一片新天地。在当今社会,程序或网站总是要你按照它设定的方式而不是你自己的方式填空--社会保险号码里面不得包括连字符,信用卡号中不得包括空格,而Agenda早有独门秘技让用户随意输入。然而,它却没能达到杀手级应用的境界。部分原因是已经成为巨兽级企业的莲花公司急于在商业市场大获全胜。后来Agenda被公司遗弃了。卡普尔在投身于开创开放网络的工作时依然放不下Agenda项目,他珍视项目中动态适应性的程序精髓,他决定,无论新软件外观如何,都必须具备Agenda之魂。接着又介绍了链接以及鼠标的出现以及提靴带的含义:让改进的过程得到改进。恩格巴特认为,就达到智慧增进程序的目标而言,提靴带更像是一种抽象,一种奥秘,而不仅是一个工程上的难题。还了解到了三阶现象,它并不改进过程,它改进的,是改进过程的速率。05年FBI开展了Trilogy的计算机现代化项目来搭建更为安全和现代化的数字通信网络,然而遭遇困局,这一章让我看到一个软件的诞生的多灾多难,以及发展的曲折。
很快来到了第三章,这一章的标题是原型与Python,开头用整理CD的例子引出了在每个编程项目的早期阶段,当团队选择语言和技术,准备切入和开发时,就会受到自身工具和材料的限制。卡普尔在吸取Agenda的经验,研究出了可以用三段式模式描述任何事物,看起来就像是英语简单句中主语-动词-宾语的结构,然而语义网已经描绘出了轮廓,它基于一种名为RDF(资源描绘框架)的技术,它用三元组来储存所有信息。后来了解到了Vista:一个面向用户的程序,它注重向用户展示数据,注重输入,组织和修改数据的方式。接着了解到了OSAF的发展历程,芯片的兴起,汇编语言的诞生,众多编程语言的诞生例如:Lisp,Cobol,Algol,Basic等等,接着了解到了第一个被广泛使用的是Fortran,它将编写汇编语言的费力过程概括为简短的命令,并取得了成功。它大获成功的原因之一是:它挑战了专家们关于这类高级语言运行起来一定比手工编写的机器代码慢的预言。在Fortran发明的时代,计算机时间相当昂贵:机器稀少,体积庞大,贵得离谱。众多编程语言构成的巴别塔确已矗立,这些语言既坚固又脆弱。后来赫兹菲尔德使用Python语言来编写Vista原型。Python是一种解释型语言,编译型语言通过编译器先将程序员的源代码翻译成机器可读的二进制代码后再运行,而解释型语言则是在运行时做类似的工作--解释器逐行翻译源代码,再给处理器运行。接着了解到了Python语言的发展历程,以及和Perl的激烈竞争,不过最终采用Python,Python开源而且跨平台,即同一个Python程序可以在Windows,Macintosh和Linux系统上运行。