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 生成,可能有误。

    编程与软件工程prog21.dadgum.com

    想写编译器?读这两篇论文就够了

    Want to Write a Compiler? Just Read These Two Papers.

    3次上首页
    7年跨度
    706累计得分
    192条评论

    2008 — 2015,它一次次回到首页

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

    导读

    这篇博客文章推荐两份写编译器的入门材料:Crenshaw 的动手教程,以及一篇主张把编译过程拆成许多简单小 pass 的论文。作者的核心意思是,写编译器不必先被大部头理论吓住,可以从简单、可运行的实现一步步搭起来。

    为什么经久不衰:它用极简、可动手的路径对抗“编译器高不可攀”的印象,今天仍是低门槛入门的经典指路文。

    关键词 编译器Crenshaw多遍编译入门

    HN 评论精选

    推荐语低估了阅读成本,值得读与否需要实际验证。

    “Just”?我算了一下,第一篇有 94,000 词。真有人读完这两篇、确认作者推荐的东西值得读吗?边读边写代码大概要整整一周(我很想知道是否不同)。这是个真诚的问题。人们总被有影响力的人推荐读 SICP,但真正讨论它是否值得时,意见范围相当大。

    Jabbles查看英文原文

    "Just"? I make the first one 94,000 words. Has anyone actually read the papers to make sure that the OP has recommended something worthwhile? "Reading" and then coding alongside would probably take a full week's worth of time (I'd be interested to know if different). It's a genuine question. People are recommended to read SICP all the time, by many influential people, but when a proper discussion of whether it's actually worthwhile comes up, we found a considerable range of opinions. http://news.ycombinator.com/item?id=2846799

    编译器难在整体工作量,不是书晦涩;多 pass 未必省力。

    这些书晦涩并不是大家认为编译器难写的原因。对没写过编译器的人来说,难的是你要解决的问题规模。按规范为非平凡语言写编译器要大量工作。正则和文法可能难懂,遍历 AST 也可能难。百遍编译器也许让这部分更容易,但几乎肯定不能减少从零到可用编译器的总工作量,而“编译器难”的名声正来自这里。(顺便说,这不代表那两份材料不值得读。我扫了一遍,看起来都很好。)

    Goladus查看英文原文

    > Not surprisingly, the opaqueness of these books has led to the myth that compilers are hard to write. Opaqueness of the books is not what makes everyone think compilers are hard to write. What makes compilers hard to write, for someone who has never done it before, is the scope of the problem you're trying to solve. Writing a compiler, to spec, for a non-trivial language takes a lot of WORK. Regexes and grammars can be tricky to grok and walking abstract syntax trees can be hard as well. A hundred-pass compiler may make that part easier, but it almost certainly doesn't reduce the overall amount of work required to go from scratch to a working compiler, and that's where the "compilers are hard" reputation comes from. (Incidentally, that doesn't mean the two sources mentioned aren't worth reading. Scanning both of them, they look excellent.)

    非科班也能靠 Crenshaw 教程上手。

    我没有正规的计算机科学教育。第一次要写迷你编译器时,为了教育价值决定手写而不是用 parser generator。Google 找到 Crenshaw 的 paper(Let's build a compiler),跟着他的代码写自己的很简单。所以强烈推荐。

    asg查看英文原文

    I've not had a formal CS education. So the first time I had to write a mini compiler, I decided to do it by hand, for its educational value, rather than use a parser generator. Google got me Crenshaw's paper (Lets build a compiler), and I remember it was very simple to follow his code to write my own. So yes, much recommended.

    多遍编译曾是内存受限下的权宜之计,并非新发明。

    我被“作者提倡用几十或几百个编译 pass,每个尽量简单”逗乐了。这有点像走投无路时的招。IBM 1401 上有个 COBOL 编译器大约 79 遍。他们只有约 4K 内存,但有快速磁带机,所以每一遍读上一中间形式,处理,写出下一中间形式。除了做排序的那些遍。

    Animats查看英文原文

    I was amused by "The authors promote using dozens or hundreds of compiler passes, each being as simple as possible." That's kind of a desperation move. There was a COBOL compiler for the IBM 1401 with about 79 passes.[1] They only had 4K or so of memory, but they had fast tape drives, so each pass read the previous intermediate form, did some processing on it, and wrote out the next intermediate form. Except for the passes which did sorts. [1] http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/140x/C24-3146-3_1401_cobolOper.pdf

    历次讨论

    同类还值得读

    1. 开源应用架构

      The Architecture of Open Source Applications

      《开源软件架构》(AOSA)是一本在线免费书,邀请知名开源项目的作者亲自剖析其内部设计,涵盖 SQLAlchemy、LLVM、Audacity、Apache、Bash 等系统。

      编程与软件工程上首页 9 次 · 2011–2024aosabook.org编辑精选
    2. 编程语言简史:简短、不完整且多半错误

      A Brief, Incomplete, and Mostly Wrong History of Programming Languages

      一篇以戏谑、故意不准确的方式回顾编程语言史的博客文章,用夸张轶事和讽刺定义串起 Lisp、C、C++、Java、JavaScript、PHP 等语言。

      编程与软件工程上首页 8 次 · 2009–2021james-iry.blogspot.com
    3. SQLite 是如何测试的

      How SQLite is tested

      SQLite 官方文档页,系统介绍 SQLite 的测试体系:多种测试方法(TCL 测试、模糊测试、回归测试、静态分析等)和海量测试用例,展示了这个小型开源项目如何靠极致测试获得…

      编程与软件工程上首页 8 次 · 2009–2025sqlite.org编辑精选
    4. 高级编程语言(2009)

      Advanced programming languages (2009)

      Matt Might 的经典文章,按用途推荐“高级编程语言”:如果追求就业就选主流语言,如果追求表达力、学术研究或创业,则推荐 Haskell、OCaml、Scala 等函数式语…

      编程与软件工程上首页 8 次 · 2009–2022matt.might.net
    5. 我的 Forth 与栈机器经历

      Yosefk - My history with Forth & stack machines

      作者以亲身经历回顾了使用 Forth 语言和栈式机器的历程:既赞叹其简洁优雅、代码量小、可自举的优点,也坦率指出栈操作在实际编程中的痛苦,以及 Forth 社区文化中的问题。

      编程与软件工程上首页 8 次 · 2010–2024yosefk.com编辑精选

    打赏支持

    打赏二维码

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

    WeChat

    关注向阳乔木

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

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

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