Redian新闻
>
Oracle 2500 万行的屎山代码有多“恐怖”?

Oracle 2500 万行的屎山代码有多“恐怖”?

公众号新闻

关注飞总聊IT,了解IT行业的方方面面。


【导读】:2018 年 Hacker News 上一篇对 Oracle 屎山代码的吐槽帖子,@宝玉XP 老师最近翻译了,转过来大家一起看看。

Oracle 数据库 12.2 版本竟然包含了将近 2500 万行的 C 语言代码。


想想都觉得可怕!在这个产品里,改动哪怕一行代码,都有可能导致成千上万的测试失败。历经数代程序员在紧迫的截止日期中辛勤编写,结果却是代码变得杂乱无章。


Oracle 中复杂的逻辑、内存管理、上下文切换等功能,竟然是靠成千上万个标志 (flags) 来维系的。整个代码中充斥着神秘的宏,要理解这些宏的含义,常常需要亲手扩展、一天甚至两天的时间去研究。


有时候,为了预测代码在不同情境下的表现,你需要理解多达 20 个甚至 100 个不同的标志值及其影响。我这可不是夸张。


这个产品之所以还能运行,全靠着无数的测试!


Oracle 数据库开发者的日常是这样的:


  • 开始修复一个新的 bug。

  • 花上两周时间去弄懂那 20 个相互作用神秘的标志,这些标志造成了 bug。

  • 为了应对新的特殊情况,增加一个新标志。再写几行代码,检查这个标志,尽量绕过问题,避免 bug。

  • 把修改提交到一个由 100 至 200 台服务器组成的测试农场。这些服务器会编译代码,构建新的 Oracle 数据库,并分布式地运行数百万个测试。

  • 回家,第二天再来处理其他事务。测试可能要跑 20 到 30 小时。

  • 回家,第二天再来查看测试结果。运气好的时候,大约有 100 个测试失败。运气差时,可能有 1000 个。随机挑选几个测试,试图理解你的假设出了什么错。可能还得考虑另外大约 10 个标志,才能真正弄明白 bug 的本质。

  • 为了解决问题,增加一些新的标志,再次提交测试。又等 20 到 30 小时。

  • 接下来的两周,不断重复这个过程,直到找到正确的标志组合。

  • 终于有一天,你成功了,没有一个测试失败。

  • 为你的更改新增上百个测试,以确保下一个不幸碰到这段代码的开发者不会破坏你的成果。

  • 为最终版本的测试提交工作,然后提交审查。审查过程可能又要花费 2 周到 2 个月。与此同时,继续修复下一个 bug。

  • 两周到两个月后,一切完成后,你的代码终于能合并到主分支了。

以上是 Oracle 程序员修复 bug 的真实写照。想象一下开发新功能得有多艰难。开发一个小功能,比如增加新的认证方式(例如对 AD 认证的支持),竟然需要半年到一年,有时甚至两年!


这个产品居然还能运行,真是个奇迹!


我已经不在 Oracle 工作了,以后也不会再回去了!


网友评论

@Espressopaws: Oracle 原北京研究院的家伙就是天天这样修 bug 的。话说近千个 if-else,再快的 CPU 都快不起来,竟然还能运行。以前老板碰到 20 多个 if-else 嵌套在一起都受不了,在一次酒后吐言对这样的程序员 “绝望”,后来这哥们非常识趣地主动离职了。


@用户5400427920: 能测试和验证已经是业界顶流了,我们接手我司一个项目的工程化,从项目 25 万行里清理删除了 15 万行死代码,期间还有算法给死代码里加实验,发问,答复:“这块代码的 keyword 和他接到任务的 keyword 相同,所以就在这加了”。在我们接手前这个项目已经稀里糊涂迭代两年了


@tombkeeper: 我早年研究过一次 Oracle 的漏洞,后来再也不搞了。逆向 Oracle 的感觉就像在热带雨林里找一只青蛙,然后通过控制丢虫子的位置和节奏让青蛙跳桑巴舞。


@一切皆有可萌:更悲催的是,1900 年判定为闰年这个错误,甚至不是 Excel 的,而是更早的一款电子表格软件 lotus-1-2-3 的。但是微软为了占领电子表格软件的市场,必须要兼容 lotus-1-2-3 的文档格式,结果就必须把它的 bug 也兼容进来。


@老张评论:著名的化学工程模拟软件 aspenplus,核心代码是创业者当年读博士时熬夜的 fortran 代码。估计后来他自己也看不完全明白。谁也不敢动。再谁也不明白核心的基础上开发,可不是就是穷举一切可能。

原贴:https://weibo.com/1727858283/NuM5LyWWq


我最近在写一个职场专栏:飞总的职场宝典。内容涵盖职场的方方面面,以飞总聊IT2016年以来的职场文章精华和飞总10多年工作经验为基础,有料有干


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
华人别再卖了!堪称“恐怖分子”!公告显示:“无论死活都要上缴”进入中国市场14年,Moncler品牌如何布局和发力?【华丽智库】发布《Moncler在中国》研究报告伦敦2月UNCLE合租,仅£369/周;适合UCL/LSE/KCL的Studio仅£304/周;转租更便宜! (1月22日更新)约270万行代码!我国自主研发,今日发布AI也造代码屎山!研究发现GitHub Copilot代码可维护性差,偏爱“无脑重写”而非重构复用已有代码留学生涂鸦竟成“恐怖主义”?希望法国作出正确选择!闲题“恐怖45秒”,亚裔夫妇遇袭传家宝被抢LLM会写代码≠推理+规划!AAAI主席揭秘:代码数据质量太高|LeCun力赞震惊!波士顿机场查出“恐怖野味”,男子返美偷带4具“腊猴”:自己要吃的澳洲又现“恐怖邮轮”!新冠和肠胃炎同时爆发,乘客:隔离规定形同虚设华为究竟有多“黑”?智界S7首发试驾赛道狂飙、泊车代驾、闹市智驾…才知道真相Rust 编写的 Zed 编辑器开源:约 27 万行代码、主打“高性能”一场67万行代码的应用重构【突发】美加边境发生爆炸!两死一伤,疑似“恐怖袭击未遂”“反舰导弹直接命中”美国船只!白宫:列为“恐怖组织”,30天后生效!胡塞武装:袭击将继续恶心!美学校保洁员在学生食物放自己的屎尿被逮捕。澳珠宝行遭抢, 警察却把老板逮捕! 亚裔妻子穿戴上万行头, 高调出庭“恐怖版米老鼠”来了我们常说的“真空”,到底有多“真”?又是如何“空”?小说:兰欣与乌茶 36冬季时间是从今天的几点开始的?四次写入国家发展规划,这个艺术专业有多“红”?哈马斯:准备释放70人换5天停火!以色列:授权防长可将外国人定为“恐怖分子”!联合国及多国设施遭以军袭击…为什么“中式恐怖”的形象大多是女性?土耳其之行(3):以弗所古城吓得魂飞魄散!死亡谷游客惊见“恐怖”野生生物,猛踩刹车酿车祸(图)代码屎山噩梦加速来袭,都是AI生成代码的锅?Rust编写的Zed编辑器开源:约27万行代码、主打“高性能”突发!澳CBD曝枪击,有人中弹!更多细节曝光!目击华人:“还以为拍电影,太恐怖”...枪声不断,午夜一男子下半身被打爆华为贡献 88.75%,开源鸿蒙 OpenHarmony 在 2023 年累计新增 1620 万行代码写出屎山代码的 12 个技巧 ,一定得会 !纪念克强祖传“屎山代码”终于有解了,GitHub Copilot Chat 下个月全面上线,聊聊天就能看懂代码、捉Bug!1人开发Steam好评96%,画风毛坯、后期震撼的放置游戏有多“上头”?
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。