ARTICLE / DEEP READING

热点资讯

从比赛现场到数据趋势,深入阅读每一篇值得关注的体育内容。

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

FEATURED ARTICLE

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

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

about image

SHARE THE IDEA

觉得有用?分享给朋友

让更多人看到这篇内容。

返回资讯列表

YOU MAY ALSO LIKE

推荐阅读

TRENDING STORIES

热点新闻

泰山队可在10天内发起申诉 球队人士也一头雾水

泰山队可在10天内发起申诉 球队人士也一头雾水

齐鲁网·闪电新闻2月8日讯(稿源 山东电视体育频道)2月8日下午,山东泰山队完成了广州第一阶段冬训任务,进入短暂的春节假期。而就在今天的晚间时分,一则消息受到前所未有的关注,因未满足《亚足联俱乐部准入规程》中关于逾期应付款的强制性准则,亚足联独立准入审核机构决定撤销山东泰山队在2021赛季亚冠联赛中的参赛资格。 因为泰山队的处罚而缺席的该参赛席位将根据《亚足联俱乐部赛事准入手册》进行重新分配,山东

西蒙尼:道歉不是一件容易的事,我为阿尔瓦雷斯感到高兴

西蒙尼:道歉不是一件容易的事,我为阿尔瓦雷斯感到高兴

凭借阿尔瓦雷斯的进球,马竞在主场1-0小胜拉科鲁尼亚,主帅西蒙尼在赛后采访中肯定了小蜘蛛的贡献和道歉行为。 对比赛的总结 我们最近非常辛苦,而拉科的逼抢做得很出色, 我们轻易就丢掉球权,踢得不好,无法组织起进攻,防守也不行,没能抢断皮球。 中场休息时,我们调整了球员的站位,让朱利亚诺去到右路,把李刚仁的位置提前。但比起阵型的调整,更关键还是球员的状态。 下半场截然不同,但我不喜欢1-0的比分,我们

相差5岁!本赛季最年轻的球队是24.3岁的篮网 最老是29.4岁的勇士

相差5岁!本赛季最年轻的球队是24.3岁的篮网 最老是29.4岁的勇士

首页 NBA视频 旧版页面 录像页面 足球视频 旧版页面 录像页面 NBA资讯 滚动资讯 足球资讯 滚动资讯 电竞 电竞资讯 电竞视频 综合 综合资讯 综合视频 比分 数据 NBA资料库 资料 个人 下载客户端 新版 直播首页 > NBA篮球资讯 >相差5岁!本赛季最年轻的球队是24.3岁的篮网 最老是29.4岁的勇士 相差5岁!本赛季最年轻的球队是24.3岁的篮网 最老是29.4岁的勇士 直播吧

广东莲阳大桥管道断裂,多人坠河,更多内情曝光

广东莲阳大桥管道断裂,多人坠河,更多内情曝光

原来很多人眼中放松解压的垂钓爱好,一不小心就会变成一场赌上性命的冒险。 10月25日,各大社交平台上关于广东汕头莲阳大桥的一段大桥管道断裂导致多人坠河的视频快速传播并引发热议。 随着视频曝光很多网友看完心里都捏了一把冷汗。 当地公安、消防紧急出动,全力开展水上搜救。看完现场画面,很多人忍不住想问:明明有安全护栏,为什么一定要冒险去大桥外侧?而网上流传的说法,更是让整件事变得耐人寻味,这件危险的野外

闪迪1TB便携SSD黑五前降价28%,读取速度达1000MB/s

闪迪1TB便携SSD黑五前降价28%,读取速度达1000MB/s

黑五还没到,亚马逊先把闪迪新一代1TB便携SSD的价格放到了 159.99美元 ,免运费,相当于打了 72折 (省28%)。 这块盘的核心卖点是速度:接上电脑或笔记本的 USB 3.2 Gen 2 接口,读取速度最高可达 1000MB/s 。它完全靠USB线供电,不用额外带电源适配器;插上就能用,不需要装软件,包装里附一根USB-C线。 体积上,它比常见的外置机械硬盘小得多:宽 1.77英寸 、长