科技爱好者周刊(第 222 期):四十年编程感想

作者: 阮一峰

日期: 2022年9月 9日

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

本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐科技内容。

周刊讨论区的帖子《谁在招人?》,提供大量程序员就业信息,欢迎访问或发布工作/实习岗位。

封面图

8月12日是今年最后一次"超级月亮",摄影师在德国法兰克福拍到了一个超级大的月亮,在公寓楼之间出现。"超级月亮"指的是,满月正好发生在月球轨道的近地点。(via

本周话题:四十年编程感想

上周,国外程序员论坛 Hacker News 有一篇热门文章《四十年编程感想》

作者说,他8岁学编程,今年46岁,再过两年,就是学习编程四十周年了。他写了一大堆自己的感想,都是肺腑之言。

我觉得说得挺好,发人深思。他的文章很长,我摘录一些重点内容,与大家分享。

(1)编程是长期职业

你开始步入这个行业时,应该意识到,程序员是一个长期职业,你可能会从事20年甚至更长。你应该从长期角度看待编程。

在长期中,技术来来去去,语言也来来去去,精通一种技术或语言,并不能保证你的长期职业发展。

你的目标不必局限在学习什么语言或框架,只要吃透基础知识,你可以学会任何你想要的东西。

(2)多尝试不同的事情

你的编程生涯很漫长,刚刚开始时,不要急于求成。你只需要动手写代码就可以了,任何代码都没有关系,写完一个软件,再写下一个。

写不同的软件,尝试不同的事情。你会发现,自己需要学习很多不同的东西。你按什么顺序学习它们并不是大问题。

不要变得僵化,抱住某个领域不放。几乎任何学科都可以教给你一些东西。如果你太僵化,抗拒学习其他领域的知识,那你就输了。

多学习一些困难的东西,容易发现自己的问题。

你可以给自己定一个目标,比如"每周二做一件以前从没有做过的事情"。

当然,你最终需要深入某个领域。李小龙说过:"我不怕练过一万种拳法的人。但是一种拳练了一万遍的人,我怕他。"

(3)目标是变得更好

不管使用什么技术,你的目标都应该是动手做出成果,让自己变得更好。

20年后,你跟别人说:"我是一个拥有20年经验的程序员。"别人就会问你:"这20年你做了什么?"

你的职业生涯最终就是回答这个问题:你问自己,这20年我做了什么。

理想的情况是,20年来,你真正擅长了某件事,而且这件事是社会需要的或者有利可图的,你以某种方式"让它变大"。这样你就会拥有一个成功的职业生涯。

(4)继续工作

尽管已经46岁,我仍然喜欢编写软件。虽然成为伟大程序员的概率已经为零了,但是在这个年龄,我依然可以完成一些工作。

编程既不是短跑,也不是马拉松,而是日记。在日复一日的累积当中,完成你的事业。

作为一名程序员的关键,就是"继续工作",做出有价值的产品。

最早的程序员出现在1957年。经过这么多年,软件依然是一个年轻的行业,这意味着,我们仍然在初级阶段,这个世界还会有无限的有趣工作可以让你变得更好。

科技动态

1、确保未拆封

如何保证货物没有拆封过?

一位德国程序员提出一个简单的方法:你把东西放在密封袋里面,里面再装入彩色的豌豆或大米。

这些彩色颗粒会形成随机分布,一旦拆封就很难复原。

你在密封后,拍下照片发给收件人,对方收到货物后,再用软件甚至肉眼,检查一下彩色颗粒的分布是否跟图片一致,就可以确定有没有被拆开过。

2、密码硬币

澳大利亚发行了一枚五角硬币,纪念澳大利亚信号局成立75周年。

该局主要工作是维护和破解密码,所以硬币上印了四个密码,一个比一个难。负责人说,如果有人可以破解这四个密码,就可以申请到信号局工作。

结果,硬币发售当天,四个密码就全被破解了,具体的密码和解码详见这篇文章

3、最小的游戏机

一位英国程序员自己动手,制作了一个世界最小的俄罗斯方块游戏机。它的大小跟大拇指差不多,就是一块芯片加上四个按钮。

芯片的正面是0.91吋的液晶屏幕,背面是一个纽扣电池,所有代码都是开源的。他制作好的成品在网上出售,价格20美元。

4、无人机公路

英国政府决定大力发展无人机送货,在英格兰主要城市之间建立了一条265公里长的"无人机高速公路",这条路专门供无人机飞行。

无人机登记后,就可以上路,一路上都要跟地面传感器报告方位,并接受指挥,防止碰撞。

英国政府估计,到2030年这条路同时将有90万架无人机在飞行。这种专用道路以后可能越来越多,只供无人车和无人机使用,地面是无人车,天上是无人机。

文章

1、知乎水印事件(中文)

网友发现,知乎网页暗藏水印,用来发现是谁截图。这个事件曝光以后,知乎又把这个功能下线了。

2、太阳能无人机有什么用?(中文)

本月,中国航空工业集团研制的"启明星50"大型太阳能无人机首飞成功。本文介绍这种完全依靠太阳能供电的无人机有什么用。

3、我国两种长臂猿野外灭绝(中文)

过去几十年,中国分布的白掌长臂猿、北白颊长臂猿在野外均没有被监测到,可以认为已经野外灭绝了。

4、CSS Grid 在 Figma 的应用(英文)

Figma 操作面板使用 CSS 网格来实现,作者详细介绍它的实现,网格原来还能这样用。

5、99美元的 Chromebook 是什么体验?(英文)

作者为了测试 Flutter 应用在低端设备的表现,花99美元买了一台全新的联想 Chromebook 笔记本。他原本预期会很糟糕,结果完全出乎他的意料。

6、软件工程师如何成为全职"创作者"?(英文)

作者是一个软件工程师,从 Uber 辞职以后,全职依靠创作(写文章、卖课程、做视频等等)为生。他写了对这种商业模式的思考。

7、美国需要大量机器人(英文)

一个美国人给美国政府写的政策建议。这篇文章有价值的地方是提出了一个观点:机器人越多,创造的就业岗位越多。作者认为,传统看法是错的,机器人实际上有助于创造人类就业。

8、Python 星号*的用途总结(英文)

一篇面向 Python 初学者的科普文章,介绍星号*在这门语言的各种含义。

工具

1、lldap

一个轻量级的 LDAP(一种用户认证协议)开源实现,简化了使用方法。它自带前端,可以跟很多后端应用结合,为这些应用提供身份验证服务。

2、NESBox

一个开源的游戏平台,支持多人在线,一起玩 NES(俗称 FC 红白机) 游戏,有 web 版和桌面版。目前已经有很多游戏,预计有 1000+ 游戏,参考这篇介绍文章。(@mantou132 投稿)

3、JuiceFS

一个面向云原生设计的文件系统,可以挂载各种云存储,当作本地磁盘使用。(@DASWU 投稿)

4、Urara

一个静态博客生成器,基于 SvelteKit。(@kwaa 投稿)

5、Cleanup Photos

这个网页工具可以清除照片上不要的物体。用户上传照片以后,框选不需要的物体,系统会自动清除这些物体,用背景填充照片。

6、OurBoard

一个在线白板,你创建一个房间,把网址分享给其他人,大家就可以在一块网页白板上共同涂写。

7、gh-dash

GitHub 官方命令行客户端gh的插件,可以在命令行以面板形式,显示仓库的 PR 和 issue。

8、Rectangles

这个网页上,一个方块代表10分钟,一天24小时就是144个方块。可以一眼看到,当天还有多少个方块空着。

9、Nginx Proxy Manager

Nginx 经常用作反向代理,这个工具为反向代理提供一个 Web 管理界面。

扑克牌扫码器

最近,有人将条形码与扑克牌结合在一起。

他在每张牌的牌边印上了条形码,旁人根本意识不到,但是使用扫码器可以分辨是什么牌。

为了进一步增加隐蔽性,他还用特殊墨水,将条形码隐藏起来,人眼看不见,只有在红外线下才会显示。

他买了一台带有摄像头的树莓派,在摄影头上装了红外滤光片,将其改装为条码扫描器。

最后,他写了一个 iOS 客户端,将树莓派的扫描结果显示出来,每张牌是什么。下面就是实际的效果。

墨水也可以改成紫外线荧光墨水,在紫外线下会发光,这会比红外线更容易识别。

这个项目的完整代码,公布在 GitHub

资源

1、乔布斯档案

乔布斯家人建立的网站,用来为后人保存史蒂夫·乔布斯的各种材料。目前刚刚建立,内容还比较少。

2、从零开始的神经网络(Neural Networks from Scratch)

一个英文的图文互动教程,使用简单的语言和图片,解释什么是神经网络。

3、随机的谷歌街景

这个网站随机展示谷歌街景的照片,世界各地都有。(@shenzhw 投稿)

4、中华遗嘱网

这个网站提供遗嘱的知识和服务,属于半官方组织,收费不低,但是比自己去找专业服务还是方便和便宜一点。

图片

1、猴子洗红薯

日本宫崎县的猴子,有一种奇特的行为,会在海里洗红薯,洗了以后再吃。

传说是当地人冬天生火,猴子们也喜欢待在火堆旁取暖。有人用火烤红薯,顺手就给了猴子一个。猴子们拿到递给它们的热乎乎的红薯,马上就要吃,但是觉得很烫。

有一个猴子开始在水中冷却红薯。这种习惯逐渐蔓延到整个猴群,几乎所有猴子都学会了这种行为。

但是,科学家认为,这个传说是无稽之谈。猴子在海水中红薯,只是为了增加一点盐分。

2、逃出埃及的车流

美国内华达沙漠每年举办一个艺术节,叫做"燃烧的人"(Burning Man)。

今年的活动本周结束,上万辆车从沙漠里面的举办地离开,驶向最近的一个高速公路路口。结果造成了大堵车,整整堵了10个小时。

有人从空中拍下了这个罕见的"沙漠大堵车",戏称就像传说中的"逃出埃及"。

文摘

1、 Foo 大师的故事

Foo 大师遇到了一家大公司的面试官。

面试官说:"面试时,我问很多 Unix 程序员,他们在新兴的编程语言方面有多少年经验时,他们都会皱眉或生气。这是为什么?"

Foo 大师站了起来,开始在办公室里不断踱步。

面试官不解地问道:"你在做什么?"

"我正在学走路",Foo 大师回答。

"你不是自己走进办公室的吗,"面试官惊呼道,"而且也没有摔倒,你明明已经知道如何走路了。"

"是的,但是我是第一次来这层楼。" Foo 大师回答。

听了这话,面试官恍然大悟。

言论

1、

一位护士问临终的病人,他们有什么遗憾。她后来总结出了5个最常见的回答。

不要忽视梦想。不要工作过久。说出想法。交朋友。要开心。

-- Paul Graham

2、

一位医生曾经告诉我,医学院没教的一件事情是,医学和当医生是有区别的。

医学是一门生物科学,而当医生是一种社会技能,涉及到管理期望、了解医保制度、人际关系、有效沟通等。

-- 《医学和当医生的区别》

3、

医院最喜欢的病人是慢性病患者,他们依赖医院,但是又不会很快病死而不能支付账单。

美国的医疗体系依靠患者赚钱,因此预防疾病并不积极,只有2.9%的医疗支出用于预防医学。这造成的结果就是,病人的寿命虽然长,但是健康的时间并不长。

-- David Perell

4、

经验就是每个人为自己犯的错误起的名字。(Experience is the name everyone gives to their mistakes.)

-- 奥斯卡·王尔德

5、

有一个编程原则叫做 DRY(Don't repeat yourself,不要重复自己),指的是尽量不要有重复的代码。

更好的名字应该是 SPOT(Single Point Of Truth,单点事实)。代码需要修改时,你只需要在一个地方修改,而不必改动多个地方。

-- Hacker News 网友

历史上的本周

2021年(第 174 期):全能程序员 vs 特长程序员

2020年(第 123 期):互联网公司与湘军的军制

2019年(第 72 期):当代人不再有手稿

2018年(第 21 期):人生的水平运动和垂直运动

鸣谢

国产软件 FlowUs 提供个人专栏服务(查看周刊专栏),集成了"文档+表格+网盘",适合知识库、数据管理、文件存储多种用途。

(完)

留言(57条)

说出想法。交朋友。要开心。

阮老师中秋节快乐

八年猿留名,说的真好,46岁还在coding,万恶的资本主义真香

无人机公路终于来了,无人驾驶汽车的专用公路也快了,以后要立法禁止人驾驶汽车了。

持续学习,继续工作,争取再干20年,加油! 祝大家中秋节快乐

不要工作过久,今天也是摸鱼的一天

中秋快乐!

Bruce Lee said, “I do not fear the man who has practiced ten thousand kicks, once each. But the man who has practiced one kick, ten thousand times, him I fear.”

李小龙的腿法也很厉害,这里的kick没必要翻译成拳法吧

确保未拆封那个想法真是绝了

Burning Man,翻译为 火人节 ,更通用一些

引用xyf的发言:

无人机公路终于来了,无人驾驶汽车的专用公路也快了,以后要立法禁止人驾驶汽车了。

以后的公路禁止人驾驶汽车,想开车只能去赛车场和封闭道路,哈哈

引用江湖人称向前兄的发言:

阮老师中秋节快乐

我在广州见到个50多岁的程序员,之前一个外包公司的cto,仍在一线做编程,90年代写vb,后来做了20多年java,现在在写go。属实老妖怪了

扑克牌扫码器这个,莫名想到“陈先生,你的科技资讯太落后了,你戴的这副液晶体显影眼睛是美国两年前的产品。我这副隐形液晶体显影眼镜,是西德上个月的产品,价值十一万美金!”

这期的话题感觉有点沉重

澳大利亚信号局那个,女王没了

引用xuhs的发言:

持续学习,继续工作,争取再干20年,加油! 祝大家中秋节快乐

不要忽视梦想。不要工作过久。

关注了那么久,NESBox 是所有分享工具中最让人激动人心的,没有之一

一位护士问临终的病人,他们有什么遗憾。她后来总结出了5个最常见的回答。

不要忽视梦想。不要工作过久。说出想法。交朋友。要开心。

中秋快乐

这周的内容很精彩啊

2010年从事姑息治疗的护士 Bronnie Ware ,分享了她的收集人生遗憾列表:
希望我有勇气过自己真正想要的生活。
希望我以前没有那么拼命的工作。
希望我有足够的勇气表达自己的感受。
希望我能够和自己的朋友们一直保持联系。
希望我已经让自己成为快乐的人。

还有一篇关于这个的 https://go123.live/explore-other-regrets-of-the-dying/

太阳能无人机,结合苹果和华为的卫星通信布局,6G可能会卷到空中去了。百年之后,齐柏林飞艇回归?

我认为工作除了维持社会发展,还有利于社会稳定,当所有人都沉溺在工作中时,就没有人胡思乱想了。但是就个体而言,生活的意义应该更多的是探索,而不是维持一成不变的工作状态(程序员相比其他职业会更好一些,因为需要不断学习)。

引用boy奎托斯的发言:

关注了那么久,NESBox 是所有分享工具中最让人激动人心的,没有之一

看看都有什么游戏可以回忆一下童年

兄弟们,程序员的工作年限非常长,我都见过四五十岁的还在一线敲代码,干的好好。没什么忧虑的。

是否拆封那个,可以用彩色的拼成一个字。拆过的让他复原去吧

谷歌街景,云旅游一波

引用boy奎托斯的发言:

关注了那么久,NESBox 是所有分享工具中最让人激动人心的,没有之一

试试这个网站:https://www.yikm.net/

只有我一个人觉得这期有点短吗?

引用无忧大侠的发言:

兄弟们,程序员的工作年限非常长,我都见过四五十岁的还在一线敲代码,干的好好。没什么忧虑的。

对程序员来说,最重要的一点就是自我学习。如果能keep study, 那在四五十岁时还在敲代码也不是一件不可想象的事.
相反如果不学习, 当自己所擅长的知识体系被淘汰的时候, 譬如现在你想找个用个jQuery开发前台的工作, 也是很困难了.

引用无忧大侠的发言:

兄弟们,程序员的工作年限非常长,我都见过四五十岁的还在一线敲代码,干的好好。没什么忧虑的。

公司可不这么想

第一次留言 大佬中秋节快乐 记得吃月饼

标题吓我一跳,看成了四十年编程随想。

引用boy奎托斯的发言:

关注了那么久,NESBox 是所有分享工具中最让人激动人心的,没有之一

冲冲冲,一起共享代码去!

引用Go123的发言:

2010年从事姑息治疗的护士 Bronnie Ware ,分享了她的收集人生遗憾列表:
希望我有勇气过自己真正想要的生活。
希望我以前没有那么拼命的工作。
希望我有足够的勇气表达自己的感受。
希望我能够和自己的朋友们一直保持联系。
希望我已经让自己成为快乐的人。

还有一篇关于这个的 https://go123.live/explore-other-regrets-of-the-dying/

这个翻译的更好。

我要好好记下来,希望能做到其中一项或者几项。

~~“要是能重来 我要选李白”~~

引用jax的发言:

看看都有什么游戏可以回忆一下童年

请问这侵权吗?

十年前人们惊呼三十五是程序员的终点,现在变成四十五了。看来不是多老不能编程,而是讲这种奇怪话的人变老了。程序员是脑力劳动,比起建筑师,医生等职业都要轻松,应该职业寿命比他们更长才对。说这些话的人没有看到其他行业要不停的考证学习,而程序员很多是为了兴趣学习。

引用anderson的发言:

只有我一个人觉得这期有点短吗?


但这期有很多好东西

中秋快乐。

引用无忧大侠的发言:

兄弟们,程序员的工作年限非常长,我都见过四五十岁的还在一线敲代码,干的好好。没什么忧虑的。

你可以觉得工作到几岁,但公司决定是否雇佣你

引用大金的发言:

请问这侵权吗?

侵权。

阮老师中秋节快乐!

引用note的发言:

确保未拆封那个想法真是绝了

确保未拆封------多出来的重量谁来付邮费?

中秋快乐!
坚持学习,争取到六十岁还能继续编程,不给人生留遗憾!

阮老师,中秋节快乐!
果断收藏那个红白机游戏,中秋节最好的礼物了!

阮老师的博客陪伴十几年了,祝大家中秋节快乐!

>>有一个编程原则叫做 DRY(Don't repeat yourself,不要重复自己),指的是尽量不要有重复的代码。

>>更好的名字应该是 SPOT(Single Point Of Truth,单点事实)。代码需要修改时,你只需要在一个地方修改,而不必改动多个地方。

一直感觉node/npm 生态违背了这个原因,与web标准不兼容,还干了太多重复繁琐的事情。

最近在用deno的fresh 开发一些东西,开发体验太棒了,真希望deno生态能发展起来。

引入一个包只需要import "http://test.com/ui@latest/button.tsx" ,多么简单、纯粹的事情呀。

乔布斯的那个很棒

https://stevejobsarchive.com/

聽說辣鸡苹果,乔帮主的邮箱,都不保存了....

资本家嘴脸

引用dsafd的发言:

是否拆封那个,可以用彩色的拼成一个字。拆过的让他复原去吧

越是有规律的月容易被破解,当然就是彩色的无规律的字也很难

引用weiming的发言:

扑克牌扫码器这个,莫名想到“陈先生,你的科技资讯太落后了,你戴的这副液晶体显影眼睛是美国两年前的产品。我这副隐形液晶体显影眼镜,是西德上个月的产品,价值十一万美金!”

要发音成“易晶体”才有那味

阮老师 中秋快乐

引用无忧大侠的发言:

兄弟们,程序员的工作年限非常长,我都见过四五十岁的还在一线敲代码,干的好好。没什么忧虑的。

30岁以下的程序员写的代码基本上是不可维护的。

《最小的游戏机》标题过分了,这个放圈里都没什么看点,开源掌机圈有大量比这个游戏更丰富还迷你的。就是人手尺寸限制,做不了最小。

看到阮老师您还在为人类的科学做贡献,我很欣慰!

我在今年这个 burning man 的车流里,堵了大概 5 小时出来,体验其实还可以,4am 进入队伍,熄火睡了一小时,5am 向前挪了一次,熄火睡了大概两小时,7am 再向前挪一次,9am 上公路。关于离开时的堵车,讨论已经非常充分了,可以参考官方 FAQ:https://burningman.org/event/preparation/getting-there-and-back/exodus/ 关键问题在于作为一个 7-8 万人的活动,和外界的连接只有一条两车道公路。

另外,这个活动有通用译名“火人节”,非常棒,建议在美国的朋友有机会都去体验一下。

阮兄是我非常敬佩的人之一,博学,写的东西都很容易理解

扑克扫描机据我所知,CVK主机牌具用的最多也更成熟,然后现在出现了普通牌的技术,使用python识别程序制作

我要发表看法

«-必填

«-必填,不公开

«-我信任你,不会填写广告链接