改变我世界的十行代码
摘要
作者回顾了十行代码,这些代码对他意义非凡,从编程入门到怀旧的编程技巧,突显了编程中的情感纽带。
<p><a href="https://lobste.rs/s/fpk9gq/ten_lines_code_changed_my_world">评论</a></p>
查看缓存全文
缓存时间: 2026/09/27 13:37
# 改变我世界的十行代码 – Pixelambacht
来源:https://pixelambacht.nl/2026/ten-lines-of-code/
2026年9月25日
十行代码,以某种方式对我意义非凡。或许是我亲手编写,或许是我大量借鉴,或许它们让我开怀大笑,又或令我潸然泪下。
家庭计算机屏幕上滚动的Hello World行
## Hello World
```
10 PRINT "HELLO, WORLD!"
20 GOTO 10
```
我不记得第一次输入这段代码是什么时候,也不确定是否完全如此。也许没有逗号,或是感叹号更多。但计算机忠实地执行了,欢快地向世界问好——尤其向那个初次与计算机对话、睁大双眼的孩子致意。第二行清楚地表明:计算机将严格执行你下达的任何指令。永远的Hello World!
## 奇怪的JavaScript,蝙蝠侠!
```
Array(16).join('wat' - 1) + ' Batman'
```
将这行代码复制粘贴到浏览器控制台,你将看到经典复古流行文化与极客编程幽默的碰撞,更附赠超大份“JavaScript真奇怪”调味料。经典之作(https://www.destroyallsoftware.com/talks/wat),我第一次运行时真的笑出了声。
## 自修改的6502汇编代码
```
LDX #$00 ; 将X寄存器加载为值0
.loop
LDA $2000,X ; 将内存地址$2000+X处的字节加载到A
STA $0400,X ; 将A存储到地址$0400+X
INX ; X自增1
BNE .loop ; 若X不为0则跳转回.loop标签
INC .loop+2 ; X为0时,修改.loop标签后第2字节
INC .loop+5 ; 同时修改.loop标签后第5字节
LDA .loop+5 ; 将.loop+5地址处字节加载到A
CMP #$07 ; 与7比较
BNE .loop ; 若A不等于7则跳转回.loop
```
机器语言是离硬件最近的存在。没有警告,没有日志,没有安全护栏。它甚至允许程序在运行时修改自身——通过覆写代码的实际字节。正如本例所示,你在运行时更新了源地址和目标地址的高位字节。分支循环从`$2000`到`$20FF`,随后的`INC`指令将地址从`$2000`改为`$2100`,然后重新开始循环。(6502处理器采用小端序,因此我们修改`+2`和`+5`位置而非`+1`和`+4`)
如此底层,如此硬核,带着些许危险。意识到可以这样做,我深刻体会到:当编码如此贴近硬件时,一切皆有可能。
## touch.bat
```
type nul > .\"%*"
```
这个微型批处理脚本为Windows实现了简易版`touch`命令。从Windows NT到Windows 7,我在Total Commander的小型命令行中频繁使用`touch filename.txt`快速创建空文件。没有它简直无法工作。
## CSS调试器
```
border: 10px solid hotpink;
```
层叠样式的`console.log`!样式的`var_dump()`!样式表的`printf()`!而且永远都是艳粉色。
## 无限生命
```
POKE 9450,173
```
只需将特定字节精准“捅入”计算机内存中二进制代码的某个位置,你就能瞬间获得无限生命、能量或金钱。这不仅让你在游戏中作弊成功,更带来一个震撼的觉悟:只要知道如何“查看”(PEEK)和“修改”(POKE),*任何*游戏中的*一切*都可以被操纵。
## 加速循环
```
for(i=0;i<1000000;i++) {;}
```
“我们的想法是,”韦恩继续说道,“每当遇到那些特别缓慢的工作周——就是那种什么bug也没修成、什么实质改动也没做的时期——我们就从循环里删掉一个零。然后告诉项目经理,我们在最新需求变更中遇到了性能瓶颈,但经过大量深度优化,已经显著提升了速度,应该能在下周完成需求变更。”
有趣的故事(https://thedailywtf.com/articles/The-Speedup-Loop),对我们这些曾在无聊、无目标项目中埋头苦干的人来说,这个主意颇具吸引力。
## RTFM 或 rm -rf /
```
# rm -rf /
```
如果你在2000年代遇到Linux问题,常会去IRC频道寻求帮助。在那里,许多人发现了治愈所有Linux问题的万能良药,而且总是同一招:以root身份登录,运行`rm -rf /`。它从不失误,总能让所有Linux问题烟消云散!
## SKAN2.PAS
```
{$M $4000,0,0 } {16 KB栈空间}
{Skan v2.00 by Trexx}
Program Skan2;
uses crt,dos;
var a,b,c:char;
b1:byte;
str:string[3];
Ends:boolean;
begin
Ends:=False;
a:='a'; {初始值}
b:='a';
c:='a';
repeat
inc(c);
if (c='z') then begin inc(b); c:='a'; end;
if (b='z') then begin inc(a); b:='a'; end;
str:=a+b+c;
{若FULL.EXE位于其他目录则修改此处}
exec('z:\public\full.exe',str);
if (whereY>10) then readln; {按任意键退出}
until KeyPressed or Ends;
end.
```
那是90年代初,我们学校终于建了局域网。当然,我那些自诩为“网络朋克脚本小子1337骇客高手”的兄弟们立刻开始探索。我们知道所有用户名都由三个字母组成,未使用的账户会保留默认密码。于是我们用Borland Pascal写了这个极其粗糙的用户名扫描器。bug比代码行数还多,但它勉强能用。(毕竟是2.00版本嘛!)我们愉快地黑掉了所有能找到的闲置账户,然后...就去干别的了。
## CSS280
```
*{transform:translateY(24vh);text-align:center}*>:before{animation:a 9s 1e+9 linear;content:'Roses are #F00'}@keyframes a{10%,15%,35%,40%,60%,65%, 85%,90%{opacity:1}12%,37%,62%,87%{opacity:0}25%{content:'Violets are #00F' }50%{content:'All my base'}75%{content:'Are belong to you'}}
```
一首仅用280个字符CSS实现的动画诗。无需JavaScript,甚至无需HTML——只需在空文档中加入一个``标签,这280个纯CSS字符就能运行。从Twitter早期140字符的限制升级到280字符后,我们得以粘贴小段代码到空CodePen(https://codepen.io/RoelN/pen/bYYmzd)欣赏有趣效果。我特别自豪的是`1e+9`这个时长值,它比`infinite`更短(无论是时间长度还是字符数)。
相似文章
没有地方比得上 $HOME:从 Vim 到 VS Code 再回到 Vim 的十年之旅
关于十年间使用 Vim、切换到 VS Code 再回归 Vim 的个人反思,探讨终端编辑器与 IDE 之间的权衡。
正念编码:目的与意图
一篇鼓励开发者以清晰意图编写代码的文章,认为命名困难往往揭示了抽象设计的问题,并指出理解代码的“为什么”与“是什么”同样重要。
小型编程技巧
文章分享了一系列小型编程技巧和工具,例如命令行快捷键、数据库查询和JavaScript特性,这些可以提升日常工程生产力。
过去一年,我是如何改变编程方式的?你呢?
一位程序员回顾了过去一年其开发工作流程的演变,从使用基于LLM的IDE自动补全转向采用CLI编码代理和plan.md文件,并对传统IDE的必要性提出了质疑。
编程语言创造者的古怪个人主页
本文精选了编程语言创造者的个人主页,突显其古怪而独特的在线设计。