Skip to content

科技爱好者周刊(第 292 期):所有代码都是技术债

这里记录每周值得分享的科技内容,周五发布。

本杂志开源,欢迎投稿。另有《谁在招人》服务,发布程序员招聘信息。合作请邮件联系(yifeng.ruan@gmail.com)。

封面图

意大利佛罗伦萨新机场,宣布了设计方案。候机楼顶部将有一个7.7公顷的葡萄种植园,用来酿造当地著名的葡萄酒。(via

所有代码都是技术债

代码是公司的资产,公司总是鼓励大家多写代码。但是,很多人(尤其是管理层)没有意识到,代码也是负债

代码越多,债越多,这就是程序员常说的“技术债”。

今天我想谈谈,什么是“技术债”?为什么你拥有的代码太多,不是一件好事。

“技术债”(technical debt)源自著名程序员沃德·坎宁安(Ward Cunningham)的一篇文章。他写了一句话:“交付代码就像负债累累。”

你的代码一旦进入生产环境,就像背上一笔债务,将来需要不断支付利息,除非代码不再使用。

这个比喻获得了共鸣,人们把代码带来的负担,称为“技术债”

为什么代码好比负债累累?这有两个原因。

第一个原因是,由于各种限制,代码的实现有问题,包含了 Bug,或者选择了有问题的组件,后期需要修改或重写。

第二个原因是,即使代码是完美的,但由于技术进步,它会逐渐腐化过时,后期需要不断维护和更新,这通常比原始开发成本更高。

这意味着,无论多么小心,上线的代码总是有“技术债”。 可以这样说,所有的代码都是技术债

“技术债”的可怕之处,在于你必须按时偿还,如果拖着不还,它就会像雪球一样越滚越多,维护成本越来越高,直到再也无法维护,只能放弃这段代码。

既然所有代码都是技术债,程序员写代码时,就必须考虑到它的长期成本,尽量减轻自己或别人日后的负担(利息)。

一个基本的事实是 代码越少,技术债越小;没有代码,就没有技术债。从这个角度看,软件开发的正确做法是下面两点。

(1)冗余的代码都要删除。

(2)只实现那些必须实现的功能,除非绝对必要,不要引入新功能。新功能必然带来新的代码,而且新功能一旦添加,就很难废除,总是会保留下来。

葫芦 AI

主流的 AI 模型,目前都是收费制。如果同时使用多个模型,每月是一笔不小的费用,而且过程很麻烦。

  • GPT-4:20美元/月
  • 文心一言:49.9元人民币/月
  • Midjourney:10美元/月
  • DALL-E:每张图片0.02美元

国内新出的“葫芦 AI”(HuLu AI),尝试解决这个问题。它在同一个界面,提供上面四个模型的访问,相当于“四合一”的国内镜像。

这个服务刚刚推出,目前处在推广期,优惠力度很大,只要298元,就可以永久无限量使用,免除逐一访问 GPT4 / 文心一言 / Midjourney / DALL-E 的麻烦,而且访问速度快。

葫芦 AI 希望通过周刊,向国内的开发者介绍自己。推广期结束后,他们将恢复原价498元。

它有试用点数,只要扫描上方海报的二维码,就可以免费试用。大家觉得效果满意,再考虑付费。

如果你对 AI 还不熟悉,葫芦 AI 还免费赠送学习资料。扫描上方二维码时,微信添加助理,就可以领取 【Sora 入门手册】 + 【ChatGPT 提示词大全】 + 【AI 变现案例实战手册】 的 AI 资料包。

科技动态

1、USB 止痒器

市场上出现了一种奇特的 USB 设备,当你被蚊虫叮咬后,它可以用来止痒。

你把它插入手机的 USB-C 口,然后用 App 可以控制它的发热。

当它发热以后,将其贴在被咬处,等同于热敷,很快就不痒了。

这么一个小玩意,在亚马逊的售价居然为30英镑(270元人民币)。

2、无音爆的超音速客机

目前,世界上没有超音速客机,因为超音速飞行会产生音爆,影响城市居民的生活。

美国宇航局正在开发一种没有音爆的超音速客机,并且已经生产出了一架原型机。

这架飞机长约30米,细长的圆锥形机头几乎占其整架飞机的三分之一。据说这种结构可以消除导致音爆的冲击波。

由于它的机头太长,驾驶室几乎位于整机二分之一的位置。这样的超音速飞机即使没有音爆,也载不了多少乘客吧。

3、单叶片风力发电机

传统的风力发电机有三个叶片。

一家荷兰公司发明了单叶片的风力发电机。

它装在浮标上面,水底下是一个大桶,通过铁链固定在海床上。

因为它是浮动的,根据风力和风向的不同,它跟海平面的角度也在随时发生变化。

它的优点主要是,制造和安装的成本低。目前处于测试阶段,顺利的话将会大规模部署。

4、车贷防拖欠专利

汽车贷款逾期不还,怎么办?福特汽车申请了一项专利,专门对付不还车贷的人。

在贷款偿还期前后,车辆会发出多次付款提醒。如果置之不理,车辆就会开始失去一些功能,比如空调、GPS、车窗控制等等。

每当车主出现在车内时,车辆就发出语音提醒,要你还款。

如果车主还是不还车贷,这个专利还有一个终极大招:车辆会自动开回停车场或者拖车点,让福特公司拖走回收。

文章

1、OpenAI 回应马斯克的长文(中文)

马斯克起诉 OpenAI,称后者违背开源承诺,成为微软的盈利性子公司。

这篇是 OpenAI 长篇回应的中文翻译(英语原文),透露了很多内幕。主要内容是 AI 需要大量算力和资金,所以不得不成立盈利性部门,马斯克当年对此知情,并表示支持。

2、Perplexity 会是“搜索的未来”吗?(中文)

英伟达 CEO 黄仁勋向媒体透露,他每天都使用 AI 工具 Perplexity 进行搜索。本文介绍这个对话式搜索引擎。

3、入行 15 年,我还是觉得编程很难(中文)

腾讯技术专家对其15年程序人生的思考,总结了8点经验看法。

4、100万级安装量的开源作品,一年有多少打赏收入?(中文)

作者在自己的开源作品里面,放了一个赞赏码,一年带来330元的收入。(@xxxily 投稿)

5、HTML 的 Switch 控件(英文)

Safari 17.4 引入了一个新的表单控件“滑块开关”(switch),从而将 iPhone 的这个控件带入了网页。

6、为什么我选择 Tauri 而不是 Electron(英文)

作者本来使用 Electron 开发跨平台桌面应用,后来改成了 Tauri。本文讲述了原因,以及他的感受。

7、text-wrap 的换行控制(英文)

长文本的自动换行,由 CSS 的 text-wrap 属性控制。本文讨论如何使用这个属性,让标题产生更美观的自动换行。

8、计算机从哪里获取时间?(英文)

计算机从 NTP(时间服务器)获取当前时间,但是 NTP 的时间又从何而来?本文图文形式地介绍人类如何确定时间。

9、如何在 Windows 上测试 Safari(英文)

苹果的 Safari 浏览器现在没有 Windows 版,本文教你一种方法,依然可以在 Windows 上测试这个浏览器。

工具

1、Ente

一个云相册软件,Google Photos 和 iCloud Photos 的替代品,以前是闭源产品,最近刚刚开源。

它的主要特点是提供端对端加密。其他的云相册软件,还有 ImmichPhotoPrism

2、Earthly

一个开源的 CI/CD 框架,可以在本地架设自动构建服务。

3、Vikunja

一个开源的代办事项(to-do)App,提供多种视图,有 Web 版和桌面版,还可以自己架设。

4、日语短文排版小工具

一个在线工具,生成漂亮的日文排版,支持横竖版式、自动假名标注、深浅两种主题、字体配置、高亮、下划线、字体等。(@miusuncle 投稿)

5、Web-Check

开源的网站分析工具, 可以分析网站的 IP 信息、SSL 链、DNS 记录、Cookie、域名信息、服务器位置、网站性能等,查看 Demo。(@WFANG12719 投稿)

6、ImageTools

AI 一键抠图(去除背景)的在线工具。(@handsometong 投稿)

7、zz-plan

甘特图/横道图的在线制作工具。(@lizhichao 投稿)

8、Windows in container

Docker 容器里运行 Windows 系统,可选择 Win7,Win10,Win11 等,支持自动激活,还支持远程桌面连接。(@wrenashe 投稿)

9、Rsdoctor

一个 JS 构建器的分析工具,能够查看构建产物的模块关系,并分析构建器对代码的更改,支持 Rspack 和 Webpack。(@easy1090 投稿)

10、Photo Relay

一个封面图片制作的在线工具。 Demo。(@zobor 投稿)

11、opfs-tools

浏览器私有文件系统 OPFS API 的一个封装库,提供更简单好用的 API。(@hughfenghen 投稿)

12、ast-grep VSCode

一个使用正则表达式进行代码搜索、替换的 VSCode 插件。(@HerringtonDarkholme 投稿)

掘金动手实验室

学习新技术,最重要的就是动手实操,但是这样的机会比较少,你不一定能遇到让你尝试的场景。

本周有一个好消息,掘金动手实验室(JUEJIN Code Lab) 正式推出啦!

它是一个新技术实操为主题的系列活动,致力于理论知识转化为实际应用,并让参与者之间进行技术交流。

它由稀土掘金技术社区精心策划,与众多领先的工具和平台厂商携手合作,将涵盖多个技术领域,确保每一位参与者都能找到自己感兴趣的内容。

第一期活动的主题,就是现在最热门的 AI,由稀土掘金社区和扣子(coze.cn)共同发起。本次活动通过动手实操的方式,让你的想法和创意在 AI 的帮助下落地。

活动分为3月16日的北京场和3月30日的深圳场,地点就在北京/深圳的字节工区。

所有线下参与的同学,除了能够接触 AI 开发以外,还都有机会获得掘金的丰富礼包、以及扣子(coze.cn)的官网推荐、API 内测和官方访谈。

欢迎大家点击链接,或者扫码海报的二维码,报名参与,进行 AI 开发实操。

资源

1、一译

用户可以在该网站搜索或者上传 arXiv 论文(暂时只支持 HTML 版本的论文),它会自动机器翻译,提供对照阅读。(@yiyibooks 投稿)

2、京墨

一个开源的安卓 App,随身的古诗文、歇后语、成语、绕口令等等的图书馆。(@hefengbao 投稿)

3、OpenMoji

这个项目收集各种开源的 Emoji,开发者和设计师可以提交自己的作品。

4、Docker Compose Examples

这个仓库收集各种常用的 Docker Compose 配置文件。

5、学习 x86-64 汇编语言

一本英文的汇编语言入门教材,以 Ubuntu 平台为例。

图片

1、落叶艺术

一个欧洲艺术家在公园里,把落叶整理成各种奇怪的形状,让公园有了更多的趣味。

2、最后的快车

《最后的快车》(The Last Express)是上个世纪末发行的一款电子游戏。

它讲述了一个美国人在1914年,登上最后一班从巴黎到伊斯坦布尔的“东方快车”的故事。

整个游戏场景,都发生在车厢内。下面是真实车厢的历史照片。

游戏设计师根据这张照片,进行建模,以数字形式还原了当时的场景。

文摘

1、有些人就像 ChatGPT

大家都说 ChatGPT 像人,但是我觉得,还有另一方面,那就是有些人很像 ChatGPT,尤其是在学术界。

ChatGPT 不理解任何材料,但可以利用这些材料,快速找到问题的合理答案。它会综合和模仿,有时表现得非常令人信服,就像某个知识渊博的人在谈论某个主题。

学术界的很多人也是这样,他们很聪明,吸收了说话和构建理论的方法,并且善于听起来令人信服。

但是,如果你问一个探索性的问题,就会发现他们的理解很少,一切侃侃而谈都是表面的,没有深度。这都是模仿而不是真正的思想,他们只是故意让别人觉得似乎有道理。

许多领域的许多人,表现得就像 ChatGPT 的真人版,特别是在那些不做太多实证工作、不涉及对事实或假设进行检验的学科。他们制造的文本越多,就越危险。

这种人有很多明显迹象,比如使用非常笼统的术语,以及听起来巧妙的表述或行话,内容里面很少有事实,例子也很少或者很随意,没有真实的感受,而且通常也不会足够清楚地说出他不同意什么。

我现在意识到,我不理解某人在说什么,有时很可能是他们不知道自己在说什么,表现得像 ChatGPT。

我将其称为“吹泡泡”,即没有实质内容但能让他人信服的说话能力。这是很多大学领导的重要技能。

现在,ChatGPT 向我们展示了尽管不理解,但将大量材料合成为可信的文本流,是完全可以做到的。也许这是不可避免的,但真是一种非常不健康的恶习——人们应该走出去,观察事物,清晰说出自己的真实感受。

我明确意识到,自己更愿意被那些行为不像机器人的人包围,更愿意倾听那些有原创思想的人的声音。

言论

1、

如果你没有时间集中精力学习新知识,那么就花时间复习已经学过的内容。

-- Hacker News 读者

2、

浏览器地址栏兼作搜索输入栏,这一定是史上最值钱的 UI 控件。谷歌为了成为这个控件的默认搜索引擎,每年支付 Firefox 4亿美元,Safari 150-200亿美元。

-- 《史上最值钱的 UI 控件》

3、

一切都是模糊的,直至你试图使其精确时,你才会发现,我们日常表达出来的精确与真正的精确相距甚远。以至于当我们说话时,你无法假设这就是对方真正的意思。

-- 伯特兰·罗素(Bertrand Russel),英国哲学家

4、

忒修斯之船(Ship of Theseus)是公元一世纪的希腊作家普鲁塔克提出的哲学问题:如果雅典国王忒修斯的船的木头逐渐被替换,直到所有的木头都不是原来的木头,那这艘船还是原来的那艘船吗?

-- 维基百科

5、

每一个最佳实践的背后都有一个恐怖的经历。

-- Julia Evans

往年回顾

摩天大楼是反人类的(2023 #245)

你做过不在乎结果的项目吗?(2022 #195)

大家不出门,经济怎么办?(2021 #145)

远程办公暴露冗余岗位(2020 #95)

(完)

Released under the MIT License.