搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
很楠不爱3
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
iOS_预编译(宏)#if #ifdef #ifndef #elif #else #endif_ios #ifdef
2
HashMap底层原理_hashmap底层实现原理
3
spring el表达式---基础接口及基础语法_spring el 接口参数
4
cocos2d-x-3.12 打包apk出现 XXX如 libfreetype.a exists or that its path is correct 执行命令出错,返回值:2。_cocos2d-x libfreetype.a
5
pandas.DataFrame 增删改查详细操作_pandas增删改查
6
WoodScape:用于自动驾驶的多任务、多摄像头的鱼眼数据集
7
图像修复(Image Restoration)算法数据集详细介绍_图像修复数据集
8
小程序包体积优化_小程序 体积包 详细
9
ar技术序章-SDK介绍和选择_ar技术sdk
10
数据结构(六):二叉树的创建、递归遍历与非递归遍历、层次遍历_构建一棵二叉树,用递归和非递归算法对该二叉树进行先序、中序和后序遍历。
当前位置:
article
> 正文
杀不死的人狼——我读《人月神话》(四) _frederickp.brooks.jr、人月神话、狼人、银弹、没有银弹根据所列关键词,写一
作者:很楠不爱3 | 2024-03-06 23:02:28
赞
踩
frederickp.brooks.jr、人月神话、狼人、银弹、没有银弹根据所列关键词,写一
<<==上一节
=====
四、没有银弹,或人狼杀不死
=====
人狼这个动物很奇怪,皮肉坚实还是自疗系的,所以要么砍它不动,要么杀它不死。这种动物如同习得(传说中的)金钟罩功夫,刀枪不入,水火不怕。也如同金钟罩有罩门一样,人狼对银没有免疫,因此如果做一颗银弹就能穿透它,进而杀了它。
所以人们总是说一物克一物,大象怕老鼠,总有对付它的法子。但如果你设定了一个自圆已说的悖论,那除了否定悖论本身没有意义,也就没有解它的法子了。同样的道理用在“没有银弹”这个观点上,也是成立的。
也就是说,如果我们讨论“有或者没有银弹”,那么应该先反过来看看“人狼”的本质。因为本质是人狼对银不免疫,所以我们才能找到银弹并杀了它。如果人狼根本就杀不死,那么不要说金弹银弹,就是核弹也没用——因为它杀不死。
我们来看看
Brooks
所谓的人狼,也就是“软件活动的根本任务”。首先,
Brooks
认为我们并没有足够的精力来放到“软件活动的根本任务”这一目标之上。他的论证过程是:
根本任务的目标:抽象软件构成的复杂概念结构;
次要任务的目标:表达抽象实体,在一定范围内映射成计算机的执行逻辑;
我们大多时候在关注次要目标,例如写程序和开发“写程序用的”程序;
我们写再多的程序与再强的“写程序用的”程序都不会触及到根本任务。
进一步的分析来说,是我们探索目标的方法,分散了达到目标的力量。我们在通向目标的路线上越是努力,那么我们的力量就被分解得越快。次要目标是达到主要目标所必须的,但次要目标上花费越多的精力,就越无法接近主要目标。既然要经过
A
才能达到
B
,而经过了
A
也就没有力量达到
B
。那么结论自然是:达不到
B
(主要目标)。
这个悖论说的是手法问题。你当然可以超越某种手段,可以从纯理论上来推论出:没有了
A
就成了,我们可以由
C
达到
B
。由于永远存在
C
至
*
(任意)的途径,那么当然存在
C
~
B
的途径。由于手段无以穷尽,所以
Brooks
当然不能从这上面说服大众。于是,
Brooks
立即又论述了这个人狼的四个具体特性:复杂度、一致性、可变性和不可见性。
一是要面对极端的复杂性。尽管我们可以用模件复用来缓解复杂性,但是软件实体的扩展必须是不同元素实体的添加,这些元素“以非线性递增的方式交互,因此整个软件的复杂度以更大的非线性级数增长”。
所以你创建一个新软件就必然面临更多的(非线性级数增长的)旧软件中不能被复用的元素。所以在复杂性方面,人狼是自疗系的:越做越复杂,不可能变简单。
二是要背上不可丢弃的历史包袱。由于
Brooks
强调新的软件需要保证跟旧的软件兼容(有点象
MS Vista
兼容
MS DOS
),你创生了一个软件也就创生了下一个软件的需求,所有的创生活动产生了需求的自增集合,尽管这种“变体不是必需的”,但它一个不可丢弃的历史包袱。所以在保证一致性这一方面,人狼是自增长的。
三是要接受需求的持续变更。软件要保证设计一致性才能成功,但从这个软件被设计的那一刻开始,你就必须接受来自它人的、自身的、市场的、自然及社会规律的,以及不同的文化和思想习惯的差异的需求(这意味着每个人的想法都可能被作用在一个软件实体上)。需求是无度和不可控的,所以人狼本身又是变形系的。
四是不可见。你找不到足够的抽象方法描述软件的不同侧面,也就不能将它们表达为抽象概念上的图形。如果你找到了这样的方法,那么这个“软件”本身就不足够复杂,因此也就不是原本含义上的“根本任务”。所以,它是隐形的——你如果看见了它,要么是看见了诸多复杂的方面中的一面,要么根本就是看错了。
从游戏术语来说,我们要面对的是“自增+自疗+变形+隐身”的终极大
BOSS
,而
Brooks
还要求:
HI
,小子,你得拿个足够简洁(例如小刀?)的武器去单挑(独立的解决方案?)。
如果有游戏策划写出这样的脚本,那么他得被玩家活活骂死。但
Brooks
描绘了这样一只“杀不死的人狼”,并开心的说“你们没有银弹”。然而,他不但没有被骂死,还得到了一致的认可,并且整个工程界欢欣雀跃,一致以找出那枚银弹为已任。
这样来戏谑大师的预言实在是有些不敬。那么大师是否就是在那么严谨地对待自己的观点呢?他说:必须声明的是,构建独立小型程序的数据不适用于编程系统产品。
大师的意思是:因为不能通过“做更多的小型程序”来得到做大型系统的经验/数据,所以无论何时,只要面对大型工程,你的经验值就立即归零(或者极低)。显然,(连白痴都知道)毫无经验值地直接面对终极大
BOSS
,结果一定是失败。又由于所有面对这些大
BOSS
的都(无可置疑地)失败,因此我们也就不可能有成功。
显然这是一个法宝:如果你违背这个逻辑而又获得了成功,那么这种成功可以立即被归结于:你在做一个小型程序。
放心吧,没有人能杀得死
Brooks
的人狼的,也不可能找得到这样的银弹。因为
Brooks
的人狼原本就是杀不死的,他甚至连“给睡熟的人狼胸口一刀”这样偶然性的机会也没给你留下。任何时候,你杀死了一头看起来有点象是人狼的怪物,
Brooks
都可以轻描淡写的说:
OH
,小子,你看错了,那并不是人狼。
下一节==>>
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/很楠不爱3/article/detail/202043
推荐阅读
article
解决R
语言
读取
数据自动置换
符号
问题,例如把
TCGA
样本中的-
读取
为·_
r
语言
读取
csv
文件
时-
符号
读...
在使用R
语言
r
ead.
csv
()函数
读取
csv
文件
时,会自动把
TCGA
样本中的替换为,为后续数据处理带来不便。解决方法:...
赞
踩
article
chatgpt
赋能
python
:
Python
遍历
二维
List
的最佳实践_
python
二维
list
遍历...
在
Python
中,
List
是一种非常常见的数据类型之一,它用于存储多个数据项。在
二维
List
中,每个元素也是一个
List
...
赞
踩
article
java
-遍历
集合
中
的
元素
...
java
-遍历
集合
中
的
元素
List<String> list = new ArrayList<>...
赞
踩
article
关于
tomcat
服务器
启动
后访问
localhost
:
8080
报错500或者404的解决...
一、问题描述昨天安装了
tomcat
9.0以后,尝试
启动
服务器
,访问
localhost
:
8080
测试是否
启动
成功,结果提示...
赞
踩
article
计算机
毕业设计
之大
数据
机器学习
Python
+
SpringBoot
考研分数分析与预测系统 大
数据
毕业设...
计算机
毕业设计
之大
数据
机器学习
Python
+
SpringBoot
考研分数分析与预测系统 大
数据
毕业设计
考研大
数据
分析
...
赞
踩
article
30
个经典
机器
学习
项目,
GitHub
星星加起来超过
16
万丨资源...
作者 Mybridge 翻译来源 大数据文摘 伊瓢 编辑量子位 转载 | 公众号 QbitAIMedium上的作者Myb...
赞
踩
article
vue
element
-
ui
实现
table
表格
可
编辑
修改_
element
ui
table
可
编辑
...
vue
element
-
ui
实现
table
表格
可
编辑
修改_
element
ui
table
可
编辑
element
ui
...
赞
踩
article
gcc
编译
不
链接
未使用
的
函数
_
不
用
的
函数
不
编译
到库...
编译
选项-ffunction-sections // 使每个
函数
在
编译
成汇编文件时单独成节-fdata-sections...
赞
踩
article
集合
的三种
遍历
方式_
集合
迭代
器
遍历
...
迭代
器
(Iterator)是一种对象,它可以让我们
遍历
集合
对象中的元素。Java中的
集合
类(例如ArrayList、Li...
赞
踩
article
使用
vite
搭建项目时
,
在启动
vite
后
,
浏览器
显示页面:找
不到
localhost
的
网页
_
vite
...
在使用前端工具
vite
(版本5)
,
搭建vue3项目时
,
启动
vite
,
浏览器
显示页面:找
不到
localhost
的
网页
,起初...
赞
踩
article
基于微信小
程序
高校学校
校园
系统
(后台
java
+
Springboot
框架)
答辩
常规
问题
和如何回答(答...
基于微信小
程序
高校学校
校园
系统
(后台
java
+
Springboot
框架)
答辩
常规
问题
和如何回答(
答辩
指导)毕设
毕业设计
...
赞
踩
article
java
生成
pdf
加密
_
java
使用
iText
生成
PDF全攻略(
表格
,
加密
)...
java
使用
iText
生成
PDF全攻略,包括创建文档,设置字体,添加
表格
(PdfPTable),创建新页(newPag...
赞
踩
article
itext
.
jar
加密
pdf
文件
(零基础、
包教包会
)_
itext
pdf
.
jar
...
一、首先要分清
pdf
的两种
加密
方式1、文档打开口令:打开
文件
时的密码2、许可口令:操作
文件
时的密码二、如何查验
加密
的效果...
赞
踩
article
灯塔
:
CSS
笔记
(
1
)
...
2.margin
:
0 auto 一般针对固定宽度的盒子,如果大盒子没有设置宽度,此时会默认占满父元素的宽度。注意点
:
如果...
赞
踩
article
在
Amazon
Web
Services
上
使用
Docker
从零变到
Jupyter
...
AWS is the dominant cloud-based service provider. We don’t e...
赞
踩
article
PyCharm
连接
远程
服务器
配置过程...
在Remote Host找到
服务器
中的工程文件夹,并右键选择Download from here,便能实现将
服务器
中的文...
赞
踩
article
关于
本
机
CUDA
运行版与
驱动
版不匹配的解决方案_
cuda
驱动
程序
版
本
不适合
cuda
运行时
版
本
...
关于
本
机
CUDA
运行版与
驱动
版不匹配的解决方案_
cuda
驱动
程序
版
本
不适合
cuda
运行时
版
本
cuda
驱动
程序
版
本
不适...
赞
踩
article
算法套路十五——
动态
规划
求解
最长
公共
子
序列
LCS_
动态
规划
解决
最长
公共
子
序列
问题。...
给定两个字符串 text1 和 text2,返回这两个字符串的
最长
公共
子
序列
的长度。如果不存在
公共
子
序列
,返回 ...
赞
踩
article
【Linux】在
Ubuntu
系统
下
使用
Screen
运行
Python
脚本...
在
Ubuntu
操作
系统
中,
Screen
是一种非常有用的工具,特别是在需要长时间
运行
的任务或者需要在后台
运行
的任务中...
赞
踩
article
localhost
:
8080
打不开
原因解决方法...
今天在课上,用
localhost
:
8080
验证Tomcat是否启动成功,到我做的时候发现出现下面这种情况我再网上查了查资...
赞
踩
相关标签
r语言
TCGA
生信
chatgpt
python
开发语言
计算机
服务器
tomcat
人工智能
数据分析
elementui
前端
javascript
c语言
java
vue.js
vite
找不到localhost的网页
小程序高校学校校园系统
java生成pdf加密
jar
安全