首页 女生 都市言情 爱是一座城堡

第125章 代码即哲学:重读《黑客与画家》

爱是一座城堡 流星阑珊 6409 2026-03-29 17:56

  从李艳的工作室回来的那个周日,刘星没有安排任何工作。他给自己泡了杯茶,在书架前站了很久。

  目光扫过那些熟悉的书脊:《C++ Primer》《设计模式》《重构》《人月神话》……这些是他职业生涯的基石,像建筑师的图纸和工具。然后是近来新增的:《存在与时间》《禅与摩托车维修艺术》《艺术的慰藉》……这些是精神世界的探索,像建筑师的哲学和美学。

  他的手指停在一本旧书上——《黑客与画家》。保罗·格雷厄姆(Paul Graham)的文集,大约十年前买的,当时他还在大厂做中层管理,读这本书是为了理解硅谷的创业文化。

  现在他想重读它。

  不是因为创业需要——他已经创业了。而是因为这本书的名字突然有了新的含义:黑客,画家。技术,艺术。他在李艳工作室看到的,正是这种融合的可能性。

  刘星抽出书,封面已经有些磨损。他坐到书桌前,翻开扉页,看到自己十年前用铅笔写的标注:“有趣的观点:编程是创造,不是工程。”

  当时他画了问号。创造?编程明明是严谨的、逻辑的、需要测试和调试的,怎么能和画家那种自由的、直觉的创造相提并论?

  现在,他想用新的眼光重新理解这句话。

  窗外是周日的宁静。偶尔有邻居家孩子练钢琴的声音,断断续续,像在寻找旋律。

  刘星从第一章开始读。

  格雷厄姆开篇就在讨论“黑客”这个词的误解——不是媒体上的计算机罪犯,而是“痴迷于编程并乐在其中的人”。黑客喜欢创造新事物,喜欢解决难题,喜欢让复杂的东西变得简洁优美。

  “好的软件是简单的,但不是简陋。”刘星轻声读出来。这句话他以前读过,但现在读,有了新的共鸣。

  简单。禅修时追求的简单,罗斯科画作中那种纯粹的简单,李艳陶艺中形态的简单。原来代码也需要简单。

  但什么是代码的“简单”?

  不是功能少,而是概念清晰,结构优雅,没有不必要的复杂性。就像一首好诗,用最少的词表达最多的意义。就像一个好的陶器,形态纯粹,功能直接。

  刘星继续读。

  格雷厄姆谈到“品味”(taste)——好的程序员需要有品味,知道什么是优美的代码,什么是丑陋的代码。这种品味不是规则,而是直觉,是长期沉浸在高品质代码中培养出来的感知力。

  品味。刘星想起站在罗斯科画前的那种震撼。那不是理性的分析——“哦,这个色块用得好”——而是全身心的感受,一种被美击中的体验。

  代码也有美吗?

  他打开电脑,调出自己最近写的一个模块。这是一个数据处理流程,要把来自多个渠道的用户行为数据清洗、整合、分析。他写了三个版本。

  第一个版本是刚加入公司时写的,当时急着出成果,代码冗长,有很多重复的逻辑,注释写得很详细但结构混乱。

  第二个版本是半年前重构的,他学习了一些函数式编程的思想,代码简洁了不少,但有些地方过于追求“优雅”,牺牲了可读性。

  第三个版本是上周写的,禅修回来后。他重写了整个模块,现在看着代码,刘星突然明白了什么是“品味”。

  第三版的代码,每个函数都很短,只做一件事。命名清晰——不是`processData()`这种模糊的名字,而是`filterInvalidSessions()`、`mergeUserProfiles()`、`calculateEngagementScore()`。结构像一棵树,主干清晰,枝叶有序。注释很少,但关键处有解释“为什么”这么做,而不是“做什么”。

  看着这些代码,他感到一种……愉悦。就像看到李艳架上那些形态优美的陶器,或者读到她诗中那个精准的比喻。

  代码不只是实现功能的工具。代码是一种表达,是对问题空间的理解和重构。

  刘星继续读《黑客与画家》。

  格雷厄姆有一章的标题是“如何创造财富”。但内容不是在讲商业模式或市场营销,而是在讲创造人们需要的东西。他说,最好的创造往往来自创造者自己需要的东西,或者来自创造者对某个领域的深刻理解和热情。

  这让他想起为视障儿童开发编程工具的那个项目。那不是市场驱动的——市场很小,利润很低。那是价值驱动的,因为他们看到了一群孩子的需要,并且相信技术可以帮助他们。

  创造价值,而不只是创造利润。

  这与李艳提出的“小而美”产品线不谋而合。也许商业的成功不只是规模,还有深度和意义。

  书读了一半,刘星停下来,走到窗前。

  外面的梧桐树叶子黄了一半,在秋风中摇曳。他想起了海德格尔说的“上手状态”(ready-to-hand)——当工具好用时,我们甚至意识不到它的存在,就像眼镜戴久了就忘记自己戴着眼镜。只有当工具坏了,我们才意识到它的存在。

  代码也是这样。好的代码应该是“透明”的,用户甚至意识不到它的存在,只是流畅地使用产品。糟糕的代码就像一副总是往下滑的眼镜,需要不断调整,分散注意力。

  那么人生呢?刘星想。什么样的生活是“上手状态”的?大概就是那种不觉得在“努力生活”,只是自然地活着,呼吸,工作,爱,创造的状态。

  他回到书桌前,继续读。

  格雷厄姆谈到画家的工作方式——画家不是先画详细的蓝图,然后按部就班填充。画家是从草图开始,不断修改,不断调整,直到作品完成。编程也应该这样:先做出原型,然后迭代,在做的过程中理解问题,发现更好的解决方案。

  这完全颠覆了刘星在大型软件公司接受的训练。在那里,流程是:需求文档→设计文档→编码→测试→发布。每一步都要评审,任何偏离设计的修改都要走变更流程。

  但格雷厄姆是对的。真正创造性的工作,无论是绘画、写作还是编程,都需要探索的自由。你不能预先知道所有答案,你必须在做的过程中发现答案。

  就像他的人生。他曾经试图按照社会脚本生活:好学生→好工作→好婚姻→好父亲。他以为只要按流程走,就能得到一个“好人生”。但生活不是工程项目,它是艺术创作,充满意外、调整、甚至推倒重来。

  破碎,然后重组。这不是失败,而是创作过程的一部分。

  刘星翻到书中一个折角页,那是他十年前折的。上面有一段话:

  “编程语言不只是工具,它们是思考的媒介。不同的语言让你以不同的方式思考问题。Lisp让你思考抽象和元编程,C让你思考内存和性能,Python让你思考可读性和表达力。”

  当时他觉得这段话很“玄”。但现在他懂了。

  语言塑造思维。他用中文思考时,和用英文思考时,会有不同的联想和逻辑。同样,他用不同的编程范式思考时,会对同一个问题有不同的解法。

  那么,如果他学习用“艺术的语言”思考呢?用诗歌的隐喻,用绘画的视觉,用陶艺的触觉?这些会不会改变他解决商业问题、甚至人生问题的方式?

  刘星想起禅修时观察念头的体验。那时他学习用“觉知的语言”替代“分析的语言”。当他不再把情绪当作需要解决的问题,而是当作需要观察的现象时,他与情绪的关系就改变了。

  也许这就是整合——学习多种语言,在适当的语境中使用适当的语言。

  技术语言解决技术问题。哲学语言探索存在意义。艺术语言表达内在体验。不需要用一种语言做所有事。

  他继续往下读。

  格雷厄姆谈到“反对者”——那些说“这不可能”的人。他说,大多数重要的事情在一开始看起来都是不可能的,或者愚蠢的。如果一件事情明显是好的、可行的,早就有人做了。

  刘星想起自己决定创业时,周围也有反对的声音:“现在经济不好”“竞争太激烈”“你年龄不小了,还折腾什么”。但他还是做了。

  不是因为确信会成功,而是因为那是他当时必须做的事——就像画家必须画画,诗人必须写诗。那是内在的驱动力,不是外在的计算。

  现在公司虽然还没有爆发式增长,但正在稳步发展,更重要的是,他们在做一些有意义的事。为视障儿童做工具,为小企业开发易用的SaaS,甚至李艳最近在探索的、帮助传统手工艺人数字化的项目……

  这些在投资人眼里可能不够“性感”,但刘星觉得,这才是真正有价值的创造。

  创造,而不是仅仅复制。

  创造解决真实问题的方案,创造美的体验,创造有意义的工作。

  书读到最后一章,格雷厄姆总结道:“黑客和画家的共同点是,他们都是创造者。他们从无到有创造出东西来。这是人类最深刻、最满足的活动之一。”

  刘星合上书。

  阳光已经移到了书桌的另一边,茶杯里的茶早就凉了。

  他打开代码编辑器,不是要写什么具体的功能,只是想写点什么。

  他新建了一个文件,命名为`life_lessons.js`。不是真的JavaScript代码,只是借用这种格式来表达。

  //javascript

  //人生课程 1.0

  //作者:刘星

  //最后更新:2023年秋

  class Life {

  constructor(birthConditions){

  this.past = birthConditions;//无法选择

  this.present = new Moment();//唯一的真实

  this.future = new Possibility();//尚未存在

  this.cracks =[];//破碎之处

  this.goldenSeams =[];//金缮修复

  }

  //添加一些体验

  myLife.experience(new Event('大学毕业', 2003));

  myLife.experience(new Event('第一份工作', 2004));

  myLife.experience(new Event('婚姻', 2010));

  myLife.experience(new Event('儿子出生', 2012));

  myLife.experience(new Event('职业危机', 2021));//这是一个破碎事件

  myLife.experience(new Event('婚姻结束', 2021));//另一个破碎事件

  myLife.experience(new Event('创业开始', 2022));

  myLife.experience(new Event('禅修体验', 2023));

  //创造一些东西

  myLife.create(new Project('有意义的工作'));

  myLife.create(new Project('健康的关系'));

  myLife.create(new Project('内心的平静'));

  //活在当下

  myLife.bePresent();

  写完这段伪代码,刘星笑了。这很幼稚,很程序员式的比喻,但对他有意义。

  代码成了他理解世界的语言。当他把人生想象成一个类,把破碎和修复想象成方法,把当下想象成属性时,一切都变得清晰了——不是真的清晰,而是比喻性的清晰。

  这让他想起李艳用诗歌表达的体验,罗斯科用绘画表达的情感,禅修老师用指导语表达的觉知。

  每个人都需要自己的表达语言。对于刘星来说,代码是一种自然的语言。

  他关掉编辑器,重新拿起《黑客与画家》。

  这次他不只是读,而是感受。感受格雷厄姆对创造的热爱,对优美的追求,对解决问题的执着。这些品质,不正是他在自己身上也想培养的吗?

  优美的代码,就像优美的生活——结构清晰,目的明确,冗余少,灵活性高。能够适应变化,能够在压力下保持稳定,能够在复杂中保持简单。

  重构代码,就像重构自我——识别坏味道(bad smell),提取重复部分,简化复杂逻辑,让整体更可读、可维护、可扩展。

  而他这两年的生活,不正是一场巨大的重构吗?

  识别婚姻中的“坏味道”,提取出真正重要的部分(儿子),简化生活方式,重构自我认同,让整个系统(他的生活)变得更健壮。

  窗外天色渐暗。刘星打开台灯。

  他在笔记本上写道:

  “重读《黑客与画家》。领悟到:

  1.编程是创造,不只是工程。优美的代码有内在的美。

  2.创造需要探索和迭代,不能完全预先规划。生活也是。

  3.好的创造来自深刻的理解和真正的需要,不只是市场机会。

  4.黑客和画家的共同点是创造——从无到有,让世界多了一点什么。

  5.代码是我理解世界的语言之一。不是唯一的语言,但是重要的语言。

  6.重构自我就像重构代码——识别问题,设计解决方案,小心实施,测试结果。

  作为程序员,我曾经羞于承认这个职业的创造性。觉得不如艺术家‘高级’。但现在明白,任何深入的创造都是相通的。

  我的任务不是成为艺术家,而是成为更完整的创造者——在代码中创造价值,在生活中创造意义,在关系中创造连接。

  而这一切,都始于一行代码,一个当下,一次呼吸。”

  写完,他合上笔记本。

  手机响了,是儿子的睡前电话。

  “爸爸,你在干嘛?”

  “在读书。”刘星说,“一本关于黑客和画家的书。”

  “黑客?是坏人吗?”

  “不是那种黑客。是喜欢创造东西的人。”

  “哦,就像我喜欢用积木搭房子?”

  “对,就像你用积木搭房子。”

  “那画家呢?”

  “画家是用颜色创造美的人。”

  “黑客和画家为什么放在一起?”

  刘星想了想:“因为他们都是创造者。虽然用的工具不同——黑客用电脑,画家用画笔——但他们都在创造新东西,让世界变得更丰富。”

  “我也想创造。”儿子说,“我明天要创造一个新的乐高城堡!”

  “好,明天视频给爸爸看。”

  “嗯!爸爸晚安。”

  “晚安。”

  挂断电话,刘星看着窗外的城市灯火。

  每一盏灯下,可能都有一个创造者——在写代码,在画图,在写方案,在做饭,在给孩子讲故事。创造不一定是伟大的艺术,可以是日常的、微小的、但真实的东西。

  而他,刘星,四十二岁的程序员、创业者、父亲、禅修者、哲学读者、艺术体验者——所有这些身份,都在参与创造。

  创造事业,创造家庭,创造自我。

  代码是这种创造的媒介之一,就像诗歌是李艳的媒介,陶艺是她的另一重媒介。

  媒介不重要,重要的是创造本身。

  刘星关上电脑,准备睡觉。

  睡前他对自己说:“明天,继续创造。”

  简单,但足够。

目录
设置
手机
书架
书页
评论