第二次作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zjlg/rjjc20 |
|---|---|
| 这个作业的目标 | <通读《构建之法》并提出三个疑惑之处> |
| 姓名-学号 | <郑华岩>-<2018330301068> |
| 第一个疑问 |
原文:
我们知道许多计算机硬件的能力大致以每两年提高一倍的速度发展,而软件开发的流程却没有这样的提速过程,开发成本也没有下降,为什么 ?
-- 引用自《[构建之法]P9》
我的疑问:
软件开发的速度是否会由于 AI 等技术的进步而提升?
证据:
Google 内部有一个研究项目叫做 AutoML,即「自动化的机器学习」,该项目旨在「训练机器学习的软件来打造机器学习的软件」,自行开发新系统的代码层,说得玄乎一点,就是让机器学习系统「自我繁殖」。
我的观点:
如果机器可以设计出不输人类最优秀的程序,那么就算它本身仍有一定的瑕疵,有经验的 AI 专家也能够很好地利用它来大大提高人工智能系统编写设计的效率,对于经验尚浅的程序员来说,这个系统也可以起到辅助学习的作用,那么在一定程度上可以提升软件开发的速度。
第二个疑问
原文:
单元测试必须由最熟悉代码的人(程序的作者)来写。
代码的作者最了解代码的目的、特点和实现的局限性。所以,写单元测试没有比作者更适合的人选了。
-- 引用自《[构建之法]P25》
我的疑问:
代码作者是否一定为单元测试编写者的第一人选?
证据:
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
我的观点:
虽然代码作者最了解代码的目的、特点和实现的局限性,但也意味着他很有可能受限于自己的框架之内,就像我们计算出现错误的时候,自己检查很难发现错误所在。那么,单元测试由多个人同时进行是否能够发现更多的错误,更好地优化功能呢?、
第三个疑问
原文:
软件工程师的思维误区:分析麻痹:一种极端情况是想弄清楚所有细节、所有依赖关系之后再动手,心理上过于悲观,不想修复问题,出了问题都赖在相关问题上。分析太多,腿都麻了,没法起步前进,故得名“分析麻痹”。
-- 引用自《[构建之法]P48》
我的疑问:
分析麻痹真的是一种思维误区吗?
证据:
决策研究中的分析麻痹用于描述决策分析的机会成本超过做出决定可获得的收益。它也可指分析的过程远远超过决策过程本身或这种决策的分析可带来的收益。
我的观点:
我认为文中所指的 “思考所有细节” 的分析麻痹在某些情况下不应该是一种误区,当我们有足够的时间时,提前思考好所有细节,可以减小在后期出现错误的可能性,这种情况下不应该是一种思维误区。但是在时间紧迫的情况下,正如作者所言 “没法起步前进” ,会有巨大的损失。例如,当一个人非常饿的时候,去分析一顿饭有多少种成份,会给这个人带来多少影响,从而延误了进食。

浙公网安备 33010602011771号