改变我世界的十行代码

Lobsters Hottest 新闻

摘要

作者回顾了十行代码,这些代码对他意义非凡,从编程入门到怀旧的编程技巧,突显了编程中的情感纽带。

<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`更短(无论是时间长度还是字符数)。

相似文章

正念编码:目的与意图

Lobsters Hottest

一篇鼓励开发者以清晰意图编写代码的文章,认为命名困难往往揭示了抽象设计的问题,并指出理解代码的“为什么”与“是什么”同样重要。

小型编程技巧

Lobsters Hottest

文章分享了一系列小型编程技巧和工具,例如命令行快捷键、数据库查询和JavaScript特性,这些可以提升日常工程生产力。