HackerPapers

HN 二十年,最值得读的论文。

从 Hacker News 2006 年以来的全部投稿里,挑出链接本身就是论文的帖子:arXiv、期刊、会议论文、技术报告。每篇附中文标题,讨论最热的那些再加上中文导读和高赞评论翻译。

从必读开始
  • 8,000+篇被 HN 讨论过的论文

Essential

必读 30 篇

在论文库里看全部精选

编辑精选里 HN 讨论最热的 30 篇,每篇都有中文导读。不知道从哪读起,就从这里开始。

  1. 正在载入论文…

Archive

论文库

点柱子按年份筛选。注:源数据里 2023 年的帖子分数记录不全,2026 年尚未过完,这两年收录偏少。

难度
排序

    About

    这些论文是怎么挑出来的

    1. 01

      全量扫一遍

      读取 Hacker News 自 2006 年以来的全部 446 万条链接投稿,找出指向 arXiv、期刊、会议、技术报告和学术 PDF 的帖子。

    2. 02

      只留论文本身

      由 AI 逐条判断,剔除介绍论文的新闻、博客和幻灯片,同一篇论文的多次投稿合并计算,并统计它在评论区被引用的次数。

    3. 03

      写导读、译评论

      讨论最热的 1,500 篇配上中文导读,并精选、翻译 HN 高赞评论。导读由 AI 生成,可能有误,请以原文为准。

    编程语言与软件工程2025dl.acm.org编辑精选

    论将系统分解为模块的准则(1972)

    On the criteria to be used in decomposing systems into modules (1972)

    入门 · 约 35 分钟读完前置知识:基本编程经验、模块化设计概念、软件工程基础

    读论文 HN 讨论
    153HN 得分
    28条评论

    导读

    这是软件工程经典论文《On the criteria to be used in decomposing systems into modules》(1972)。论文以 KWIC 索引系统为例,对比两种模块划分方式,主张模块应按“信息隐藏”原则划分——每个模块隐藏一个设计决策——而不是按流程图步骤划分。这一思想由 Parnas 提出,深刻影响了后续软件设计理论。

    HN 关注点:这是信息隐藏/模块化设计的奠基性论文,50 年后程序员仍在犯按流程划分模块的错误,HN 读者借此讨论软件工程教育与设计原则的传承。

    关键词 软件工程信息隐藏模块化Parnas

    后来怎么样

    论文提出“信息隐藏”作为模块划分原则,成为模块化设计、封装和面向对象思想的重要理论基石,深刻影响了后续软件工程与程序设计语言设计。

    HN 评论精选

    这几条评论里:支持 2 补充 2

    支持50 年后程序员仍按流程而非信息隐藏划分模块,但工具进步已让 KWIC 这类系统变得微不足道

    这篇论文已有 50 多年历史,但程序员仍在犯同样的错误:按流程图定义模块,而不是按隐藏设计决策来定义模块。这说明软件工程作为一个领域还很年轻(或许缺乏基础训练)。但这也是过去 50 年的进步:KWIC 索引从“一个好程序员一两周能写出来的小系统”变成了用 Java 标准库几行代码就能实现的小系统。另外我最近写了篇相关博客,最初的测试读者都说不知道 KWIC 索引是什么,需要更多解释——即时全文检索真的改变了这一切。

    bobbiechen查看英文原文

    This paper is 50+ years old and yet programmers are still making the same mistake of defining modules based on a flowchart, instead of modules that hide design decisions. I think that shows the youth (and perhaps lack of foundational training) of software engineering as a field. But also the progress of the last 50 years: the KWIC index went from “a small system [that] could be produced by a good programmer within a week or two” to a tiny system that can be written in a couple lines using the standard library of Java (as I once saw a demo of). Also: I recently wrote a blog post related to this paper and all of the initial test readers told me they had no idea what a KWIC index was and it needed more explanation. Instant full-text search really changes things.

    补充这篇经典论文在 HN 上历次讨论都不多

    让我惊讶的是这篇文章在 HN 上讨论不多。此前只有三次提交获得一些关注:2023 年 9 月(15 条评论)、2022 年 1 月(27 条评论)、2015 年 1 月(5 条评论)。

    Jtsummers查看英文原文

    It still surprises me there hasn't been much discussion on this article here. The only three submissions that got any traction previously: https://news.ycombinator.com/item?id=37477446 - Sept 2023 (15 comments) https://news.ycombinator.com/item?id=30138468 - Jan 2022 (27 comments) https://news.ycombinator.com/item?id=8849468 - Jan 2015 (5 comments)

    支持作者称此文对自己影响最深,并写了文章将其与其他软件设计著作关联

    这是对我影响最大的文章之一。我写过两篇文章,试图把它与我读过的其他软件设计书籍联系起来,第一篇见 entropicthoughts.com 的链接。

    kqr查看英文原文

    This is one of the articles that influenced me most. I did write two articles trying to tie it into some other books I've read on software design, the first being https://entropicthoughts.com/software-design-tree-and-program-families

    补充推荐 Ousterhout 的《A Philosophy of Software Design》作为现代呼应

    想看更近期的相关著作,可以看 John Ousterhout 的精彩书籍《A Philosophy of Software Design》,本书此前也在 HN 上讨论过。

    WillAdams查看英文原文

    For a more recent text which touches on this see John Ousterhout's wonderful book: https://www.goodreads.com/book/show/39996759-a-philosophy-of-software-design which has been discussed here previously: https://news.ycombinator.com/item?id=42456492 https://news.ycombinator.com/item?id=43166362

    历次讨论

    同领域还值得读

    1. Google 的软件工程(2017)

      Software Engineering at Google (2017)

      介绍了 Google 的软件工程实践,包括其单一代码库(monorepo)、几乎全部开发在主干进行而非分支、代码审查、构建系统 Blaze、协议缓冲区等工具与流程,并讨论了频繁重…

      编程语言与软件工程2017 · 1,127 分 · 465 评 · 引用 15入门 · 约 45 分钟编辑精选
    2. Peter Naur:编程作为理论构建 (1985)

      Peter Naur – Programming as Theory Building (1985)

      Peter Naur 1985 年的经典论文《Programming as Theory Building》提出:编程的本质不是写代码或文档,而是在程序员头脑中构建对程序及其运行…

      编程语言与软件工程2016 · 629 分 · 74 评入门 · 约 45 分钟编辑精选
    3. SciPy 1.0:Python 科学计算的基础算法

      SciPy 1.0: fundamental algorithms for scientific computing in Python

      这篇发表于 Nature Methods 的论文介绍了 SciPy 1.0——Python 科学计算生态的基石库,涵盖其核心算法模块(优化、积分、插值、线性代数等)、软件架构与社…

      编程语言与软件工程2020 · 387 分 · 98 评入门 · 约 45 分钟编辑精选
    4. Lisp 的历史(1979)

      History of Lisp (1979)

      这是 Lisp 发明者 John McCarthy 于 1979 年为 HOPL(编程语言史)会议撰写的回顾文章,讲述 Lisp 的起源、设计动机与早期演进,文中也涉及 if 表…

      编程语言与软件工程2018 · 352 分 · 44 评入门 · 约 45 分钟编辑精选
    5. 使用 NumPy 进行数组编程

      Array Programming with NumPy

      这篇 Nature 文章介绍 NumPy 的数组编程模型及其在科学计算中的核心作用:以 ndarray 为中心,通过向量化操作让 Python 高效处理多维数组。

      编程语言与软件工程2020 · 318 分 · 134 评入门 · 约 40 分钟编辑精选

    打赏支持

    打赏二维码

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

    WeChat

    关注向阳乔木

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

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

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