本文包含附属链接。有关更多信息,请参阅我的附属公司披露。
这听起来可能很疯狂,但是……我喜欢练习有荒谬的想法。
我选择一个问题或一个问题并集思广益荒谬的解决方案。任何事情都会发生,无论多么疯狂。这对代码来说特别有趣。这不仅仅是为了转移注意力。
练习荒谬有助于解决现实世界的编码问题。
玩得开心,激发创造力
我让 Twitter 上的人们分享他们能想到的最荒谬的方法,即在 Python 中不使用+
运算符来添加两个数字。
Fluent Python (任何中级 Python 开发人员的必备读物)的作者 Luciano Ramalho 对此进行了回应:
— 卢西亚诺·拉马略 1️⃣3️⃣ ?? (@ramalhoorg) 2022 年 9 月 28 日
我喜欢 Luciano 的解决方案,因为基础相对温和。
他没有将两个数字a
和b
相加,而是从b
中减去-a
。然而,正是递归将它带到了一个新的水平。我什至不介意它只适用于整数!这简直太荒谬了。
但是写这样的代码有什么意义呢?
对于初学者来说,荒谬很有趣。
Gerard van Honthorst,公共领域,来自维基共享资源
快乐和乐趣与创造性的产出有关。所以想出像卢西亚诺这样荒谬的代码示例是一种为创造性工作做好准备的方法。它让你进入一种创造性的心情。
好处还不止于此。
建立令人惊讶的概念联系
荒谬的代码以不同寻常的方式将概念联系在一起。
大脑形成记忆的一种方式是通过突触可塑性。神经元之间的突触——即连接——在它们一起发射时得到加强,而在它们不一起发射时减弱。更强的连接会增加特定神经模式响应给定刺激而触发的可能性。
换句话说:
并非所有这些连接都是有用的。
许多不会持久。但是当他们在严肃的编码会议中突然出现在你的想法中时,有些人会让你大吃一惊。突然间,你有了一种新的、可能富有成效的方法来解决问题。
有时你会以重要的方式破坏事物。
暴露系统中的弱点
荒谬的代码有多种形式。
有像卢西亚诺这样的例子,他们用一种愚蠢的方法来解决一个简单的问题。然后是Obfuscated C Mandelbrot- 和 Julia-set Generator 。它是用 ANSI-C 编写的,它的源代码类似于 Mandelbrot 集:
混淆的 C Mandelbrot 和 Julia 集生成器
对食谱是有效的“Hello Word”程序的巧克力蛋糕爱不释手?有它。
当你编写荒谬的代码时,所有的规则都不适用。
荒谬之处可能在于问题解决方案的愚蠢。或者它可能在代码本身的呈现中找到。有时,它是关于编写带有险恶秘密的看似无害的代码。
这就是 Linus Åkesson 在赢得2015 年 Underhanded C 比赛时所做的。
Åkesson 的代码利用浮点类型的微妙混淆来歪曲核弹头的能量谱。核武器检查员可能会被频谱所迷惑, 据核威胁倡议的技术顾问佩奇·斯托兰 (Page Stoutland ) 所说,“可以让各国在没有真正解除武装的情况下为裁军而努力。”
严重地。
一场糟糕的代码竞赛暴露了核不扩散的一个关键缺陷。
把创意变成习惯
感觉自己不够聪明,无法编写“好”的坏代码?
我有好消息要告诉你。你不是天生就有有限量的“创意果汁”。你出生在一片广阔的创意潮流的海洋中。您可以学习如何驾驭这些潮流并探索您的想象力的深度。创造力是一种可以练习的技能。
你可以从小处着手。
以下是帮助您入门的五个编码提示:
- 你能想到的最荒谬的打印
"Hello world"
的方式是什么? - 编写一个使用大量资源但什么都不做的程序。
- 编写一个以两种不同的编程语言编译和运行的程序。
- 用代码解决一个真正不应该用代码解决的问题。
- 编写一个没有无限循环但永远不会停止运行的程序(如果它停止运行也没关系,但是从现在到宇宙热寂之间没有足够的时间。)
每月处理一次或两次新提示。
不要忘记为荒谬的喜悦举杯。
Gerard van Honthorst,公共领域,来自维基共享资源
想了解更多关于编码和创造力的交集吗?
Manning 刚刚在他们的抢先体验计划中推出了The Creative Programmer 。
当你在做的时候,看看 Dylan Beattie 的经典演讲The Art of Code 。
对于荒谬的灵感,我强烈推荐 XKCD 创作者 Randall Munroe 的书籍How To 、 What If和What If 2 。
想要更多这样的吗?
每周六发送一封电子邮件,其中包含一个可操作的提示。
总是少于你的 5 分钟。
现在订阅