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

    编程语言与软件工程2015spw15.langsec.org

    Nom:一个面向字节、流式、零拷贝的 Rust 解析器组合子库

    Nom, a byte oriented, streaming, zero copy, parser combinators library in Rust

    进阶 · 约 45 分钟读完前置知识:Rust 基础、解析器组合子、二进制格式与字节流解析

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

    导读

    这篇论文介绍 Nom——一个用 Rust 编写的解析器组合子(parser combinators)库,面向字节流:解析器直接作用于输入的字节切片,采用流式、零拷贝的方式组合出二进制格式与协议的解析器。作者在会上讨论了设计取舍,并用基准测试与其它解析器做了性能对比(作者本人也提醒基准数据需谨慎看待)。

    HN 关注点:Rust 中零拷贝、流式解析器组合子的设计,以及它相对 cereal、yacc 等方案在性能与开发效率上的表现。

    关键词 Rustparser combinatorszero-copystreaming parsing

    后来怎么样

    Nom 成为 Rust 生态里最广泛使用的解析器组合子库之一,被大量二进制格式、协议与语言解析项目直接采用,并催生了一批后续的解析组合子库(包括其维护者另起的 winnow)。

    HN 评论精选

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

    我是 Nom 的作者。这篇论文写于 2015 年 1 月,之后有些变化:基准测试做了优化,也有人贡献了一个超过 nom 的 cereal 解析器(这没关系,我只是想搞清楚 nom 处在什么位置);错误管理更完善了,错误类型还带来很强的调试能力(彩色 hexdump 测试);现在也很容易嵌入 C,我打算做几个 C 库的 API 兼容版本;示例解析器也更多了。附上 IEEE Langsec workshop 的幻灯片,Langsec 是安全领域最值得关注的方向之一,今年的想法非常精彩(我尤其喜欢堆利用代数那篇),强烈推荐等视频出来后看看。用 nom 写解析器既简单又有趣,欢迎试用。

    geal查看英文原文

    Hi all, Nom's author here. I wrote this paper in January 2015, so some things changed in the meantime: - the benchmarks have been optimized a bit, and someone contributed a cereal parser that beats nom ( https://github.com/Geal/nom_benchmarks ). It's alright, I just wanted to estimate where it stands - there is better error management: https://github.com/Geal/nom/wiki/Error-management - the error management types give powerful debugging features: http://dev.unhandledexpression.com/slides/langsec-2015/img/colortest.png (test code: https://github.com/Geal/nom_colored_hexdump ) - It is now easy to embed in C ( https://github.com/Geal/nom_in_c ). I plan to make API compatible versions of some C libs - there are more example parsers now: https://github.com/Geal/nom/issues/14 feel free to pick one up! Here are the slides for the conference at the IEEE Langsec workshop: http://dev.unhandledexpression.com/slides/langsec-2015/ Langsec is one of the most interesting approaches to follow in security, and the ideas presented this year were amazing (I'm especially fond of the heap exploitation algebra). I highly recommend watching the videos once they will be available. Writing parsers with nom is easy and fun, please give it a try ;) https://github.com/Geal/nom

    把解析做对、做高效是一个反复出现需求,这个领域多做工作总是好事。论文挺有意思,不过我没听说过这些解析器,我常听到的是 yacc、GOLD 解析系统等。希望能和最常见的方案在典型用例上做生产率、安全性和性能的对比。至于下一个项目,INRIA 的 Leroy 团队在经验证的 LR 解析器上做了出色工作,我不确定现在是否有人在它基础上继续。把它实现进 Rust 或与 Rust 集成,可能成就一个了不起的解析系统——只要对应关系被证明,它就会是系统语言里最安全的。

    nickpsecurity查看英文原文

    Getting parsing done correctly and efficiently is a requirement that pops up over and over. More work in the field is always good. Interesting paper, although I haven't heard of the parsers. I usually hear about yacc, GOLD parsing system, and so on. Like to see comparisons with most common ones for probable use cases in terms of productivity, safety, and performance. Far as next project, Leroy's people at INRIA did excellent work in verified, LR parsers [1]. I'm not sure that anyone is building on it at the moment. Implementing that in or integrating with Rust might make for one heck of a parsing system. So long as correspondence was proven, it would be the safest one in a systems language. [1] http://gallium.inria.fr/~fpottier/publis/jourdan-leroy-pottier-validating-parsers.pdf

    正如作者所说“基准测试必须带着怀疑看待”,但 Nom 实现的是“最朴素的递归解析”,即便是未优化的基准结果看起来也很 impressive。

    alfiedotwtf查看英文原文

    As OP says "benchmarks, they have to be considered with skepticism", but with Nom implementing the "most naive recursive parsing", even the UN-optimised benchmarks look impressive

    如果 Rust 加入高阶类型(higher-kinded types),我就要试试它。能写出近乎 Haskell 风格的代码、又没有惰性求值和垃圾回收,这非常有意思。

    eli_gottlieb查看英文原文

    Ok, if Rust adds higher-kinded types, I'm giving it a try. This is very interesting, being able to write almost Haskell-style code without laziness or garbage-collection.

    相关资源

    从这篇论文所有 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

    关注向阳乔木

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

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

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