《人月神话》阅读笔记(三)

我又一次在相关书籍看到了文档的重要性 

数据的表现形式是编程的根本。创造出自精湛的技艺,精炼、充分和快速的程序也是如此。

技艺改进的结果往往是战略上的突破,而不仅仅是技巧上的提高。

这种战略上突破有时是一种新的算法,如快速傅里叶变换,或者是将比较算法的复杂度从n2降低到nlogn。

更普遍的是,战略上突破常来自数据或表的重新表达——这是程序的核心所在。

如果提供了程序流程图,而没有表数据,我们仍然会很迷惑。而给我看表数据,往往就不再需要流程图,程序结构是非常清晰的。

文档的主要内容:

1、目的。主要的工作是什么?开发程序的原因是什么?

2、环境。程序运行在什么样的机器、硬件配置和操作系统上?

3、范围。输入的有效范围是什么?允许显示的合法范围是什么?

4、实现功能和使用的算法。精确地阐述它做了什么。

5、输入—输出格式。必须确切和完整的。

6、操作指令。包括控制台及输入内容正常和异常结束的行为。

7、选项。用户的功能选项有哪些?如何在选项之间进行挑选?

8、运行时间。在指定的配置下,解决特定规模问题所需要的时间?

9、精度和校验。期望结果的精确程度?如何进行精度的检测?

 

一般来说,三四页纸常常就能容纳以上的所有信息。不过往往需要特别注意的是表达的简洁和精确。

由于它包含了和软件相关的基本决策,所以这份文档的绝大部分需要在编程编制之前书写。

 

文档用文字记录了充满了维度的软件相关东西。

我意识到这些东西,是存在且必要的。它将我们所面对的程序,或者说项目,简化了,易懂了,直观了。

就这些好处,不得不说,我们能更容易发现里面的突破点,或者所暗藏的问题。

转载于:https://www.cnblogs.com/maplely/p/5579255.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab中GUIDE的UItable居中方法

需要借助JAVA,代码示意如下: import javax.swing.*; %导入javax.swing类 table findjobj(handles.uitable1); %需要findjobj.m文件,matlab中是没有的 table1 get(table,Viewport); jtable get(table1,View); renderer jtable.getCellRe…

MySQL Workbench运行脚本

首先在SCHEMAS区域右击,选择创建“create schema” 填入自定义名称,点击“apply” 在弹出来的框中点击“apply”,再在弹出来的框中点击finish 点击菜单栏“file”——“run SQL script”,选择sql文件,在下面选择刚刚创…

自动驾驶事故权威揭秘:算法和软件错误太多

本文来源:AutoR智驾自动驾驶发展就好比是登月计划。从传感器到人工智能,经典的电子供应链已经形成了一个协作矩阵,致力于实现自动驾驶车辆的安全性。为此,还需进行大量硬件和软件开发工作,以确保驾驶员、乘客和行人受到…

python元组求和_Python 列表和元组 - 学习笔记(持续更新)

1、append:在列表末尾添加新的对象 lst [1,2]; lst.append(3); lst :[1,2,3] 2、count:统计某个元素在列表中出现的次数 lst [1,1,[1,2],3]; ct lst.count(1); ct:2 3、extend:在列表末尾追加另一个列表的值 lst1 [1,2]; lst2 [3,4]; ls…

MySQL新建数据库和表

首先在MySQL Workbench上(如果没有的话建议安装一个)新建一个数据库 首先在SCHEMAS区域右击,选择创建“create schema” 填入自定义名称,点击“apply”,这里我命名为crashcourse 在弹出来的框中点击“apply”&#xf…

matlab绘图白边设定

最好提前设定好paper大小! 对于一个坐标轴,用下面这句即可: set(gca,looseInset,[0 0 0 0]);对于subplot,利用该函数 function [] RemoveSubplotWhiteArea(gca, sub_row, sub_col, current_row, current_col) % 设置OuterPosit…

Sprint2-3.0

后续安排 第16周周二晚7点之前将本代码上传到GITHUB.GITHUB地址:https://github.com/QueenIcey/teamwork/tree/master/eslife1周三上课时运行你们的系统给我观赏一下。根据博客,运行演示,github代码情况评定第二个冲刺的分数。至此&#xff0…

【微读书】《人工智能颠覆未来战争》连载之一:机器战胜人类?——AlphaGo人机对战的启示...

来源:中国指挥与控制学会编者按目前,人工智能技术正加速向军事领域渗透,军事智能化既面临千载难逢的发展机遇,也面临前所未有的挑战。如何加强风险研究和预判,防范重大风险,已经客观而现实地摆在我们面前。…

MATLAB画图设置透明度

plot520 plot(x,y); plot520.Color(4) 0.8; Color(4)这个参数可以设置不同的透明度属性

红黑树为什么可以确保没有一条路径会比其他路径长出两倍

红黑树的两个特性来保证: 1、如果一个节点是红色的,则它的子节点必须是黑色的。也就是一条路径上没有两个连续的红色节点; 2、对于任一节点而言,其到叶节点树尾端NULL指针的每一条路径都包含相同数目的黑节点。 因为黑色节点数…

《崛起的超级智能》入选中国好书2019年7月榜单

来源:中国好书中国好书评选活动由中国图书评论学会主办,旨在通过好书推介传递正能量,推动和引导全民阅读。中国图书评论学会是由中宣部出版局创办、国家新闻出版广电总局主管的国家一级学会。自2014年举办首届年度好书盛典至今,“…

.net函数查询_SQL查询语句总是先执行SELECT?你们都错了!

很多 SQL 查询都是以 SELECT 开始的。不过,最近我跟别人解释什么是窗口函数,我在网上搜索”是否可以对窗口函数返回的结果进行过滤“这个问题,得出的结论是”窗口函数必须在 WHERE 和 GROUP BY 之后,所以不能”。于是我又想到了另…

大数据世界要熟悉的5门语言

大数据世界要熟悉的5门语言课程 Python OpenStack Java Hadoop Scala Spark Shell Linux SQL DB JS 华丽分割线 转载于:https://www.cnblogs.com/TendToBigData/p/10501438.html

知识图谱嵌入(KGE):方法和应用的综述

来源:专知导读本文主要是参考《Knowledge Graph Embedding: A Survey of Approaches and Applications》和刘知远的《知识表示学习的研究与进展》做的总结,主要介绍了最近关于知识图谱嵌入所涉及到的研究方法,主要从融合事实信息、融合附加信…

C++ 函数返回char*

在函数内建立的局部变量在函数结束后会被销毁&#xff0c;所以如何从函数返回函数内新建的char*是一个问题 看一个例子&#xff1a; char* get_char_1(){string s "abc";return (char*)s.c_str(); }int main(){char* temp get_char_1();cout << temp;retur…

支持向量机matlab代码程序_支持向量机(SVM)小结

什么是SVM&#xff1f;SVM(全称&#xff1a;Support Vector Machine)支持向量机&#xff0c;这只是它的名称&#xff0c;向量就是和我们以前学过的向量一样(下文有介绍)&#xff0c;它可以有效解决分类问题(我们只讨论分类问题)&#xff0c;何为分类呢&#xff1f;顾名思义&…

C++ 获取char*的长度

strlen函数&#xff0c;包含在#include <cstring> 看个例子&#xff1a; void get_len(char* temp){int l strlen(temp);cout << l;char* anew char[l]; }

实习的具体内容

实习具体内容 项目组背景&#xff1a;Synopsys的Solution Group下面的ARC硬件部门&#xff0c;主要研发ARC处理器IP&#xff0c;它是基于ARC指令集&#xff0c;主要产品有EM系列和HS系列以及多核系统&#xff0c;涉及领域有物联网、汽车电子、高速存储、DSP和图像视频处理。 实…

俄罗斯拟明年在36万台华为平板安装“极光”操作系统

来源&#xff1a;环球时报据路透社报道&#xff0c;有消息人士表示&#xff0c;俄罗斯政府已经开始与华为公司就36万台平板电脑安装俄罗斯自己研发的操作系统&#xff08;OS&#xff09;"极光"(Aurora&#xff0c;也称奥罗拉)的一项计划展开谈判。路透社表示&#xf…

mysql 命令 kill_MySQL之死锁检测

最近&#xff0c;笔者在查看线上服务日志时&#xff0c;发现spring大量异常&#xff0c;异常中都显示了同样的报错信息&#xff0c;信息如下。Deadlock found when trying to get lock; try restarting transaction调研之后发现是mysql发生了死锁&#xff0c;这也是笔者第一次遇…