写代码和写文章,在我的生活里占据了大量的时间。很长一段时间,我把它们当作两件完全不同的事——代码是工作,文字是爱好。
直到某天,我意识到它们其实是同一种行为的两个面向。
结构与流动
好的代码有结构。函数、模块、分层,每一层都有清晰的职责。好的文字也有结构。段落、转折、起承转合,读者被引导着穿越一个想法的迷宫。
但代码的结构是显性的,写在语法里;文字的结构是隐性的,藏在节奏中。
// 代码的结构: 显性
function processLife(experiences: Experience[]): Insight {
const filtered = experiences.filter(e => e.meaningful);
const distilled = filtered.map(reflect);
return synthesize(distilled);
}
文字则不同。它依赖语感、依赖停顿、依赖那些没有说出口的部分。
抽象与具体
代码追求抽象。我们写 User、Order、Repository,把具体的人变成类型,把具体的行为变成方法。
文字追求具体。一个抽象的”悲伤”,远不如”她把杯子放下,水面晃了一下”来得有力。
但这两者并非对立。最好的代码,往往带着一点文学性——命名精准、意图清晰、读起来像一句话。最好的文字,也往往带着一点结构性——有内在的逻辑,有可以拆解的层次。
共同的底色
它们共享的,是对清晰的追求。
代码要清晰地告诉机器做什么,更要清晰地告诉下一个读代码的人为什么。文字要清晰地传达一个想法,更要清晰地让读者感到被理解。
清晰不是简单,而是把复杂安放在恰当的位置。
所以我现在不再把它们分开。写代码时,我会想这段逻辑的”叙事”;写文字时,我会想这段话的”架构”。
它们都是表达,只是媒介不同。而表达的尽头,都是思考本身。