ARTICLE DETAIL

深度长文:你敢信吗?人类基因组就是个跑了38亿年没人敢重构的屎山代码

熊猫体育 - 从现在开始,重新理解体育 442 阅读 约 5.5 分钟
DEEP
READING
熊猫体育 - 从现在开始,重新理解体育 资讯动态 深度长文:你敢信吗?人类基因组就是个跑了38亿年没人敢重构的屎山代码
返回资讯列表
深度长文:你敢信吗?人类基因组就是个跑了38亿年没人敢重构的屎山代码

先问你个问题。 如果你刚入职一家公司,领导把你拉到一边,神神秘秘地说:"小X啊,咱们有个核心项目,跑了38亿年了,从来没出过宕机事故,现在交给你维护。" 你是不是觉得撞大运了?38亿年不宕机,这系统得多牛逼? 然后领导补了一句:"哦对了,这个项目没有文档,没有测试环境,从来没人重构过,之前负责的程序员都老死了,你看一下代码吧。" 你打开代码仓库一看, 我去。 整个代码库30亿行,其中90%的代码是

本文由熊猫体育整理发布:

先问你个问题。

如果你刚入职一家公司,领导把你拉到一边,神神秘秘地说:"小X啊,咱们有个核心项目,跑了38亿年了,从来没出过宕机事故,现在交给你维护。

" 你是不是觉得撞大运了?

about image

38亿年不宕机,这系统得多牛逼?

然后领导补了一句:"哦对了,这个项目没有文档,没有测试环境,从来没人重构过,之前负责的程序员都老死了,你看一下代码吧。

" 你打开代码仓库一看, 我去。

整个代码库30亿行,其中90%的代码是注释掉的废弃版本,还有一大段是不知道谁复制进来的别的项目的片段。

你想找个函数说明,搜出来一堆带// TODO: deprecated的标记,但没人敢删。

更离谱的是,你发现某个核心模块的架构是反的,但是改不了,因为一改整个系统就崩。

你瘫在椅子上,问领导:"这谁写的?

" 领导说:"没人写。

这项目是自己长出来的。

" 这个项目,就是人类基因组。

说白了,你第一次翻开人类基因组图谱的时候,任何一个有三年以上经验的程序员都会产生一种强烈的既视感:这不就是我上周刚接手的那个祖传项目吗?

你先别急着反驳。

咱们慢慢说。

你第一天上班,想先熟悉一下代码结构。

你随机点开一个基因,嗅觉受体基因。

看了半天,你发现一个离谱的事:这堆基因里,差不多一半是坏的。

就是那种,函数名还在,注释也还在,但是里面的逻辑早就因为几个随机的字符替换废掉了,调用一下直接返回错误。

但问题是,这些坏函数就这么留在代码库里,每次编译的时候还要被一起打包,每次细胞分裂的时候还要被完整复制一遍,占空间不说,还浪费CPU。

你数了数,人类基因组里大概有两万个这样的假基因。

两万个。

你是不是想说:那删了啊?

别着急。

你刚想删,旁边一个老员工凑过来,拍了拍你的肩膀:"小伙子,别乱删。

上次有人删了一个看起来没用的假基因,结果那个基因不知道怎么跟另一个功能搭上了,整个系统直接出问题了。

" 这还不是最离谱的。

你继续翻代码,发现整个基因组里,有大概10%的内容是同一段重复序列,叫Alu片段,足足有一百多万份拷贝。

就像你在一个项目里,同一个注释块复制了一百多万遍,散落在代码库的各个角落。

没人知道它为什么在那儿,也没人敢动它。

更离谱的是,你还发现有大概8%的代码,明显不是"原生"的,它们是古代病毒感染的时候,把自己的DNA插到人类基因组里的。

就像你打开一个祖传项目,发现里面有8%的代码是十年前一次黑客攻击留下的后门,没人清理,就这么一直留着,每次编译都带上。

你看到这儿,已经开始怀疑人生了。

这时候你又发现了一个更扯的事:一个正常的基因,转录出来之后,里面有一大段是没用的,要手动剪掉才能用。

这段没用的部分,叫内含子。

啥意思呢?

就是你写了一个函数,这个函数90%的代码都是注释,真正能干活的外显子只占10%。

每次调用这个函数之前,系统要先花一大堆CPU,把那些注释一段一段剪掉,然后才能运行真正的逻辑。

有的基因更夸张,99%都是要剪掉的废话,真正有用的就一丢丢。

你算了一下,如果把这些内含子都删了,转录效率至少能提高十倍。

你又想删。

老员工又凑过来了:"小伙子,内含子不能删。

你不知道吗?

内含子有个功能叫可变剪接,就是同一段基因,可以通过不同的剪接方式,产出不同的蛋白质。

你删了内含子,一个基因就只能干一件事了,那得少多少功能?

" 你愣了一下:"那.

.

.

那为什么不能一开始就写清楚?

一个基因对应一个功能,多清爽。

" 老员工翻了个白眼:"你以为是写Hello World呢?

" 好吧。

你忍了。

你继续往下翻,翻到眼睛这个模块的时候,你彻底坐不住了。

你发现视网膜的感光细胞,是朝后的。

什么意思?

就是光线照进眼睛,要先穿过一层血管,再穿过一层神经纤维,然后才能到达感光细胞。

感光细胞本身是朝着后脑勺的,背对着光源。

更扯的是,所有的神经纤维要从视网膜前面汇聚到一起,然后穿出眼球连到大脑。

这个穿出的地方,没有感光细胞,就是我们的盲点。

你当场就拍桌子了:"这谁设计的?

把感光细胞反过来装?

这不是脑子有坑吗?

" 老员工慢悠悠地说:"这是五亿年前定的架构。

那时候我们还是鱼。

" "五亿年前.

.

.

那改过来不就行了?

" "改不了。

"老员工摇摇头,"你想想,要把视网膜翻过来,是不是得先让感光细胞在中间过渡一下?

就是那种半朝后半朝前的状态?

" "对啊。

" "问题是,半朝后半朝前的鱼,视力是不是比朝后的还差?

" 你想了想:".

.

.

好像是。

" "那不就结了?

五亿年前那条想把视网膜翻过来的鱼,因为中间状态视力太差,被吃掉了。

这条路就断了。

后面所有的脊椎动物,就只能在这个错误的架构上继续优化。

你现在想翻?

你翻一个试试?

中间状态直接失明,活不到下一代。

" 你沉默了。

这时候你想起之前看过一个竞品的代码,章鱼的眼睛。

人家的视网膜就是正着装的,感光细胞直接对着光源,没有盲点。

你问老员工:"章鱼跟我们不是一起演化的吗?

为什么人

关注熊猫体育,掌握更多体坛动态。

觉得有用?分享给朋友

让更多人看到这篇内容

YOU MAY ALSO LIKE

推荐阅读