我们的世界,运行在无人能懂的“屎山代码”之上!

吐血整理!前端最恶心的 19 种代码屎山,你中招没? 遇到屎山不要怕,记住:“前人挖坑,后人填土,总有一天,青山绿水。对了,第20个屎山,谁来补充? 阅读详情

没有一种编程语言像我这么尴尬。

60多年了,我依然支撑着43%的银行系统,处理着每天3万亿美元的交易!

在我的发源地美国,由于信息系统开发得更早,我更是强势,95%的ATM和80%的银行都在用我。

ffa54265856260c29c1be3b988375ce2.png

在这个世界上,我依然有2200亿行代码在运行!

这让C++,Java这些后辈看得目瞪口呆。

没错,我就是COBOL。

先让大家看看我的样子吧,这是个简单的Hello World

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
AUTHOR. Liu Xin.
DATE-WRITTEN. 2022-12-15.
PROCEDURE DIVISION.
    DISPLAY "Hello, world".
END PROGRAM HELLO.

太简单了,我就不解释了。

这段代码稍微复杂一点,则用来计算小时工的工资,如果工作时间超过40小时,工资是1.5倍。

COMPUTE-GROSS-PAY.
    IF HOURS-WORKED > 40 THEN
        MULTIPLY PAY-RATE BY 1.5 GIVING OVERTIME-RATE
        MOVE 40 TO REGULAR-HOURS
        SUBTRACT 40 FROM HOURS-WORKED GIVING OVERTIME-HOURS
        MULTIPLY REGULAR-HOURS BY PAY-RATE GIVING REGULAR-PAY
        MULTIPLY OVERTIME-HOURS BY OVERTIME-RATE
            GIVING OVERTIME-PAY
        ADD REGULAR-PAY TO OVERTIME-PAY GIVING GROSS-PAY
    ELSE
        MULTIPLY HOURS-WORKED BY PAY-RATE GIVING GROSS-PAY
    END-IF

读起来是不是特别像普通的英语?

这就是当年美国国防部要求的,要“最大限度地使用简单英语”,“这样更多的人可以使用它来向计算机描述问题。”

我的语法中keyword有400多个,相比C和Python等语言的几十个,有人说这种语法太拖沓,繁琐,受不了。

但也有人很喜欢,说这是一种自解释、自包含的文档,只需要把代码念出来,就知道什么意思了。

我在处理“格式化数据”方面富有盛名,从文件中读取格式化的数据记录(如姓名、地址、社保号码、电话号码等),进行处理(如计算工资),然后保存到文件中,这是我的拿手好戏,所以我出现在了很多银行,保险、政府等重要的商业应用之中。

但悲催的是,能用我编程的程序员已经退休,在家抱孙子,学校也不教COBOL。

COBOL程序员彻底断档了!

由于代码时代久远,又无人能懂,COBOL代码经常被称为屎山代码。

疫情期间,美国失业补助系统用户量暴增,仅仅新泽西州就有32万新用户注册,系统不堪负荷,急需COBOL程序员维护,但就是找不到人。

各地州长在电视上反复呼吁,对外求援。

4dbda443fd2b800b9856614619af1a29.png

为了改变这种窘境,人们想了很多招数。

1. 让退休的COBOL程序员发挥余热。

美国的Bill Hinshaw爷爷已经75岁,60年代开始写代码,精通COBOL编程,几年前本来计划退休,但是客户不断地向他求救,于是他成立了一个公司:COBOL Cowboys (COBOL 牛仔),专门为那些绝望的客户提供帮助。

679c3878ccb0e9883cd3e5bf9ee068b4.png

4115959179ac107a936763626cd50aac.png

这家公司有20个兼职员工,公司最年轻的员工是50多岁。

这些有经验的COBOL程序员可以修复系统故障,编写手册,磨合新旧系统,时薪可达100美元。

对企业来讲,成本似乎很高,但是和重写相比,还是九牛一毛。

2. 重写代码

还有些银行,下定决心用别的语言把COBOL系统重写。

2012年,澳大利亚联邦银行在埃森哲和SAP的帮助下,更换了其核心COBOL银行平台。

这项工作最终耗时五年,耗资超过 10 亿澳元(7.499 亿美元),期间也遇到了很多问题,2015年支付系统发生故障,60万笔交易丢失。三个月后又发生了一次重大故障,导致客户无法使用银行卡。

2018年,英国TSB银行从基于COBOL的系统迁移,连续几天无法交易,迁移成本高达3.3亿英镑。

任何一个想把我干掉的高管看到这些数字,恐怕心里都会哆嗦一下吧。

用我写的系统是金融、政府和商业世界24/7 运转的重要支柱,迁移它们相当于在空中把飞机的螺旋桨拆下,安装喷气式发动机,这条路恐怕是走不通啊。

3. 人工智能

看到那些银行吃了瘪,大佬IBM坐不住了。

毕竟,大部分的COBOL代码都运行在他家的大型机之上,给大家找一个出路是IBM不容推脱的责任。

今年,IBM想了一招,利用人工智能自动地把COBOL转换成Java。

这个叫做wastonx的辅助工具可以帮助程序员理解、重构COBOL代码,甚至转换成Java代码。

嗯,有点意思。

17cae194b393169dec1b5b7e74d986c7.png

但我根本不相信,现在的人工智能真的有智能,能完全无误地把我大COBOL代码改成Java。

后来,IBM也承认,这只是个编程助手而已,程序员仍然需要对AI转换的代码进行调整和验证。

调整和验证?也就是说它并不能保证完全的正确性,最多是一个能提高程序员生产力的工具而已。

我放心了。

想想也挺神奇的,人类世界运行在60年前的无人知晓的COBOL代码之上!

随着老一代COBOL程序员的逐渐老去,下一代COBOL程序员在哪里呢?

全文完,觉得不错的话点个赞或者在看吧!

近期精彩:

巴西都发明两门流行的编程语言了!

继Linus之后,又一个动辄就“F**k You”的技术天才和营销大师出现了!

世界最强计算机,极少人见过,让程序员高薪工作一辈子!

这个波斯人的名字,成了无数程序员的梦魇!

四次刮骨疗毒,苹果是无可争议的卷王!

大开眼界的十大开源人工智能项目 这是一个强大的开源工具,能让你在不同框架之间自由切换,无需重写代码。它是一个开源工具,能用简单的SQL语言同时处理数据和AI模型,让一切变得有序而高效。Rasa是我开发智能聊天机器人时的首选,它让你轻松掌控机器人对话的每个细节。我经常用它快速验证模型在不同框架下的表现,省去了大量烦躁的调试过程。最近发现的Vapi是一个以API方式提供的语音AI工具,开发者友好程度超乎想象。KNIME是一个以拖拽方式构建数据分析流程的开源工具,仿佛是数据界的乐高积木。它像个忠诚的守门员,确保你的模型始终健康运行。 阅读详情

相关推荐

K210视觉项目上位机避坑指南:解决C#解析ESP8266 TCP图像流的乱码、卡顿与连接中断

本文详细解析了K210与ESP8266在视觉项目中的上位机开发问题,重点解决TCP图像流解析中的乱码、卡顿与连接中断问题。通过自定义协议、JPEG流重组、TCP连接优化等实战技巧,提升系统稳定性和性能,适用于嵌入式视觉开发者和C#上位机程序员。

weixin_28730131的博客 402

能把队友气死的8种屎山代码(React版)

例如我们项目中,这个useEffect内部执行的是第一点中的内容,即每次都会绑定一个scroll事件的回调,而且页面中有实时轮询接口每隔5s刷新一次列表,用户在该页面稍加停留,就会有卡顿问题出现。这还只是一种比较简单的三元选择符的嵌套,因为当各个条件分支都为true时,就直接返回了,没有做更多的判断,如果再多做一层,都会直接把人的cpu的干爆炸了。单文件高达1600多行!这个示例代码还比较简单,拿对应的值去后台可以找到对应的含义,如果是写死的是枚举值,而且还没有类型定义,那代码就很难维护了。

IT界那些事儿 7778

蓝牙HCI Dongle实战:从芯片选型到协议栈集成的完整指南

本文详细介绍了蓝牙HCI Dongle的实战应用,从芯片选型到协议栈集成的完整指南。通过对比CSR8510、nRF52840等主流芯片的性能和价格,提供选型建议和避坑技巧。同时,深入解析Zephyr协议栈移植和常见问题排查,帮助开发者高效完成蓝牙项目开发。

weixin_30786657的博客 322

何为屎山代码?

编程圈流传着这样一个有趣的小故事:一个哥们上班忽然怒气冲冲,大声质问:“这 TMD 谁写的代码,这么明显的 bug 都能写出来,还不写注释?屎山代码,也被称为"祖传代码",是历史遗留问题,是前人留给我们的"宝藏"。你一个人硬着头皮改,你必然疲惫不堪,身心俱疲,最后也必成拉屎之人,千万不要明知山有屎,偏向屎山行。通过良好的编程习惯,清晰的代码结构,充分的注释和文档,我们可以为后来者留下一个更加稳固的代码基础…但听我一句劝:屎山代码虽然看着难受,但一旦动手,山就可能塌了,将自己深埋于屎山之中,臭不可闻。

专注于全栈开发领域 1万+

UI-TARS桌面版模型部署

在 UI-TARS 中配置 VLM(视觉语言模型)模型,无论是选择云端(Hugging Face)还是本地(vLLM)部署,都需要经过一系列步骤,下面为你详细展开介绍。

二琳爱吃肉的博客 4539

手把手教你用Python 3.11和Node.js 18在Windows 11上搭建Dify开发环境

本文提供了一份详尽的Windows 11本地Dify开发环境搭建指南。文章手把手教你完成从Python 3.11、Node.js 18的安装配置,到PostgreSQL、Redis数据库服务的部署,再到前后端服务的启动与联调的全过程,并包含常见问题排查与效能优化建议,旨在帮助开发者构建一个稳定、可调试的Dify本地开发环境。

fire9的博客 645

能把队友气死的几种屎山代码

前几天在技术群里聊起Code Review的事,大伙儿似乎都憋了一肚子气:我觉得这份难言之隐应该要让更多人看到,就约了个稿:整理(脱敏)出了这篇小小的屎山合集,供大家品鉴。可能存在下面一些问题直接来一个代码例子,这是一个获取背景颜色的方法,但是随着业务的不断变化,背景颜色的来源越来越多,在一些业务人员的处理下可能是这样的:相信你在读上面的代码的时候是极为痛苦的,想要一目了然的知道最终会进入哪个分支,基本不可能。于是基于下面两个原则有了一个基础版本的重构:依赖参数缺失。 这样的话,每次页面有重渲染,该us

qq_66627105的博客 2695

基于FPGA的车道线检测系统设计

本文设计了一种基于FPGA的车道线检测系统,采用Altera Cyclone IV EP4CE10F17C8作为主控芯片,结合OV7725摄像头和LCD显示屏实现实时车道线检测。系统通过硬件流水线处理架构,依次完成图像采集、灰度转换、中值滤波、Sobel边缘检测和Hough变换直线识别等功能模块。所有模块均采用Verilog HDL实现,充分利用FPGA的并行处理能力,显著提升了系统响应速度。测试结果表明,该系统能够有效检测道路车道线,满足实时性要求,为ADAS系统提供了一种高效的硬件解决方案。

huanghm88的专栏 121

7年无人敢动的「屎山」代码:if循环19.8亿次

你是不是也有这样的问题?????速戳看视频????黑马视频号你玩过“侠盗猎车手5”(简称GTA 5)这个游戏吗?这个游戏是由Rockstar Games游戏公司(被玩家称作R星)出版发...

传智播客的专栏 3万+

【Halcon-1D测量】measure_pairs 函数功能(用于提取垂直于矩形/环形弧主轴的直边对)

HALCON算子measure_pairs是1D测量模块的基础工具,专用于提取垂直于矩形/环形弧主轴的直边对。该算子通过振幅阈值和灰度过渡规则(如positive/negative)进行边对分组,支持_strongest后缀选择最强边缘避免误配对。输出包含边缘坐标、振幅及内外间距(IntraDistance/InterDistance)。关键限制包括仅适用于直边、Sigma需≤0.5×测量长度,且忽略图像域。相比模糊版本算子,它更适用于边缘清晰的简单场景(如电子元件间距测量)。典型应用需配合gen_meas

weixin_45590420的博客 304

OpenCASCADE完整教程专栏完整目录

OpenCASCADE完整教程专栏完整目录

希望我的博客,能帮上你解决学习中工作中所遇到的问题 9702

Vue2屎山代码大盘点

危害程度:⭐️⭐️⭐️⭐️⭐️写个注释是举手之劳,花不了多少时间,而且前面所有的屎山堆起来,如果有注释的话还是可以快速理解其含义的,但是如果再加上不写注释,那就是天坑了,谁也救不了这个屎山;罗马的道路不是一日铺成的,屎山的代码也不是一天写成的,而是在每个开发者无所谓的心态下堆成的,如果平时多注意注意至少也能保证自己写的代码”留有余香“。建议读完本文之后再读一读参考文章,最后是严格地执行!如果以时间不够为借口而不执行那么看再多的文章也没有用!堆屎山没有终点,持续更新中......

BASK2311的博客 1930

ESP32与BH1750光照传感器结合使用的Web服务器案例

请注意,为了使代码正常工作,你需要将代码中的"你的WiFi网络名称"和"你的WiFi网络密码"替换为你自己的WiFi网络凭据。在代码中,我们首先导入了所需的库文件,包括Wire库用于I2C通信,BH1750库用于与光照传感器通信,WiFi库和WebServer库用于创建Web服务器。接下来,我们将编写一个Arduino代码来控制ESP32与BH1750的通信,并将读取到的光照强度值显示在Web服务器上。函数用于处理根路径的请求,其中我们读取光照传感器的值,并将其显示在返回的HTML页面中。

server_api196的博客 617

闲聊代码屎山

所谓“代码屎山”,是程序员间流传的一个梗,指陈年累月且复杂低效的代码,因为改动成本巨大,所有人避之不及。本文将和你一起探讨代码屎山的形成原因及其带来的危害,知已知彼,才能写出干净整洁的代码

yangshuquan的专栏 4116

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

为什么祖传代码被称为“屎山”?

任何设计人员,你几年之后再来看自己现在的作品,你就会觉得简直就是狗屎,拿出来真tm丢人。 如果你没有这种感觉,那说明你这行干不久了。 说到祖传代码不得不提之前在知乎上看到的两位网友的经历: 一 我刚入职第一天,旁边的妹纸告诉我,你是今年第五个负责这个模块的,心里凉了半截,这TMD才七月份啊,听她说最长的干了两个月。 我就不信那个邪,页面交互一般,后端不也就增删改查?能难到哪里去。 看了...

5271

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

何为屎山代码,如何避免

今天我们来聊聊前端界的屎山代码。所谓的“屎山代码”,通常指那些难以维护、逻辑混乱或违反最佳实践的代码。想象一下这个场景:同事:“帮我改个按钮颜色,5分钟搞定!你打开代码,发现:按钮样式被写死在20个地方全局样式表里有3个冲突的 .btnJS 里居然用定时器强制覆盖颜色…这需求,老子不做了!(然后默默按下了Ctrl+S)”遇到这种代码,真的是要人老命!这里我给大家总结了一些常见的前端屎山代码,大家看看有没有中过招、踩过坑。

h_TVT的博客 2144

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

为什么祖传代码被称为「屎山」?这个回答简直太形象了

经常听说祖传代码会被人称之为「屎山」,不同人可能有不同的体会,最近看到一个回答,简直是把这个阐述得“活灵活现”,大家来感受下吧。“ 阅读本文大概需要 3 分钟。 ”作者:Avalon原文...

静觅 2万+

什么是屎山代码?

如果你也想学习:黑客&网络安全的零基础攻防教程为什么说再厉害的程序员,也怕屎山代码?首先,屎山代码不是指的一种开发语言,而是对庞大项目的一个别称。常言道,屎山传万代,代代不吱声。每次传承都会遗留大量问题,接手的人一般都不敢动代码,只要项目能跑动就行了。有一些初生牛犊不怕虎的新人自认为能力很强,决定重构或者修改屎山,但往往都是搬着石头砸自己脚—自讨苦吃。究其原因,还是因为老程序员很多不喜欢写备注,语法比较随性,导致代码冗余,但后面项目大起来,改又不好改了,屎山只能越堆越多。

资深程序员,曾自学JAVA,C#,如今从业于网安行业 4037

代码检测器!一款专门揭露屎山代码的质量分析工具!

fuck-u-code —— 一款专门用于揭露“屎山代码”的质量分析工具,它以犀利又幽默的方式评估代码质量,告诉你的代码到底有多烂。

weixin_43400476的博客 1430

如何避免“屎山代码”——给初学者的建议

作为一名有多年从业经验的程序员,我见证了很多年轻的开发者从编程初学者到逐渐成长为能独立解决问题的工程师的过程。在这个过程中,最常见的挑战之一就是如何避免陷入“屎山代码”的泥潭。“屎山代码”是业内对那些混乱、难以维护、效率低下的代码的形象描述。初学者往往在编写代码时,过于专注于完成任务,忽略了代码质量和长期可维护性,最终导致代码堆积成山,难以理解、扩展和调试。那么,作为初学者,如何避免这一局面呢?

minstbe的博客 1077

如何一步步形成“代码屎山”——前端开发中的痛点与反思

要避免代码屎山的形成,我们需要在项目开始时就进行架构设计,保持良好的开发流程,重视代码质量,避免过度的需求变化,并及时进行技术债务的偿还。:Bug 的数量激增,修复 Bug 需要花费大量的时间,但由于代码本身的质量问题,修复 Bug 往往只能是权宜之计,无法从根本上解决问题。:由于代码缺乏清晰的架构和模块化,开发人员在进行重构时会发现难以找到合适的切入点,代码的依赖关系错综复杂,重构的成本大大增加。:随着需求的扩展,项目逐渐增加了大量的功能,但是最初的架构未能有效支持这种扩展,导致代码的不断堆砌。

wujiayu31415的博客 1260

网络是一座屎山

你不能像换辆车那样把它整个换掉,新能源车替换油车,那是一辆一辆换的,旧的不去新的不来,简单直接,但网络没有 “整台” 的概念,它的任何部分都和其他部分长在一起,你动这里,那里就出问题。网络和其它工程产品很不一样,它的任何部分都是不能轻易替换的,相比新能源车替换油车,协议统一升级几乎不可能,平滑升级也几乎不可能,所以,最终网络会变成像人体一样进化出的能用的屎山,网络优化职能将消失,因为网络越大,越无法改动。优化的人没失业,但他们干的事情变了,他们不再试图改造山脉,而是在山脉间引水造渠。

TCP/IP 1万+

如何根本上解决屎山代码的问题

业务扩展点清晰,业务价值已经可以持续提升;可扩展性高,较长时间可快速迭代;可维护性高,不易出现故障;代码可规范化,可管理。

剑飞的架构思维 5922

如何鉴定屎山代码?

不要用过多的全局变量不要写过长的函数,函数保持原子性,复杂功能要进行拆分不要习惯性忽略警告和异常导入依赖时,用什么导什么,不要一股脑地import *尽量多写注释,特别是在算法复杂的情况。

兴趣使然的创作者 869

接手了屎一样的代码 怎么办?

文/北妈仅需1.9分钟就能读完今天的文,带点味儿北鼻们大家好,我是北妈。1、今天刷知乎看到一个这个话题回答这个问题前,先来看一个真实的故事,它每天在你身边发生。一个哥们撸码时忽然怒气冲...

小北哥哥和北妈 1901

“祖传代码”堆成的“屎山”系统会好用吗?

如果我告诉你,全球最流行的桌面操作系统其实是“祖传”代码堆砌而成的,你肯定不会信。但事实确实如此。大家现在最常用的Windows系统,其实就是我所说的“屎山”系统。“一座很大的屎山,一座你见过的最大的屎山,每次你想修正一个Bug,都得爬到屎山的正中央去。” -- 亚马逊某技术开发工程师。

IT界那些事儿 3167
上一篇: Hadoop/Spark 太重,esProc SPL 很轻
下一篇: 真心建议大家冲一冲新兴领域,工资高前景好
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值