晦涩难懂的码农段子(连载中)

《晦涩难懂的码农段子》是我从今年三月的一天突发奇想开始写的一些零散的段子集。通常是首发在微博上,并且添加 #晦涩难懂的码农段子 作为 Tag。然后如果字数允许,转发到 Twitter 上。这个系列的段子,是不是真的晦涩难懂,其实不尽然;那有是不是只和码农有关,其实有些也只是擦边球。这个系列的最初想法是我在读了很多喜剧作品,特别是很多 Stand-up Comedy 后,进行的一些分析,试图理解喜剧所需要的剧情冲突究竟如何体现。所谓冲突,即在一个自洽的舞台说明下,发展出矛盾。把这一舞台设定在程序员的世界中,实际上本质是设置在我所熟悉的当下社会里。而有时候,笑话本身也可以产生一种讽刺。而这个则是利用喜剧将观众引入更令人思考的方向了。

由于微博帐号莫名其妙被封号,我决定在这篇文章里,将发过的内容整理修正一下,如有遗漏,请多多谅解。

这个系列的段子就目前来看,主要有几个常见的类型。

一个最常见的是通过一系列比较,先让观众在大脑中建立某一领域的思维定式,再在最后一句话中打破它。这一类型是启发自 Stand-up Comedy 里一种前半段很正经地讲新闻,然后突然改用戏虐的口气调侃事件,从而产生一个巨大的反差感。在写的过程中,逐渐固定了一些人物的形象,比如说,如果需要有人风评被害,那么优先是小李;如果梗有二次发展,那么还可以有老李。

一个是老梗新说,很多时候其实是一些大家已经见过的老梗,而这里的关键就是如何在老梗上做进一步地发展。比如为老梗增加铺垫,或者突然改变老梗的结局或者背景。写这一些段子的时候,我的主要想法是,写一些比较长的段子的时候,需要利用到类似的通过铺垫渐进,中间又不能让笑点断开太久。而利用已知去制造冲突,利用梗制造梗,则是一个非常有趣的选择。

最后则是一些一句话段子。虽然字数短,但是信息量不会少。句子中还需要通过被故意颠倒的语法或者添加一些无意义的虚词,来使得观众需要在听完句子后进行一些思考,再对笑话做出反应。这一类则是利用人思考本身的特征来创造喜剧冲突。

说实话,「晦涩难懂」四个字,其实一开始,只是为我的笑话难笑而找的借口。就像虽然我喜欢看「純靠北工程師」,但是被卖掉,天天发废文的「靠北工程師」似乎更受到大众的欢迎。如果做大是工程师讲段子给大家听,那么我希望能够把段子将给工程师听。而这就是这个系列存在的核心想法。

段子一览(从新到旧)

2019-05-03

你怎么写出这种烂代码的?你是没学过设计模式吗?
(一个月后)
幹!你怎么在一份 codebase 里同时写十几种设计模式的?

结论:一个月前这人在写 Vanilla JS,一个月后改写 React 了。

2019-05-02

小王是一名 C++ 工程师,他其实只会写 C,但用 C++ 编译器编译。
小张是一名 C++ 工程师,他会往 C 语言里加一些 class 和 template 关键字。
小李是一名 C++ 工程师,他熟读标准,精通标准库,他的代码大量使用了 C++ 近 10 年来引入的新特性。

老李写的是谭++。

2019-05-01

小王喜欢用 null 表示空,词源是拉丁语 nūllus (not any)。
小张觉得直接用拉丁语 nil 更好,更短也表达了 nothing 的意思。
小周觉得用英语 None 不更便于理解?
小李觉得他们都有道理,于是同时引入了 nil null None 和 Nothing。

老李觉得,应该再引入一个 NSNull。

2019-04-26

现有的尝试去除 GC 又希望内存安全的语言,trade-off 其实都挺大的。我觉得每个拿 Rust 实现过大型项目的人,都对它爱恨交织。虽然现在 GC 技术已经发展得如此先进,但是大家还是迫切地想去除它,我觉得主要原因是编译器作者很难和人解释清楚自己在某 top 公司做垃圾回收的工作。

2019-04-26

A: 刚有新闻说澳大利亚的垃圾回收系统崩溃了?

B: 啊,什么虚拟机出 bug 了?

2019-04-24

我的西班牙语知识主要来自于 macOS 的 codename。

2019-04-24

结论:谦谦从 B 站离职去了日本,
B 站和日本的平均英语水平都下降了。

2019-04-15

表面:我是全栈工程师。
其实:我能写点 JavaScript。

表面:我写过 Ruby。
其实:我用 Rails 脚手架生成好代码后,往里面随便填点东西。

表面:我会用 Git。
其实:我有个 GitHub 账号。

表面:我关心开源社区发展。
其实:我常看○○峰博客。

2019-04-10

在日本,
租房需要手机号和银行卡;
办手机需要住址和银行卡;
而银行需要手机号和住址。

结论,引用计数法需要引入弱指针才能避免循环引用导致的内存泄漏。

2019-04-07

小王的高中数学成绩很好,他大学报考了数学系,挂科了无数门,毕业后他决定放弃数学转业成为了一名优秀的软件工程师。

小张听说 21 世纪是生命科学的世纪,他大学报考了生物系,延毕了两年,毕业后他决定放弃生物转业成为了一名优秀的软件工程师。

小李很喜欢打电子游戏,他大学报考了计算机科学,天天在宿舍玩游戏,毕业后没找到工作,回老家搬砖去了。

2019-04-07

小王是前端工程师,能熟练处理 IE6 的 3px 漂移和 margin 会突然翻倍的 bug。
小张是前端工程师,熟读了 ES6 标准,使用 webpack 来打包他的前端项目。
小明是前端工程师,拿框架脚手架生成代码后,依葫芦画瓢也能写出一个前端项目。

小李培训班毕业后,难以独立完成项目。但是他读了一些文章后,认为自己写的语言和 Haskell 是近亲,他是优雅的函数式程序员,天天上网和人约架。

2019-04-06

调校模型 ✅️
调教模型 ❎️

调教的话,不感觉有点色情吗…
仿生人会和电子羊玩 SM 吗?

2019-04-05

小王精通数理逻辑,他是一名大数据工程师。
小张熟悉线性代数,他是一名大数据工程师。
小明会用神经网络框架,他是一名大数据工程师。

小李会用 Excel,有两块 4TB 硬盘,他声称自己是大数据工程师。小李拿到了融资,雇小王小张小明实现。「这公司第一行代码是我写的」小李说。

2019-03-28

我幼儿园的时候只会写一些垃圾 BASIC,一直到小学五年级才算好好掌握了一下 VB。感觉学得太晚,而且太不系统。我如果当时学的是 Lisp,

恐怕现在穿女装会更可爱一点吧。

2019-03-28

声明式编程:大杯豆奶三份抹茶粉三泵糖。

命令式编程:大杯抹茶拿铁去牛奶换豆奶,多加两 shot 抹茶粉去一半糖。

虽然命令式点单很麻烦,但仔细一想,如果星巴克采用声明式点单的话,水不收钱,美式就不能卖得比浓缩贵了。

2019-03-27

小王写代码前会仔细思考,如果一个方法会被复用或对性能有很大影响,他会提前设计好架构,然后简洁优雅地实现出来。

小张会事后思考,擅长分析性能瓶颈,根据工程规模进行重构,代码仓库保持得很干净。

小李想到哪里写到哪里。

但因为 git commit 数量比较多,小李被升职了。

2019-03-27

小王是一个大型项目下的 C++ 工程师,今天他上班 trigger 了一个全量编译便回家了,明天再来。

小张是一个深度神经网络的 Python 工程师,今天他上班改了一个参数开始训练便回家了,三天后再来。

小李是一名资深的 Rust 工程师,今天他上班只花了一小时就完成了需求的开发。

然后连续加班了三个晚上才使得编译通过。

2019-03-27

小王是星星大户,他在简历写上自己的 GitHub ID 希望公司知道他是个开源狂热者。

小张以前公司仓库在 GitHub 上,他写上自己的 GitHub ID 希望公司看到自己勤奋的贡献表。

小李不想成为程序员,但他家人逼他。他在简历上下自己全白的 GitHub 账号好让面试官尽早淘汰他。

2019-03-27

小王是一个大型项目下的 C++ 工程师,今天他上班 trigger 了一个全量编译便回家了,明天再来。

小张是一个深度神经网络的 Python 工程师,今天他上班改了一个参数看是训练便回家了,三天后再来。

小李是一名资深的 Rust 工程师,今天他上班只花了一小时就完成了需求的开发。

然后连续加班了三个晚上才使得编译通过。

2019-03-26

今天晚上小王在度假很快乐,想打开手机看看朋友圈。结果小王刚打开微信就看到,产品经理在找他修 bug,小王马上把微信关起来。

「假的!」
「哎呀,我的眼睛业障重啊。」

请问那个 bug 是真的还是假的?暂时的。但是如果你当真的,那你就会很生气很急,想赶紧去看日志,最后发现基本上都是鸡毛蒜皮的问题。你不修也有别人修,说不定重启重启自己就好了,大不了老板和客户糊弄两下就过去了。

2019-03-26

小王学习了 Rust 语言,
小王不敢用 nightly 上生产,
但人人都拿 nightly 上生产,
而且总有需要的特性在 nightly 里。

最后小王悟到了「nightly 不异 stable,stable 不异 nightly;nightly 即是 stable,stable 即是 nightly」的道理。

2019-03-25

小王自从学习了 Swift 和 Kotlin 语言后,
性格变得多疑和激动了很多。

2019-03-25

小王的自我学习能力很强。最近,他在工作之余,又学习了单片机知识。看完教材,他感触很深,决定给自己做的项目添加跑马灯和利用蜂鸣器放音乐的功能。

2019-03-24

曲艺界有句行话说:「一天不练,自己知道;两天不练,同行知道;三天不练,观众知道。」其实这句话放在二十一世纪的程序行业也是非常受用的。

一天不写代码,
打开你的 GitHub Profile 全知道了。