这周的作业可谓是囫囵吞枣和追根溯源的共存体。
所谓的囫囵吞枣,是指要在几天的时间内完成教材的阅读,我们的教材是这门课的体制的创新者邹欣先生所写的。邹先生的实战经验非常的丰富,是真正的软件工程行业的践行者,也是一线的工作人员。我想邹先生的经验是真正的实战的经验,比起学院派,实战派总是更有说服力,毕竟实践出真知这是一个颠扑不破的真理嘛。
首先要说的是阅读完本书后的几个感想。所谓的大道至简,说的也许就是这种以最简单的语言描述复杂的问题。邹先生的语言很质朴情景很有代入感,使我很快地能反查到自己的现实的不足,知得一提的是在完成本次程序的过程中我被一个莫名其妙的运行时错误困扰了不少时间,在读完邹先生关于开发c++的几点建议的时候竟然神奇地得到了灵感,在将程序简单修改后克服掉了这个bug。于是我再一次感受到了磨刀不误砍柴工的道理,学习和实践的过程从来都是相辅相成的。
大体上阅读完邹先生的书后,我感觉到自己在程序的编码之前的规划完成的不是特别好,于是在编码的过程中要费很大的功夫思考如何处理之前没有想到的突发问题,我觉得还是自己对于编码的火候不到位。
其次就是自己对于测试的理解并不是很多,其实测试这种事情非常重要,但是在自己实现的过程中就很难做到老师所要求的覆盖所有的测试节点的要求,其实最主要的原因是自己的惰性作祟。
其实在本书中最多的我所不懂的就是关于商业模式的描述,这本书的名字叫做build to win,就是说它旨在赢得市场,然而其实对于市场,我没有什么具体的概念。
再者就是关于书中对于开源的描述我也不是很清楚的,果冻问到,开源和共享软件是怎么回事,如果开源了,商业价值怎么体现?关于这个问题,作者简单地分析了凝聚了无差别的人类的劳动的软件的价值所在,但是对于商业价值的体现,似乎并没有给出很好的解释,作者只是说这其中各有各的原因,但是读到最后我还是没有形成具体的印象。
阅读本书的最大的感受就是感觉到了一个新的软件开发的模式的兴起是与时俱进的。就像本书和我们的软工项目所要采用的敏捷开发模式一样,这种模式是适应了时代的发展的,其中的迭代开发的模式是我印象很深的一个方面,因为我在实验室实习的时候所做的任务大约就和这种迭代式的开发比较像,我么会首先开发出一个比较low的但是可以跑得出来的小系统,然后再此基础上不断地进行迭代的开发和优化,这可能也是为什么我对敏捷模式的印象这么深刻的一个重要原因吧。
而所谓的追根溯源就是指探查事物的由来,就像是康得理性批判中的“澄清前提,划清界限”。首先要追溯一下软件这个名词的由来:
In 2000, Fred Shapiro, a librarian at the Yale Law School, published a letter revealing that Tukey's 1958 paper "The Teaching of Concrete Mathematics"contained the earliest known usage of the term "software" found in a search of JSTOR's electronic archives, predating the OED's citation by two years.This led many to credit Tukey with coining the term, particularly in obituaries published that same year, although Tukey never claimed credit for any such coinage. In 1995, Paul Niquette claimed he had originally coined the term in October 1953, although he could not find any documents supporting his claim. The earliest known publication of the term "software" in an engineering context was in August 1953 by Richard R. Carhart, in a Rand Corporation Research Memorandum.
这是维基上关于软件起源的一段描述了,描述中没有明确地限定到底是谁权威地提出了软件的概念,纷纷纭纭的说法总是历史了,但是可以看得到的是软件绝对算得上是新鲜的名词了。
另外的一个关键的名词就是软件工程了。 Margaret Hamilton是参与美国登月计划的科学家,用中国的话来讲,她算是不折不扣的巾帼红颜了,她发明了软件工程这个名词,软件工程在她看来就像是科学界的艺术品一样,应当得到该有的尊重和与硬件相区别的地位。“我一直以来坚信这项发明流着艺术与科学的血液,虽然当时很少人是这么想。因此,我致力于为软件以及那些发明者争取应有的正统性与尊重,所以我开始使用“软件工程”这样的字眼来将之与硬件还有其他工程学类做出区别。”这是她的原话,也许这也是很有远见和担当的一段话了。