网易首页 > 网易号 > 正文 申请入驻

程序员吐槽Matlab代码:注释比代码长3倍,科学家写的代码有多野?

0
分享至

在程序员圈子里,Matlab一直是个神奇的存在。搞科研的视若珍宝,写代码的避之不及。最近,一位名叫Andre的开发者分享了一段来自同事Jude的Matlab代码,瞬间在技术社区引发热议——不是因为代码有多精妙,而是因为这段代码的注释,简直比代码本身还要精彩。

事情是这样的:Andre的团队需要用Matlab管理实验场景,任务本身不复杂——生成一组参与者专属图片,存进数据库,之后能引用就行。但偏偏在他们用的数据库产品、Matlab许可证和各种限制的交汇处,他们发现:这事儿居然没有一条好走的路。


这时候,同事Jude站了出来,留下一句经典台词:"别担心,我能凑合着搞一个出来。"然后,就有了下面这段让程序员们集体沉默的代码。

这段代码到底有多野?

咱们先看看这段代码的注释风格。变量名是缩写,注释是意识流,逻辑是螺旋式。比如这个:

nMk = 1; %counting non-response triggers, this cycles with each trial

翻译一下就是:"nMk等于1,用来数非响应触发器的数量,这个变量会随着每次试验循环变化。"听起来还挺正常?别急,往下看。

紧接着的注释是:"it's kinda roundabout, but the only recognisable part is the response, yet I refer to it only by elision, and instead count the stimuli to reconstruct the pattern"——"这有点绕,但唯一能认出来的部分是响应,不过我偏不直接说它,而是通过数刺激来重建模式。"

看到这儿,不少程序员已经露出了"地铁老人看手机"的表情。这哪是写代码,这是写诗啊。

注释里的心路历程

更绝的是,这段代码的注释完整记录了一个程序员(或者说科研人员)在写代码时的内心戏。比如这个case 1的分支:

case 1 %an almost reliable stimulus

"一个几乎可靠的刺激"——注意这个"几乎",充满了不确定性的美感。然后代码检查触发器是不是'S1',如果是,就把它改名为'cross',然后进入下一个状态;如果不是,就记下"miss",然后跳到响应状态。

注释里写着:"it must be a non-response"(这必须是一个非响应),结果else分支里写着"except when it is not"(除非它不是)。这种自我否定的幽默感,简直可以入选程序员段子大全。

到了case 2,注释变成了"usually reliable"(通常可靠)。"通常"这个词用得妙啊,既表达了信心,又给自己留了退路。然后代码检查'S1',如果是,就命名为'face',记下位置;如果不是,就把整个试验标记为删除,记下miss,然后跳到响应。

注释里还特别贴心地写着:"trailing triggers at the end should be ignored"(末尾的多余触发器应该被忽略)——看来作者已经被这个问题坑过不止一次了。

最精彩的部分来了

case 3的注释直接封神:"this one is not reliable, and sometimes is duplicated instead of missing"——"这个不太可靠,有时候会重复而不是缺失。"

然后代码开始处理这种"不太可靠"的情况:如果是'S1',先命名为'empty';然后检查下一个是不是也是'S1',如果是,就进入一个while循环,数一数到底有多少个多余的触发器。

注释里写着:"and then count how many excess triggers are actually here"(然后数一数这里到底有多少多余的触发器)。紧接着是:"nExcess = 1; %definitely one here already"(nExcess等于1,这里肯定已经有一个了)。

这种"肯定"的语气,配上前面"不太可靠"的铺垫,形成了一种奇妙的喜剧效果。

最后,代码把整个试验标记为删除,注释解释道:"this overwrites the same positions several time, but the important part is to get the preceding two, because I don't know which one of them is correct one, so I delete the whole"——"这会重复覆盖同一个位置好几次,但重要的是把前面两个也删掉,因为我不知道哪个才是对的,所以干脆全删了。"

程序员们的集体共鸣

这段代码被分享到技术社区后,迅速引发了程序员们的集体共鸣。有人评论说:"这注释写得比我的代码还清楚。"也有人表示:"这就是我写代码时的真实状态——一边写一边怀疑人生。"

更有意思的是,不少科研背景的程序员表示感同身受:"在实验室里写代码就是这样,没人教你软件工程,能跑就行。"

还有程序员从技术角度分析:"这段代码其实反映了一个很现实的问题——当工具不顺手的时候,你只能靠各种hack来凑合。Jude能在这种条件下把功能实现出来,已经算是本事了。"

确实,从功能角度看,这段代码虽然看起来绕,但注释里每一步都说明了"为什么要这么做"。它可能不是最优解,但它是作者在当时的约束条件下能找到的可行解。

代码之外的故事

其实,这段代码背后折射出的,是科研编程和工程编程之间的巨大鸿沟。科研人员写代码,目标是"验证一个想法";工程师写代码,目标是"维护一个系统"。两者的思维方式完全不同。

科研代码追求的是"能跑出结果",工程代码追求的是"可读、可维护、可扩展"。Jude的代码明显属于前者——它完美地完成了任务,但它的可读性,嗯,全靠注释撑着。

有程序员调侃说:"这段代码告诉我们,注释不是写给编译器看的,是写给下一个接手的人看的。而Jude显然很懂这个道理。"

还有人说:"如果每个程序员都能像Jude这样把思路写在注释里,那代码评审会容易很多。"

当然,也有较真的程序员指出:"这代码要是拿到我们组来review,估计会被打回去重写。"但立刻有人反驳:"人家是科研团队,能用就行,你要求那么高干嘛?"

这场关于代码风格的争论,最后演变成了"科研代码vs工程代码"的大讨论。有人总结道:"科研代码的终极目标是发论文,工程代码的终极目标是上线。目标不同,标准自然不同。"

而Jude本人,据说看到这段代码被疯传后,只是淡淡地说了一句:"能跑就行。"

这句话,大概就是科研编程的最高境界吧。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
女人最上瘾的三种“抚摸”,第一种就让他悄悄动心倒追

女人最上瘾的三种“抚摸”,第一种就让他悄悄动心倒追

三农老历
2026-08-20 03:11:42
14起造谣鸿蒙智行的案件被网安通报,1人被刑拘!网友:难怪华为做啥他们都说是AI,原来他们就是这么干的?

14起造谣鸿蒙智行的案件被网安通报,1人被刑拘!网友:难怪华为做啥他们都说是AI,原来他们就是这么干的?

大白聊IT
2026-08-19 00:43:57
痛心!38岁江苏美女教师梁娇去世,丈夫去世不到百天,女儿才7岁

痛心!38岁江苏美女教师梁娇去世,丈夫去世不到百天,女儿才7岁

云舟史策
2025-06-23 09:35:09
王菲附体啊!李嫣在北京街头的路人抓拍,松弛又带着一股桀骜的劲儿,网友:这个天使,她出生才有了嫣然天使基金

王菲附体啊!李嫣在北京街头的路人抓拍,松弛又带着一股桀骜的劲儿,网友:这个天使,她出生才有了嫣然天使基金

火山詩话
2026-08-17 16:46:19
离开黄有龙再嫁富豪,四年连生三娃,43岁患病后近况

离开黄有龙再嫁富豪,四年连生三娃,43岁患病后近况

用冷眼洞悉世界
2026-07-03 22:18:31
5死17伤!四川升学宴悲剧,举办宴席的这户人家,接下来或直面三重现实窘境

5死17伤!四川升学宴悲剧,举办宴席的这户人家,接下来或直面三重现实窘境

火山詩话
2026-08-19 10:59:39
太炸裂啊!三个孩子生父成谜,韦先生的老婆庭审上发声,她坚持不认错,坚称她婚内无过错

太炸裂啊!三个孩子生父成谜,韦先生的老婆庭审上发声,她坚持不认错,坚称她婚内无过错

火山詩话
2026-08-18 14:55:32
韩红被骂惨了!央视纪录片播出传播后,她称自己“给家乡申请了一条从拉萨到昌都的直飞航线的飞机”被证实忽悠

韩红被骂惨了!央视纪录片播出传播后,她称自己“给家乡申请了一条从拉萨到昌都的直飞航线的飞机”被证实忽悠

火山詩话
2026-08-19 05:30:43
人民日报多次预警!孩子戴的电话手表,早已不是单纯的护娃工具

人民日报多次预警!孩子戴的电话手表,早已不是单纯的护娃工具

阿振观点
2026-08-12 17:08:18
今夜,重大利好,医药股暴涨!但是,存储芯片、光通信还在跳水

今夜,重大利好,医药股暴涨!但是,存储芯片、光通信还在跳水

中国基金报
2026-08-20 00:54:45
Netflix 2026最佳动作剧集观看量破5.14亿小时登顶流媒体榜

Netflix 2026最佳动作剧集观看量破5.14亿小时登顶流媒体榜

热搜摘要官
2026-08-19 19:50:56
加息“熄火”矿价飙升,稀有金属布局窗口来了!

加息“熄火”矿价飙升,稀有金属布局窗口来了!

金融界
2026-08-19 20:50:07
江苏发布10名省管领导干部任职前公示

江苏发布10名省管领导干部任职前公示

金台资讯
2026-08-19 19:33:00
16GTB+1TB!新机曝光:搭载骁龙8E6 Pro+9000mAh!

16GTB+1TB!新机曝光:搭载骁龙8E6 Pro+9000mAh!

科技堡垒
2026-08-18 11:15:34
央视再三提醒:绑定银行卡的手机,务必开启这几项功能!

央视再三提醒:绑定银行卡的手机,务必开启这几项功能!

记录生活日常阿蜴
2026-08-12 06:02:43
公开称赞赖清德宽宏大度,王惠美将成国民党在中台湾选举的破口

公开称赞赖清德宽宏大度,王惠美将成国民党在中台湾选举的破口

金牛传声
2026-08-19 21:58:49
丢人丢到海外?《牛来》彻底失控,外媒点评一针见血,一地已禁播

丢人丢到海外?《牛来》彻底失控,外媒点评一针见血,一地已禁播

临云史策
2026-08-17 21:30:07
国乒从“养狼”到“关门”。松岛辉空曾说:“在中国练一个月,顶在日本打一年”。

国乒从“养狼”到“关门”。松岛辉空曾说:“在中国练一个月,顶在日本打一年”。

乒乓乐园
2026-08-20 01:04:04
超强厄尔尼诺事件要来了?今冬或现历史最强厄尔尼诺事件!多国遭遇高温、暴雨、干旱灾害,印度部分地区逼近50℃

超强厄尔尼诺事件要来了?今冬或现历史最强厄尔尼诺事件!多国遭遇高温、暴雨、干旱灾害,印度部分地区逼近50℃

每日经济新闻
2026-08-19 16:58:21
纸醉金迷啊!“陪睡门”主角魏莹光鲜奢华的日常曝光:玫瑰浴、高端聚餐、豪车出行、四处游玩

纸醉金迷啊!“陪睡门”主角魏莹光鲜奢华的日常曝光:玫瑰浴、高端聚餐、豪车出行、四处游玩

火山詩话
2026-08-17 06:58:41
2026-08-20 05:48:49
自愈小日子
自愈小日子
有态度网友ytd
210文章数 51关注度
往期回顾 全部

科技要闻

宇树的悬念还在后面

头条要闻

特朗普:预计今年晚些时候会见金正恩 可能在11月

头条要闻

特朗普:预计今年晚些时候会见金正恩 可能在11月

体育要闻

拥有“儿皇梦”的罗德里,为何选择巴萨?

娱乐要闻

章子怡财路遭到质疑,套现3亿冲上热搜

财经要闻

内部反腐,让大疆错过宇树250亿收益?

汽车要闻

小米澎程N70体验 后排空间夸张亦可旋转对坐

态度原创

亲子
房产
教育
健康
公开课

亲子要闻

工程车小故事:妹妹逃避吃药受伤 #儿童益智类手工玩具

房产要闻

涉及3800亩!海口秀英港又有大动作!

教育要闻

新初一40个班,全校110个班!南京多所“巨无霸”初中,阵仗有点大

这种脊柱侧弯,运动能救!

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版