资讯动态

从Lisp到万维网再到当当网:信息表达、组织与分发的技术演进

发布时间:2026/10/21 3:30:31 来源:尧图企业网站定制
1. 三个改变信息世界的事件为什么值得放在同一天讲11 月 13 日这个日子在技术圈里其实挺有意思。它不像某些被反复纪念的“大日子”那样隆重但如果你把三件事摆在一起看——万维网第一个网页诞生、Lisp 语言先驱出生、当当网上线——会发现它们恰好串起了信息文明的一条完整链路知识如何被表达、如何被组织、如何被送到普通人手里。我做内容和技术分享这些年越来越觉得单独讲一个技术事件容易变成“百科条目”但把同一天发生的几件事放在一起对照就能看出一些平时注意不到的东西。比如为什么是 Lisp 这种看起来“曲高和寡”的语言反而成了后来很多智能系统的思想源头为什么第一个网页那么简单却比后来无数复杂系统影响都大为什么一家卖书的网站上线会被归到技术史里讲这篇文章就是想把这三个事件拆开再拼回去。我会从每个事件的核心技术点、背后的设计取舍、对后来从业者的实际影响三个层面来讲中间会穿插一些我自己在学习和做项目时踩过的坑、总结的经验。不管你是刚入行的开发者还是做了很多年技术、想回头看看来路的人应该都能从中拿到一些能直接用的东西。先给一个整体判断这三件事分别对应了表达层、组织层、分发层。Lisp 解决的是“怎么把复杂逻辑写成机器能懂、人也能读的形式”万维网解决的是“怎么让这些表达能被互相链接、被任何人访问”当当网解决的是“怎么把信息变成普通人愿意掏钱的服务”。三层缺一不可而它们恰好都在同一天留下了痕迹。2. 万维网第一个网页极简背后是极其克制的设计2.1 第一个网页到底长什么样为什么它那么简单很多人第一次听说“万维网第一个网页”时会下意识以为它应该很简陋甚至觉得“那也能叫网页”但如果你真的去看它的结构会发现它简陋得非常有道理。它没有图片、没有样式、没有脚本只有标题、段落和几个链接。用今天的标准看连一个最基础的静态页面都算不上。但正是这种极简让它完成了最关键的一件事证明“超链接”这个想法是可行的。在它之前信息要么是线性的书、文章要么是孤立的一个个文件。超链接把“关联”变成了可点击的动作你不需要知道目标文件在哪台机器上、叫什么名字只要点一下就能跳过去。我后来自己做文档系统时专门模仿过这种思路。当时团队内部有几十个分散的说明文件大家找东西全靠搜索和问人。我试着用一个最笨的办法每个文件顶部加一行“相关文件”链接手动维护。就这么一个动作查找效率提升了一大截。那时候我才真正理解第一个网页的价值不在于它展示了什么而在于它示范了一种组织信息的方式。提示如果你现在要设计任何信息结构不管是文档、代码注释还是产品页面先问自己一句——“用户从这里能跳到哪”如果答案是“只能返回”那这个结构大概率是有问题的。2.2 超链接、URL 和 HTTP三个被低估的基础约定第一个网页背后其实站着三个东西超链接、URL、HTTP。它们今天看起来理所当然但在当时每一个都是需要“约定”的。超链接解决“关系怎么表达”。它把两个独立资源之间的关系变成了文档本身的一部分。URL解决“东西怎么找到”。它给每个资源一个全局唯一的地址不依赖本地文件系统。HTTP解决“怎么取回来”。它定义了一套简单的请求-响应规则让不同机器之间能对话。这三个东西有一个共同特点都足够简单简单到可以被任何人实现。这一点特别重要。如果当时的设计者选择了一套复杂协议可能就只有少数机构能用得起万维网就不会变成“万维”。我见过不少团队在做内部系统时总想把协议设计得很“完善”加一堆字段、加一堆状态。结果就是接入成本太高大家宁愿用最土的办法传文件。后来我总结了一条经验基础约定越简单生态越容易长出来。这不是说不要扩展而是说核心层要克制。2.3 从第一个网页到现代前端哪些东西变了哪些没变从第一个网页到现在前端技术已经换了好几轮。从静态 HTML 到动态页面再到各种框架、构建工具、组件化方案。但如果你仔细看会发现底层逻辑其实没怎么变层面第一个网页时代现在是否改变内容表达HTML 标签JSX / 模板语法形式变了本质没变资源定位URLURL 路由核心没变传输方式HTTPHTTP/2、HTTP/3性能优化语义没变链接关系超链接路由跳转、API 调用关系仍然存在我刚开始学前端时总觉得框架才是重点。后来做久了才发现真正决定一个项目能不能长期维护的往往是那些最基础的东西URL 设计得好不好、链接关系清不清楚、内容结构合不合理。框架会换但这些基础约定会一直跟着你。注意不要因为框架提供了便利就忽略底层约定。我见过太多项目路由乱成一团链接关系全靠代码里硬编码最后连开发者自己都说不清页面之间怎么跳。2.4 实操心得如何用“第一个网页”的思路优化你的项目文档如果你现在手上有一个项目文档散落在各处可以试试下面这个流程。这是我实际用过、并且确实有效的办法列出所有文档不管是 README、设计说明还是接口文档先全部列出来。给每个文档一个稳定地址可以是文件路径也可以是内部链接关键是不要变。在每个文档顶部加“相关链接”至少指向两个其他文档形成网状结构。定期检查死链链接失效比没有链接更糟糕会让人失去信任。保持内容简短一个文档只讲一件事讲清楚就行不要试图在一页里塞所有东西。这套方法听起来很笨但它解决了一个核心问题让人能自己找到答案。一个团队里如果每个人都能通过链接找到需要的信息沟通成本会大幅下降。3. Lisp 语言先驱为什么这门“老语言”至今还在影响新系统3.1 Lisp 的核心思想代码即数据数据即代码Lisp 最让人印象深刻的一点是它的“同像性”——代码和数据用同一种结构表示。简单说你写的程序本身就是一个列表而列表也是 Lisp 里最基础的数据结构。这意味着程序可以像数据一样被处理数据也可以像程序一样被执行。这个想法在当时非常超前。它带来的直接好处是写程序变得极其灵活。你可以写一个程序生成另一个程序也可以写一个程序修改自己。这种能力后来在很多领域都变得非常重要比如编译器、解释器、智能系统。我第一次接触 Lisp 时觉得它的括号太多了看起来很不友好。但当我试着用它写了一个简单的解释器之后突然就理解了它的设计逻辑它把“结构”和“意义”统一了。你不需要在语法层面区分“这是代码”还是“这是数据”因为它们在形式上是一样的。提示如果你觉得 Lisp 难懂可以先从“列表”这个结构入手。把列表理解成“一组东西”然后看它怎么被求值就会清晰很多。3.2 从 Lisp 到现代智能系统哪些概念被继承下来了Lisp 的很多概念后来被其他语言和系统继承和发展了。比如递归Lisp 很早就把递归作为核心控制结构现在几乎所有语言都支持。垃圾回收Lisp 是早期实现自动内存管理的语言之一现在已经是标配。交互式开发Lisp 的 REPL 模式让开发者可以边写边试现在很多语言都有类似环境。宏系统Lisp 的宏允许你在编译期扩展语言本身这个能力后来影响了很多语言设计。我后来做智能相关项目时发现很多算法描述里都会出现 Lisp 的影子。比如符号计算、规则引擎、知识表示这些领域的经典文献里Lisp 几乎是默认语言。这不是偶然而是因为 Lisp 的设计目标就是处理符号和关系而这恰好是很多智能问题的核心。3.3 学 Lisp 到底有没有用一个从业者的真实看法经常有人问现在学 Lisp 还有没有用。我的看法是如果你只把它当成一门找工作的语言那确实用处不大但如果你把它当成一种思维训练那非常值得。我自己的经历是学 Lisp 之前我写代码更多是“堆功能”学 Lisp 之后我开始更关注“结构”和“抽象”。比如我会想这个逻辑能不能抽象成一个通用模式这个数据结构能不能更简洁地表达关系这种思维方式在我后来用任何语言写代码时都帮到了我。注意不要指望学 Lisp 能立刻提升你的项目产出。它的价值是长期的、底层的更像是一种“内功”。3.4 实操建议如何用 Lisp 思维改进你的日常代码即使你不用 Lisp 写项目也可以借用它的思维方式。下面是我常用的几个做法把重复逻辑抽成函数Lisp 很强调“小函数组合”你可以试着把代码里重复的部分抽出来哪怕只有两行。用数据描述配置不要用一堆 if-else 写配置试着用数据结构比如列表、字典来描述然后写一个通用处理逻辑。保持函数纯粹Lisp 风格里函数尽量不依赖外部状态这样更容易测试和组合。多用递归思路遇到树形结构、嵌套数据时递归往往比循环更清晰。这些做法不依赖具体语言在任何项目里都能用。我自己在重构老代码时经常用这几条来梳理逻辑效果很好。4. 当当网上线信息分发如何变成一门普通人的生意4.1 为什么一家卖书的网站会被写进技术史当当网上线这件事表面看是商业行为但放在技术史里讲是因为它做了一件很关键的事把信息分发变成了普通人能直接使用的服务。在它之前网上买东西还是个新鲜事很多人不信任、不习惯。它用“书”这个品类切入降低了门槛——书是标准品不需要试穿、不需要尝味道决策成本低。从技术角度看它要解决的问题包括商品信息怎么组织、订单怎么处理、支付怎么对接、物流怎么跟踪。这些问题今天看起来是标配但在当时每一个都需要从头搭建。我后来参与过类似系统的开发深知其中的复杂度不是技术本身有多难而是要把很多环节串起来还要保证稳定。4.2 电商系统的核心模块从商品展示到订单履约一个电商系统不管卖什么核心模块大致都差不多。下面这张表是我自己总结的可以作为参考模块核心功能关键难点商品管理信息录入、分类、搜索数据一致性、搜索准确度购物车暂存、修改、合并状态同步、并发处理订单系统创建、支付、状态流转幂等性、异常处理库存系统扣减、回滚、预警超卖、性能支付对接支付、退款、对账安全、异步通知物流跟踪发货、轨迹、签收接口稳定性、数据延迟我刚开始做电商相关项目时觉得订单系统最简单不就是改状态吗后来才发现订单状态流转是最容易出问题的地方。比如用户支付成功但订单没更新、退款了但库存没回滚这些都会导致数据不一致。解决这些问题靠的不是多高深的技术而是严谨的流程设计和充分的异常处理。提示如果你要设计任何有状态流转的系统先把所有可能的状态和转换画出来然后逐个问“如果这一步失败了会怎样”4.3 从当当到现在的电商哪些经验仍然有效虽然现在的电商系统比当年复杂得多但一些核心经验仍然有效信息结构要清晰商品分类、属性、搜索关键词这些基础信息如果一开始没设计好后面改起来非常痛苦。流程要可追溯每一步操作都要有记录出了问题能查到原因。异常要提前考虑支付超时、库存不足、物流丢件这些都要有预案。性能要留余量大促时的流量可能是平时的几十倍架构上要能扩展。我自己在做一个内部交易系统时就因为没有提前考虑“部分退款”的场景导致后来要改数据库结构非常麻烦。从那以后我在设计任何交易相关功能时都会先把退款、取消、异常这些情况想清楚。4.4 实操心得小团队如何搭建一个可用的商品展示系统如果你是一个小团队想快速搭一个商品展示系统可以按下面这个思路来先用静态数据不要一开始就上数据库用 JSON 文件或表格先跑通流程。设计好数据结构商品 ID、名称、价格、分类、图片地址这几个字段先定下来。做一个简单的搜索哪怕只是按名称过滤也比没有强。加一个详情页展示商品信息和相关推荐。记录用户行为点击、浏览、搜索词这些数据后面会很有用。这套方案不追求大而全但能让你快速验证想法。等业务跑起来再逐步替换成更专业的方案。5. 三个事件放在一起看信息表达、组织与分发的完整链路5.1 表达层Lisp 教会我们如何描述复杂逻辑Lisp 的价值在于它提供了一种描述复杂逻辑的方式。它不追求语法上的友好而是追求表达上的灵活。这种灵活让它在处理符号、规则、关系时特别有优势。今天很多智能系统底层仍然在用类似的思想。我自己的体会是当你面对一个特别复杂的问题时不要急着写代码先用一种“可被处理的形式”把它描述出来。这个形式可以是列表、可以是树、可以是图。描述清楚了解决方案往往就自然浮现了。5.2 组织层万维网教会我们如何连接信息万维网的核心是连接。它不生产内容但它让内容之间可以互相引用、互相跳转。这种连接能力让信息从“孤岛”变成了“网络”。我在做知识管理时最看重的就是连接。一个笔记如果没有链接到其他笔记它的价值会大打折扣。同样一个文档如果没有指向相关文档它的可用性也会降低。连接本身就是一种信息。5.3 分发层当当教会我们如何把信息变成服务当当网上线的意义在于它证明了信息可以变成普通人愿意付费的服务。这需要技术但更需要理解用户。书是标准品但用户需要的是“找到想看的书”“方便地买到”“放心地收到”。这些需求才是技术要解决的问题。我后来做产品时经常提醒自己不要只盯着技术指标要看用户到底要什么。技术是手段服务才是目的。5.4 对今天从业者的启示三层缺一不可这三个事件放在一起给今天从业者的启示是表达、组织、分发三层缺一不可。如果你只关注表达做出来的东西可能很精巧但没人用得上。如果你只关注组织可能有一堆信息但无法触达用户。如果你只关注分发可能短期有效但缺乏长期价值。我自己在做任何项目时都会问三个问题这个东西怎么表达怎么组织怎么送到需要的人手里这三个问题想清楚了项目基本就不会跑偏。6. 常见问题与排查技巧实录6.1 关于万维网和网页开发的高频问题问题一为什么我的页面链接总是失效最常见的原因是路径写错了。相对路径和绝对路径混用或者文件移动后没有更新链接。解决办法是统一用绝对路径或者用构建工具自动处理。问题二页面加载很慢从哪里查先看网络请求再看资源大小最后看渲染逻辑。我通常的顺序是打开开发者工具看哪个请求最慢然后针对性优化。问题三如何设计一个清晰的 URL 结构原则是短、有意义、稳定。不要用一堆参数尽量用路径表达层级关系。6.2 关于 Lisp 和编程思维的高频问题问题一Lisp 的括号太多看不下去怎么办用编辑器的高亮和缩进功能先把结构看清楚。然后从最简单的表达式开始不要一上来就看复杂代码。问题二学 Lisp 对实际工作有帮助吗短期看可能没有直接帮助但长期看它会改变你思考问题的方式。我自己在写任何语言时都会不自觉地问“这个逻辑能不能更抽象一点”问题三有没有推荐的 Lisp 学习路径先学基本语法然后写一个简单的解释器最后看一些经典案例。不要贪多一步一步来。6.3 关于电商系统的高频问题问题一订单状态总是对不上怎么办先检查状态流转逻辑再看是否有并发问题。常见做法是加状态机限制非法转换。问题二库存超卖怎么解决可以用数据库锁也可以用队列串行化。关键是保证扣减操作的原子性。问题三支付回调丢失怎么办要有主动查询机制不能只依赖回调。同时要记录所有支付相关日志方便排查。6.4 独家避坑技巧我踩过的那些坑不要忽视日志我早期做项目时日志写得很少出了问题只能靠猜。后来养成习惯关键路径都加日志排查效率提升很多。不要过度设计一开始就想做得很完善结果迟迟上不了线。后来学会先做最小可用版本再逐步迭代。不要忽略文档代码写得再好没有文档别人也很难接手。我现在要求自己每个模块至少写一段说明。不要害怕重构代码会随着需求变化而变脏定期重构是必要的。但重构前一定要有测试覆盖。7. 最后再分享几个实用建议如果你对这三个事件感兴趣想进一步了解我建议你可以做几件事。第一找一个 Lisp 的在线环境花半小时写几个最简单的表达式感受一下它的思维方式。第二用浏览器开发者工具看看你常访问的网页观察它的链接结构和资源加载方式。第三如果你有做产品的想法试着从一个标准品切入把信息展示、交易流程、用户反馈这几个环节跑通一遍。我自己从这些事件里学到的最重要一点是技术最终是要为人服务的。Lisp 再优雅如果没人用也只是论文里的东西万维网再简单只要能让人们更方便地获取信息就有生命力当当网再普通只要解决了用户的实际问题就有价值。这个内容后续还可以这样扩展你可以把这三个事件对应到你自己所在的领域看看表达、组织、分发这三个环节哪些做得好哪些还有提升空间。很多时候问题不是出在技术上而是出在这三个环节没有打通。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑