给2500万行代码修复bug的程序员都怎么上班?

article/2025/9/14 14:59:07

通常说,一个人造的、很庞大的事物,会给人很厉害的感觉。

比如说摩天大楼⬇️

或者巨型水坝⬇️

看着这种东西,世超不禁想到这几个字: “ 人类工程学奇迹 ” 。

但是欣赏归欣赏,这种巨型工程项目如果出了啥子问题,不得不维护的话,那这个维护痛苦程度只能用 “ 灾难 ” 来形容了。

在网上看到过这样一个科技界的庞然大物: Oracle Database 12.2 的代码库!

在国外计算机论坛 Hacker News 上,有人问了这样一个问题: “ 你见过的规模最大的还在使用的烂代码有多大? ”

一个目测是 Oracle 员工, ID 叫 “ oraguy ” 的用户给出了回答⬇️

甲骨文数据库 12.2 版本,一个将近 2500 万行 C 语言代码的庞然大物!

打个比方吧,写代码就好比堆积木,一旦整个积木都有了功能之后,随便动其中任何一块,都会导致其他积木出事儿,塌了都有可能。。。

这样巨型项目经手的程序员太多了,每个人都按照自己的方式解决问题,这就导致其他人要在项目之上写东西的时候,得花大量时间搞懂原来的代码是怎么运作的。。。

好在这个代码库还有非常完整的测试代码,出了问题不用让程序员自己找 BUG 出处。

只不过。。。据 oraguy 说,这个项目改一行代码之后,一般会跳出 1000 多条测试失败的消息,然后程序员要一个个排除。。。

也亏得这上百万项测试,这个项目现在还能商用。

所以给 Oracle Database 写代码的程序员,工作流程一般是这样的⬇️

1. 拿到一个新任务:解决一个新发现的 bug 。

2. 花两周时间了解 20 个不同的 flag ( 标记 ),这些标记用一种很奇怪的方式制造了这个 bug 。

3. 尝试添加 flag,写几行代码,同时要小心不会制造出更多 bug

4. 提交一下修改过的代码,然后用测试服务器创造一个新的数据库,并且跑一下那几百万个测试。。。

5. 回家,第二天来的时候做点儿别的,因为测试要跑二三十个小时。

6. 回家,第二天来的时候看看结果:运气好的话可能只有 100 个测试失败;运气不好的话有 1000 个失败。随便找个失败的测试,理解一下这个 bug 的原理。

7. 改一改,提交,测试,再来二三十个小时。。。

8. 重复以上步骤,俩星期后你大概能理解这个 bug 的原因了。

9. 终于,在你几乎锤蛋自尽之前,发现某次测试完全通过了!

10. 再写上百个测试,以防下次哪个晦气孩子要碰项目的时候,不会把你的修改搞砸。。。

11. 提交代码,做最后一次测试和代码复盘,这个过程大约需要花 2 周到 2 个月,所以这段时间去修别的 bug 吧!

12. 搞定一切,代码修改可以添加到产品里去了!

以上。。。。

而且据 oraguy 说,如果要给数据库添加一个小功能,往往需要花 6 个月到 1 年的时间。

原因想想都知道:可能写新功能代码只用花 1 个月,剩下的时间都在改因为新功能产生的 bug 。。。

 Oracle 的这个 2500 万行的项目,可能就是负债累累的样子。。。

会变成这样的原因。。。就是每个人干活都没啥规范,碰到问题修修补补就好,完全没有考虑整个项目。

事实上,如果遵守一些代码规范的话,就不会这么糟糕。

同事里有个前华为员工,说他们组的大项目也有上千万行代码,修改 bug 或者添加功能的周期只有数周。

所以说。。灾难可能都是遭难的人当初一手造出来的。。。

图片来源:

Construction Specifier

Travel Nevada

Drupal Integration

codeship

g2techgroup

本文来自“差评君” 


http://chatgpt.dhexx.cn/article/BkWGBVRR.shtml

相关文章

感受野与权值共享

什么是全连接? 若有一幅100x100的图像,隐层有100个神经元,每个神经元与每个像素全部连接,则有100*100*100个连接,这就叫做全连接。 什么是局部连接? 若有一幅100x100的图像,隐层有100个神经元…

感受野浅析

感受野的讲解,我在网上查了好多都是错误的,浪费了大量时间,后来总结下来避免大家入坑 一、感受野的概念 感受野(Receptive Field)的定义:卷积神经网络每一层输出的特征图(feature map&#xf…

CNN感受野计算

笔试过程中遇到了感受野计算的问题,赶快把不牢固的知识复习一下。 1 感受野的概念 在卷积神经网络中,感受野的定义是 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。 2 感受野大小的计算…

目标检测和感受野的总结和想法

点击上方“计算机视觉工坊”,选择“星标” 干货第一时间送达 作者丨pprp知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/108493730 编辑丨极市平台 导读 经典的目标检测如Faster R-CNN, YOLOv3等都用到了Anchor,本文详细介绍了…

感受野 深度理解

知乎是个好东西,深入理解一些理念,靠博客是不行的。 感受野计算和理解的内容参考自:https://zhuanlan.zhihu.com/p/44106492 / https://zhuanlan.zhihu.com/p/40267131 后两个卷积的内容参考自: https://www.zhihu.com/question…

卷积神经网络感受野的计算

1 到底什么是“感受野”(接受野)?——Receptive Field “感受野”的概念来源于生物神经科学,比如当我们的“感受器”,比如我们的手受到刺激之后,会将刺激传输至中枢神经,但是并不是一个神经元就…

深度学习-感受野与有效感受野

文章目录 感受野增加感受野有效感受野与反卷积的区别总结 感受野 卷积核的大小(高度和宽度)定义了一个区域的空间范围,改区域可以被卷积核在每个卷积步骤中修改,因而卷积核的大小称为卷积核的“感受野”。 感受野(receptive field, RF),卷积…

3.3.2 感受野

3.3.2 感受野 1962年Hubel和Wiesel通过对猫视觉皮层细胞的研究,提出了感受野(receptive field)的概念,Fukushima基于感受野概念提出的神经认知机(neocognitron)可以看作是卷积神经网络的第一个实现网络。 3.3.6 卷积网络的感受野Receptive field (RF)以…

目标检测和感受野的总结

目录 1、感受野 2、理论感受野计算 2.1、自上而下感受野计算 2.2、自下而上的计算方法 3、作用 4、关系 5、总结 6、参考文献 经典目标检测和最新目标跟踪都用到了RPN(region proposal network),锚框(anchor)是RPN的基础,感受野(receptive field…

CNN中的感受野

CNN中有一个概念叫局部感受野(local receptive field),那什么是感受野呢?一般的CNN结构都是卷积-池化这样重复下去,比如下表: layers size stride input100*100*1---conv13*31pool12*22conv23*31pool22*2…

详解CNN的感受野

目录 前言 CNN特征图可视化 感受野计算公式 计算Receptive Field Size的小程序 前言 感受野(receptive field,RF)也许是CNN中最重要的概念之一,从文献上来看,它应当引起足够的重视。目前所有最好的图像识别方法都是…

感受野计算问题

我觉得以下两篇文章,在感受野的含义和计算上,说的是比较好的。 1、深度学习:VGG(Vision Geometrical Group)论文详细讲解_HanZee的博客-CSDN博客 2、关于感受野的总结 - 知乎 我们知道一个图片经过了一个7 * 7卷积…

目标检测中的感受野

一、定义 卷积神经网络输出特征图上的像素点 在原始图像上所能看到区域的大小,输出特征会受感受野区域内的像素点的影响 在卷积神经网络中,感受野(Receptive Field)是指特征图上的某个点能看到的输入图像的区域,即特征图上的点是由输入图像中感受野大小区域的计算…

感受野的理解与调研

问题来源 讲论文的时候,突然被别人问到感受野是个什么东东? 就百度查了一下: 重要知识链接总结 画深度学习的模型图方法:知网链接 神经网络模型图网站:画模型 感受野 一、感受野的概念 感受野(Receptive Field&am…

卷积的感受野

title: 卷积的感受野 date: 2022-06-14 19:52:38 tags: 深度学习基础 卷积的感受野 文章目录 title: 卷积的感受野 date: 2022-06-14 19:52:38 tags: 深度学习基础卷积的感受野什么是感受野为什么浅层特征预测小目标,深层特征预测大目标深层特征检测大目标&#xf…

感受野

感受野 先图解一下啥是感受野 感受野具体就是通过卷积核扫描原始图片之后一个feature map的格子代表原始图片的范围大小。 如上图,这是一个55的原始图片padding11,卷积核33,步距2。卷积扫描两次的示意图。 (2个33的卷积核扫描两次…

卷积神经网络中感受野的详细介绍

"微信公众号" 本文同步更新在我的微信公众号里面,地址:https://mp.weixin.qq.com/s/qMasyxRILzyEF3YyLvjzqQ 本文同步更新在我的知乎专栏里面,地址:https://zhuanlan.zhihu.com/p/39184237 1. 感受野的概念 在卷积神经…

感受野详解

目录 概念举例感受野的计算规律两种计算感受野的方法从前往后从后往前 推导VGG16网络的感受野结构从后往前从前往后 感受野大于图片为什么要增大感受野 概念 在卷积神经网络中,感受野(Receptive Field)的定义是卷积神经网络每一层输出的特征…

深度理解感受野(一)什么是感受野?

Introduction 经典目标检测和最新目标跟踪都用到了RPN(region proposal network),锚框(anchor)是RPN的基础,感受野(receptive field, RF)是anchor的基础。本文介绍感受野及其计算方法,和有效感受野概念 什么是感受野? 感受野与视觉 感受…

感受野的含义及计算方法

1 感受野(Receptive Field)的概念 感受野(Receptive Field)的概念:在卷积神经网络中,感受野的定义是 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始输入图像上映射的区域大小。第一层卷积层的输出特征图像素的感…