先问你个问题。 如果你刚入职一家公司,领导把你拉到一边,神神秘秘地说:"小X啊,咱们有个核心项目,跑了38亿年了,从来没出过宕机事故,现在交给你维护。" 你是不是觉得撞大运了?38亿年不宕机,这系统得多牛逼? 然后领导补了一句:"哦对了,这个项目没有文档,没有测试环境,从来没人重构过,之前负责的程序员都老死了,你看一下代码吧。" 你打开代码仓库一看, 我去。 整个代码库30亿行,其中90%的代码是
本文由熊猫体育整理发布:
先问你个问题。
如果你刚入职一家公司,领导把你拉到一边,神神秘秘地说:"小X啊,咱们有个核心项目,跑了38亿年了,从来没出过宕机事故,现在交给你维护。
" 你是不是觉得撞大运了?
38亿年不宕机,这系统得多牛逼?
然后领导补了一句:"哦对了,这个项目没有文档,没有测试环境,从来没人重构过,之前负责的程序员都老死了,你看一下代码吧。
" 你打开代码仓库一看, 我去。
整个代码库30亿行,其中90%的代码是注释掉的废弃版本,还有一大段是不知道谁复制进来的别的项目的片段。
你想找个函数说明,搜出来一堆带// TODO: deprecated的标记,但没人敢删。
更离谱的是,你发现某个核心模块的架构是反的,但是改不了,因为一改整个系统就崩。
你瘫在椅子上,问领导:"这谁写的?
" 领导说:"没人写。
这项目是自己长出来的。
" 这个项目,就是人类基因组。
说白了,你第一次翻开人类基因组图谱的时候,任何一个有三年以上经验的程序员都会产生一种强烈的既视感:这不就是我上周刚接手的那个祖传项目吗?
你先别急着反驳。
咱们慢慢说。
你第一天上班,想先熟悉一下代码结构。
你随机点开一个基因,嗅觉受体基因。
看了半天,你发现一个离谱的事:这堆基因里,差不多一半是坏的。
就是那种,函数名还在,注释也还在,但是里面的逻辑早就因为几个随机的字符替换废掉了,调用一下直接返回错误。
但问题是,这些坏函数就这么留在代码库里,每次编译的时候还要被一起打包,每次细胞分裂的时候还要被完整复制一遍,占空间不说,还浪费CPU。
你数了数,人类基因组里大概有两万个这样的假基因。
两万个。
你是不是想说:那删了啊?
别着急。
你刚想删,旁边一个老员工凑过来,拍了拍你的肩膀:"小伙子,别乱删。
上次有人删了一个看起来没用的假基因,结果那个基因不知道怎么跟另一个功能搭上了,整个系统直接出问题了。
" 这还不是最离谱的。
你继续翻代码,发现整个基因组里,有大概10%的内容是同一段重复序列,叫Alu片段,足足有一百多万份拷贝。
就像你在一个项目里,同一个注释块复制了一百多万遍,散落在代码库的各个角落。
没人知道它为什么在那儿,也没人敢动它。
更离谱的是,你还发现有大概8%的代码,明显不是"原生"的,它们是古代病毒感染的时候,把自己的DNA插到人类基因组里的。
就像你打开一个祖传项目,发现里面有8%的代码是十年前一次黑客攻击留下的后门,没人清理,就这么一直留着,每次编译都带上。
你看到这儿,已经开始怀疑人生了。
这时候你又发现了一个更扯的事:一个正常的基因,转录出来之后,里面有一大段是没用的,要手动剪掉才能用。
这段没用的部分,叫内含子。
啥意思呢?
就是你写了一个函数,这个函数90%的代码都是注释,真正能干活的外显子只占10%。
每次调用这个函数之前,系统要先花一大堆CPU,把那些注释一段一段剪掉,然后才能运行真正的逻辑。
有的基因更夸张,99%都是要剪掉的废话,真正有用的就一丢丢。
你算了一下,如果把这些内含子都删了,转录效率至少能提高十倍。
你又想删。
老员工又凑过来了:"小伙子,内含子不能删。
你不知道吗?
内含子有个功能叫可变剪接,就是同一段基因,可以通过不同的剪接方式,产出不同的蛋白质。
你删了内含子,一个基因就只能干一件事了,那得少多少功能?
" 你愣了一下:"那.
.
.
那为什么不能一开始就写清楚?
一个基因对应一个功能,多清爽。
" 老员工翻了个白眼:"你以为是写Hello World呢?
" 好吧。
你忍了。
你继续往下翻,翻到眼睛这个模块的时候,你彻底坐不住了。
你发现视网膜的感光细胞,是朝后的。
什么意思?
就是光线照进眼睛,要先穿过一层血管,再穿过一层神经纤维,然后才能到达感光细胞。
感光细胞本身是朝着后脑勺的,背对着光源。
更扯的是,所有的神经纤维要从视网膜前面汇聚到一起,然后穿出眼球连到大脑。
这个穿出的地方,没有感光细胞,就是我们的盲点。
你当场就拍桌子了:"这谁设计的?
把感光细胞反过来装?
这不是脑子有坑吗?
" 老员工慢悠悠地说:"这是五亿年前定的架构。
那时候我们还是鱼。
" "五亿年前.
.
.
那改过来不就行了?
" "改不了。
"老员工摇摇头,"你想想,要把视网膜翻过来,是不是得先让感光细胞在中间过渡一下?
就是那种半朝后半朝前的状态?
" "对啊。
" "问题是,半朝后半朝前的鱼,视力是不是比朝后的还差?
" 你想了想:".
.
.
好像是。
" "那不就结了?
五亿年前那条想把视网膜翻过来的鱼,因为中间状态视力太差,被吃掉了。
这条路就断了。
后面所有的脊椎动物,就只能在这个错误的架构上继续优化。
你现在想翻?
你翻一个试试?
中间状态直接失明,活不到下一代。
" 你沉默了。
这时候你想起之前看过一个竞品的代码,章鱼的眼睛。
人家的视网膜就是正着装的,感光细胞直接对着光源,没有盲点。
你问老员工:"章鱼跟我们不是一起演化的吗?
为什么人
关注熊猫体育,掌握更多体坛动态。
觉得有用?分享给朋友
让更多人看到这篇内容