HackerURLs

一次又一次被重新发现的经典。

同一个链接,相隔一年以上,一次又一次被人重新发现、再次冲上 Hacker News 首页。能经受住这种时间检验的,大多是值得一读再读的文章。每篇附中文标题,讨论最热的那些再加上中文导读和高赞评论翻译。

从名人堂开始
  • 4,700+篇经过时间检验的经典

Hall of fame

名人堂

在经典库里看全部精选

上首页次数最多、而且有中文导读的 30 篇。时间轴上每个黑点是一次上首页,空心点是一次没冲上去的投稿。

  1. 正在载入经典…

Archive

经典库

按第一次上首页的年份分布,点柱子筛选。

排序

    About

    这些经典是怎么挑出来的

    1. 01

      合并同一个链接

      读取 Hacker News 自 2006 年以来的全部链接投稿,把 http/https、www、跟踪参数等写法不同的同一篇文章合并成一条。

    2. 02

      只留经得起时间的

      同一链接至少两次拿到 50 分以上(约等于上首页),而且两次相隔一年以上;再由 AI 剔除状态页、产品首页和新闻事件。

    3. 03

      写导读、译评论

      上首页次数最多的 2,000 篇配上中文导读、"为什么经久不衰",并精选翻译 HN 高赞评论。导读由 AI 生成,可能有误。

    历史与人物yakshav.es

    Donald Knuth:Yak Shaving 的守护圣人

    Donald Knuth – The Patron Saint of Yak Shaves (2017)

    2次上首页
    5年跨度
    558累计得分
    130条评论

    2017 — 2022,它一次次回到首页

    黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。

    导读

    这篇文章回顾了 Donald Knuth 为排版《计算机程序设计艺术》而开发 TeX 的历程:为了解决排版问题,他一路“顺藤摸瓜”,最终写出了 TeX、METAFONT、Web 等一整套系统,堪称“剃牦牛毛”(yak shave,为做一件事被迫先完成一长串前置任务)的鼻祖与守护圣人。文章以此说明,有些看似跑题的深挖,反而成就了传世之作。

    为什么经久不衰:它把程序员熟悉的“剃牦牛毛”文化与 Knuth 的传奇故事结合起来,提醒我们深度投入的支线工作有时正是伟大成果的来源,多年后仍能引发共鸣。

    关键词 Donald KnuthTeXyak shave排版

    HN 评论精选

    补充更多史实:Knuth 的所有工具都有被抛弃的原型,他还重写过照排机固件,工程量惊人

    不止如此。文中提到了 TeX 的 Sail 版本,但其实其他东西也都有可用的原型:早期 Metafont、早期 Web(叫 Doc)的版本,以及用早期 Metafont 语言写的 Computer Modern 字体。这些原型虽已完整文档化并可通过 Arpanet 匿名 FTP 获取,但都是实验性概念验证,后来连同实现它们的语言一起被完全抛弃,由 Knuth 从零重写“真正的”版本(每个都是先手写在法律便签上,再录入并整体调试)。你还漏了一个更冷门但很有启发性的例子:为了得到 TAOCP 第 2 卷的付印稿,Knuth 买了一台 Alphatype CRS 照排机,因为不满厂商固件,他重写了驱动它的 8080 代码——要同时处理来自各子系统的八层中断:必须恰到好处地加减速的水平/垂直步进电机,还要与四块 S100 板卡保持同步,实时从专有轮廓格式生成字符切片,在镜头恰好经过相纸正确位置时闪存进去(四块相同的板卡,因为第一块处理时要填充第二块;再乘以二,因为字距调整可能导致两个字符重叠)。哦,还得处理内存管理……

    drfuchs查看英文原文

    This and more. The Sail version of TeX is mentioned, but everything else had a usable prototype, too: An early version of Metafont in Sail, an early version of Web (called Doc, though I don’t recall what the names of the Tangle and Weave equivalents were), and an early version of Computer Modern fonts in the early Metafont language. Though fully documented and available via anonymous FTP on the Arpanet, all of these prototypes were experimental proofs-of-concept and were completely discarded, along with the languages they implemented, with the “real” versions rewritten from scratch by Knuth (each first by hand on legal pads, then typed in and debugged as a whole.) And you missed one more obscure but instructive example: To get the camera-ready copy for ACP Vol 2, Knuth purchased an Alphatype CRS phototypesetter. And, unhappy with the manufacturer’s firmware, he rewrote the 8080 code that drives the thing. Eight simultaneous levels of interrupts coming from various subsystem: the horizontal and vertical step-motors that you had to accelerate just right, while keeping synchronized with four S100 boards that generated slices of each character in realtime from a proprietary outline format, to be flashed into the lens just as it was passing the right spot on the photo paper. (Four identical boards, since you had to fill the second while the first one did its processing; times two for two characters that might overlap due to kerning). Oh, and you had to handle memory management of the font character data since there wasn’t enough RAM for even one job’s worth (see our joint paper). Fun times. I did the driver on the mainframe side, so got to be there for the intense debugging sessions that used only the CRS’s 4x4 hex keypad and 12-character dot-matrix display. Thanks for the DVI shout-out, btw.

    区分 Knuth 式的主动深挖与日常被迫的剃牦牛毛,后者往往徒劳且消磨动力

    不过,其实没有什么阻止他用 Fortran 之类的语言开发 TeX 然后就到此为止。他只是比较容易被带偏,会给自己“书呆子狙击”。剃牦牛毛是因系统间阻抗失配而做的令人沮丧的工作,比如 Libtool 就是个巨大的牦牛毛,或者因为标准工具搞不定输入文件、环境又不让用 Python,只好手写 CSV 解析器。几天后什么都没真正完成,你恨上了编程,等终于能开始真正的问题时,当初的动力早已耗尽。但我喜欢为这个设个守护圣人的想法,Knuth 当之无愧。也许 Dijkstra 可以当“更优方案从未被采用”的守护圣人。

    projektfu查看英文原文

    I think, though, that there was nothing preventing him from developing TeX in Fortran or something, and leaving it at that. He is just somewhat easily distracted. He nerd-snipes himself possibly. Yak Shaving is the frustrating work we do because of impedance mismatch in the system. Libtool is a huge yak shave, for example. But so is writing a custom CSV parser because an input file is just not quite accessible by the standard, and you could just use python to make the translation, but your environment won't let you use python in that spot, etc. Days later nothing is really accomplished, you hate programming, and you can finally start work on the real problem after losing the motivation you had when you started. But I like the idea of a patron saint for this, and Knuth is as good as any. Perhaps Dijkstra could be the patron saint of Unused Better Solutions. I'm sure there's a litany of things that could use saints in this field.

    举 100 rabbits 为例,说明有人把剃牦牛毛活成了生活方式

    我关注 100 rabbits 那伙人,我觉得他们把剃牦牛毛发展成了一种生活方式。他们做了一个基于栈的虚拟机和围绕它的一整套软件,感觉就是在不慌不忙地探索每一条让他们感兴趣的路径,真正实现了我“留起胡子学 Haskell”的梦想。

    kamranjon查看英文原文

    I follow the folks over at 100 rabbits (https://100r.co) and I think they’ve sort of developed yak shaving into a lifestyle. I don’t want to go too far into it cause the website is a treasure trove and exciting to explore on your own but if you follow some of their latest stuff, they’ve built a stack based virtual machine, and a whole set of software around it and it truly feels like they are just exploring every avenue that interests them without rushing themselves. Truly the embodiment of my grow a beard and learn Haskell dreams.

    TAOCP 本身就是最大的牦牛毛:写编译器书的前置知识变成了传世巨著

    《计算机程序设计艺术》本身就是一次剃牦牛毛。Knuth 原本要写一本编译器的书,但他意识到需要先讲一些前置知识,结果就成了 TAOCP。

    qntty查看英文原文

    The Art of Computer Programming itself is a yak shave. Knuth was originally going to write a book on compilers, but he realized that he needed to cover some prerequisites first, and that became TAOCP.

    历次讨论

    同类还值得读

    1. 开发者无薪坚持完成 Mac 图形计算器:一个秘密项目的故事

      Dev stays without pay to finish Mac Graphing Calculator as skunkworks project

      苹果 Mac 图形计算器(Graphing Calculator)开发者的亲述:在项目被砍后,几位工程师在没有报酬、没有正式授权的情况下,以“地下项目”方式偷偷留在公司把软件做完…

      历史与人物上首页 6 次 · 2009–2022pacifict.com
    2. 理查德·费曼与 Connection Machine

      Richard Feynman and the Connection Machine

      长文回忆费曼晚年参与 Connection Machine 并行计算机项目的经历:他分析路由器、用自创的并行 Basic 编写 QCD 程序,也涉足细胞自动机等主题。

      历史与人物上首页 5 次 · 2010–2021longnow.org编辑精选
    3. 负 2000 行代码

      -2000 Lines of Code

      folklore.org 上 Andy Hertzfeld 记录的一则苹果 Macintosh 开发轶事:Bill Atkinson 被问到写了多少行代码时,回答“-2000 行…

      历史与人物上首页 4 次 · 2014–2022folklore.org编辑精选
    4. Dennis Ritchie 的第一版 C 编译器(约 1972 年)

      Dennis Ritchie’s first C compiler (c. 1972)

      这个 GitHub 仓库保存了 Dennis Ritchie 约 1972 年编写的最早 C 编译器源码,是 C 语言和 Unix 早期历史的一手材料。

      历史与人物上首页 4 次 · 2013–2025github.com
    5. 一位破解赛马密码的赌徒

      A Gambler Who Cracked the Horse-Racing Code (2018)

      彭博社 2018 年的长篇特写,讲述数学家 Bill Benter 如何用统计模型和算法在赛马博彩中持续盈利、累计赢得近十亿美元的故事。

      历史与人物上首页 4 次 · 2018–2024bloomberg.com

    打赏支持

    打赏二维码

    觉得有用,请作者喝杯咖啡。

    WeChat

    关注向阳乔木

    微信公众号「向阳乔木推荐看」

    微信公众号「向阳乔木推荐看」二维码

    微信扫一扫;在微信里打开本页时,长按二维码识别。