第3次作业:阅读《构建之法》1-5章
第3次作业,阅读《构建之法》1-5章节
这个作业来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2178
第一章 概论
1.1节,计算机科学的领域,软件工程与计算机科学的关系,软件的特性,软件工程的定义与组成部分软件=程序+软件工程几乎所有的程序员都知道“程序=数据结构+算法”1这句名言,但是在实际的学习和工作中,
也有不少人产生了疑问。例如:
1.我用C语言实现了二叉树的遍历算法。在这里,二叉树是数据结构,遍历的实现细节是算法,C程序就是结果。但是这个程序有什么实际用处呢?在ava和其他一些语言中,似乎没有指针,那我可以不必了解二叉树么?
2.我成了一名职业程序员,但是我发现所有的算法别人都已经实现了,我只要调用就可以。似乎我们公司的软件与数据结构、算法的关系都不大。那我当初辛辛苦苦学习的数据结构和算法有用么?如何区分一个好的程序员和不好的程序员呢?
3.我上班后,发现以前同事写的程序真是垃圾,根本看不懂,无法维护。我要推翻重写!后来一个老员工笑嘻嘻地告诉我,我们现在看到的程序,就是去年的新员工愤怒地推翻重写之后的结果,大家反映还没有以前的版本好用呢。
问题:我们现在除了在算法课上需要学习算法之外,其他编程课基本上不需要用到算法,就算需要用到算法,也是比较难看懂的算法,老师一般都是直接给我们的,那么在工作编程中我们需要用到算法吗?算法是需要自己去研究透彻?现在课堂的算法
只是在锻炼我们的思维,无法运用到别的事例当中?
第二章 个人技术和流程
2.2节效能分析工具啊,效能分析, Performance!这是每一个程序员都梦想的事儿,让自己的程序跑得又快又好,最好是比别人快一个数量级,别人的程序是O(N2),而我的程序是O(n×logN),或者是O(N),这是多爽的一项成就呀!
VSTS提供了方便的效能分析工具,让我们能很快地找到程序的效能瓶颈,从而能有的放矢,改进程序。下面我们看一个具体的例子。有这样一道题:写一个程序,分析一个文本文件中各个词出现的频率,并且把出现频率最高的
10个词打印出来。果冻很快用C写好了程序,命名为 WordFreq。exe,然后运行了一下,验证了正确性,程序的基本框架如代码清单2-6所示。
问题:如果做的程序是大程序,在总体上进行效能分析的时候,每个程序员如何能很好的协调配合?是否需要对别的程序员写的程序有深入了解才能够完成效能分析?
第三章 软件工程师的成长
3.1每个人的工作质量直接影响最终软件的质量。那么,软件工程师如何衡量、证明自己的能加
问:你是职业软件工程师么?
答:是
问:你觉得你“职业”到哪一个程度?
答:嗯,我在一个能发工资的地方上班,靠我的软件技术挣钱,所以我相当的职业。
问:像职业篮球队员那样职业?
答:差不多吧。
问:职业篮球队员都有很评细的记录说明,例如,图3-1所示的表格说明了一个职业篮队2010赛季队员们的场上表现。
答:嗯……没有。唯一的数据是,我的“上场时间”还是挺长的,而且经常打加时赛——加班
问题:公司在面试的时候一般只看你的工作能力,还有项目经验,那么我们作为一个大学生,如何在面试中获取个人优势呢?
第四章 双人合作
4.1现代软件产业经过几十年的发展,一个软件由一个人单枪匹马完成,已经很少见了,软件都是在相互合作中完成的。合作的最小单位是两个人,两个工程师在一起,做的最多的事情就是“看代码”,每个人都能看“别人的代码”,并发表意见。
但是每个人对于什么是“好”的代码规范未必认同,这时我们很有必要给出一个基准线一什么是好的代码规范和设计规范。程序员写的代码是给人看的,还是给机器看的?
问题:在期末做大作业的时候,老师很多时候都会需要我们两个人合作,完成一个项目。但是对方不按照代码的规范去写代码,而且没有注解,根本就看不懂,没有办法把两份代码合成为一份,而且在写代码的思维上也不一样,如何合作?
第五章 团队和流程
5.1介绍了主治医师模式、明星模式、社区模式、业余剧团模式、秘密团队、特工团队、交响乐团模式、爵士乐模式、功能团队模式、官僚模式,每个模式都有各自的不同点,也有共同点。
问题:如何找到适合自己的团队模式?