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 生成,可能有误,请以原文为准。

    编程语言与软件工程2021blog.frantovo.cz

    对精简软件的呼吁 (1995)

    A Plea for Lean Software (1995)

    入门 · 约 30 分钟读完前置知识:软件工程基础、操作系统基础

    读论文 HN 讨论
    146HN 得分
    137条评论

    导读

    这是 Niklaus Wirth(Pascal 之父)1995 年的经典演讲《对精简软件的呼吁》。他批评软件日益臃肿膨胀的趋势,认为单体式设计把所有可想到的功能都塞进系统是复杂度的重要来源,呼吁开发者追求精简、高效的软件。

    HN 关注点:HN 读者长期关注软件臃肿与性能问题,这篇经典文章引发了关于精简设计 vs. 现代功能需求的讨论。

    关键词 软件精简Niklaus Wirth软件复杂度模块化

    HN 评论精选

    这几条评论里:质疑 1 补充 3

    补充模块化虽增加开销,但能显著提升稳定性和开发效率

    文中提到软件复杂度的另一个重要原因在于单体式设计,即所有可想到的功能都是系统设计的一部分。这其实是在呼吁模块化。我信奉模块化,但它并非万能药:模块化带来不少负担,比如代码重复、生命周期管理以及更高的资源占用(有点讽刺,因为这篇文章主要讲的是减少资源占用)。但我依然信奉它——以我的经验,模块化能极大提升系统稳定性、质量、敏捷性和开发速度。

    ChrisMarshallNY查看英文原文

    > Another important reason for software complexity lies in monolithic design, wherein all conceivable features are part of the system's design. This is really a call for modularity. I'm a believer in modularity, but it is not a cure-all. Modularity brings a lot of baggage with it, like duplication of code and lifecycle management, along with increased resource usage (ironic, as the article is mainly about reducing resource usage). But I am still a believer in it. In my experience, it makes for a massive increase in system stability, quality, agility, and speed of development.

    质疑对普通用户而言,界面和体验并非“不必要”,优化讨论常沦为炫技

    作者把“任意重叠的窗口”和“花哨的图标”称为“可爱但不必要”,这一点很能说明问题。去街上随便找个人问问这些东西是否“可爱但不必要”。有时我觉得软件工程师忘了我们生活在什么样的世界里:虚拟世界中这些东西显然不需要,浪费算力有辱“工匠精神”;但现实世界中,大多数应用是为有需求和偏好的、不完美的人类而做的,这些需求并非源于逻辑推理,而是源于情感和体验。这并不能为糟糕的工程开脱,但尤其就作者举的文本编辑器和操作系统而言,这份批评严重失当。ed 和 VS Code 的核心功能一样吗?当然,都是编辑文本。VS Code 相比 ed 多用的资源是浪费吗?对这里某些人也许是,但我敢打赌对大多数人答案是否定的。归根结底,很多关于优化的讨论更多是为了炫耀、证明自己是“真正的工程师”,而非真正关心性能。

    fisensee查看英文原文

    I've found the part where the author talks about "arbitrarily overlapping windows" and "fancy icons" as "cute but not essential" pretty telling. Find me someone on the street and ask them if these things are "cute but not essential". Sometimes I feel like software engineers forget what world we live in. In the virtual world all these things are obviously not needed and wasting precious computing power on them is a disgrace to the "craftsmanship". In the real world most applications are made for flawed humans with needs and preferences which stem not from logic and reasoning but from emotions and experience. This doesn't excuse shoddy engineering in any way (everybody has some horror story of somebody not understanding runtime complexity or something, so there certainly is a lot of it). But especially with the examples the author brings up like text editors and operating systems I find these critic/plea severly lacking. Are the core features of ed and visual studio code the same? Absolutely, you edit text. Are the extra ressources used for visual studio code compared to ed a waste? For some people here probably, but I would bet quite a lot that for most the answer would be no. In the end I often find that discussions about optimatization are often more for people to show off and prove that they are a "real engineer" than any real concern about performance.

    补充提醒读者作者是 Pascal 之父 Niklaus Wirth

    如果这很显然请见谅——这篇文章的作者是 Niklaus Wirth,Pascal 及其他重要语言的作者。

    ape4查看英文原文

    Sorry if this is obvious - the article is by Niklaus Wirth - author of Pascal and other important languages.

    补充提供了整理后的易读版本文档

    这篇论文太经典了,我觉得它值得一个更易读的版本。所以我把文本复制进 Word 并稍作清理,可能对视觉障碍者等更友好。链接在此(旧版 .DOC 格式,任何软件都应能打开),欢迎随意转发。

    lproven查看英文原文

    This is such a classic paper that I felt it deserved a more readable copy. So I copied the text into Word and cleaned it up a bit. May be easier for those with visual impairments etc. Here: https://www.dropbox.com/s/kmpo4c2q9klqx1e/A%20Plea%20for%20Lean%20Software.doc?dl=0 (MS Word format, old .DOC version. Should be readable in anything.) Feel free to reshare.

    相关资源

    从这篇论文所有 HN 讨论帖的全部评论里整理出来的链接。

    代码

    历次讨论

    同领域还值得读

    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

    关注向阳乔木

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

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

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