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

    编程语言与软件工程2020clojure.org

    Clojure 的历史

    A History of Clojure

    进阶 · 约 120 分钟读完前置知识:Lisp 基础、函数式编程、JVM/Java 生态

    读论文 HN 讨论
    627HN 得分
    374条评论

    导读

    这篇论文是 Clojure 作者 Rich Hickey 撰写的历史回顾,详细讲述了 Clojure 语言从构思、开发到发布的历程,以及它如何结合 Lisp 与函数式编程理念,解决现实世界中的并发和复杂度问题。文中也包含作者对 Java/C++ 等主流语言局限性的反思,以及 Clojure 设计背后的动机与取舍。

    HN 关注点:是因为这是 Clojure 作者亲述的语言设计初衷与演进史,能帮助理解这门‘实用派 Lisp’为何如此设计,以及它为何能在追求实用的开发者中获得口碑。

    关键词 ClojureLispRich HickeyProgramming Language Design

    HN 评论精选

    这几条评论里:质疑 1 补充 1 亲历 2

    亲历Clojure 极大提升了作者解决现实问题的效率,尤其是数据处理和 Web 开发场景。

    在接触 Clojure 之前,我觉得自己并不真正知道怎么把事情做好。在我最有经验的领域(Web 应用)里,编程大部分可以概括为定义数据、数据转换、把数据塞进 API。一旦上手,Clojure 让数据结构从 A 变到 B 变得极其简单,这极大地扩展了我能解决的问题。Rich 说‘我用 C++/Java/C# 写了大半辈子,感觉自己一直做错了’,我觉得大多数人也处于这种状态,只是还没意识到。我见过很多语言的库为了那些在 Clojure 里微不足道的问题,堆了海量的提交和几百个 issue。我自己以前也是不断找框架,找不到就硬掰。我不是语言极客,也不为乐趣写代码。我只是想尽量少花时间在电脑前,并安心知道我的 Web 应用不会垮。Clojure 太适合我了,我不认为换其他语言我能做到这些。

    Naomarik查看英文原文

    Prior to Clojure I feel that I didn't really know how to do things well. In the context of the domain I have the most experience with, web applications, I'd summarize the bulk of programming as defining data, data transformations and shoving data through APIs. Once you get the hang of it, Clojure makes it trivial to transform datastructures from A to B. This has enormously expanded the kinds of problems I can solve. When Rich says "It was impossible to avoid the sinking feeling that I had been “doing it wrong” by using C++/Java/C# my whole career." I feel somehow that this is the case for the majority of people but they don't realize it yet because their experience is the most popular trendy language or framework. I've seen many examples of libraries in different languages having enormous amounts of commits and hundreds issues for problems that are trivial to solve in Clojure. I was in the same boat, constantly grabbing for frameworks and if one wasn't available that made my task simple, would struggle trying to bend the frameworks or language I was using to come up with a solution. I'm not a language geek and I don't write code outside my work for fun. I want to spend the least amount of time possible in front of the computer and sleep knowing my web applications won't topple over. Clojure has fit me so well that I don't think I would have accomplished what I have in other languages.

    补充Clojure 成功结合了‘实用’与‘高阶抽象’,说明概念价值需要生态和传播才能落地。

    Clojure 最吸引我的地方是:它一边大声宣称自己是‘实用’语言,一边又是 Lisp 并且以函数式为主。通常这两点更与语言爱好者相关,而不是‘务实’的开发。最后它显然成功了,只是这种并置很有意思。我觉得这反映了更高阶的编程概念确实有实用价值,也反映了包装/营销/生态对传播这种价值并让它被大众接受有多重要。(注:我知道它并非 100% 纯函数式,但它的所有宣传都强调这一哲学。)

    _bxg1查看英文原文

    The fascinating thing to me about Clojure is that it's so vocally a "practical" language, and yet is a) a Lisp, and b) purely functional[1]. Usually those two things are associated with language enthusiasts, and not """pragmatic""" development. In the end it works, clearly, it's just very interesting to see that juxtaposition. I think it says something interesting about the practical value of higher-brow programming concepts, but also about how important the packaging/marketing/ecosystem is to conveying that value and making it accessible to the masses. [1] I know it's technically not 100% functional, but all of its messaging highlights that philosophy as a focal point and advantage.

    质疑对 Rich Hickey 的坚持表示敬佩,同时保留对动态类型的不同意见。

    很棒的故事,读得很开心。Rich Hickey 是一位伟大的演讲者(如果你没看过他在 YouTube 上的演讲,一定要看,非常值得),也是一位伟大的程序员,所以即使我固执地不同意他关于动态类型的观点(也许有一天我会深入 Clojure,但目前我正在往另一个方向深入——Rust!),我依然尊重他。知道他当年在毫无收入的几年里坚持开发 Clojure 之后,我更敬佩他了。这是一项出于热情的事业,而且他能把这份热情变成一家足以养活自己和几位早期采用者的公司,我由衷钦佩。

    brabel查看英文原文

    Great story, really enjoyed reading. Rick Hickey is a great speaker (if you haven't watched his talks on youtube, do it! They are totally worth it), and certainly a great programmer, which is why I respect his opinions on dynamic typing, even if I stubbornly disagree (one day I might still dive into Clojure, but I am diving into the arguably opposite end of languages right now: Rust!!). I have even more respect for him now knowing that he actually worked on Clojure for years without any income!! This is a work of passion, and I admire him for that, and for being able to turn that passion into a company big enough to pay his bills and that of several of Clojure's early adopters.

    亲历亲历者回忆早期 Clojure 社区,并提到函数式思维带来的长期收益。

    我记得参加第一届 Clojure/conj——当时我刚学了一点 Common Lisp,不知怎么看到了会议通知。这对我很幸运:会后我就能在公司的 JVM 平台上用 Clojure 做函数式编程,后来还用它做了内部 REST API 项目。那个项目的代码运行了好几年,没有修改也没有出错。另外我发现,用 Clojure 进行函数式思考比面向对象设计方法对我来说自然得多。虽然过去几年我渐渐不太用 Clojure 了,但我觉得在其他语言里我的问题解决思维变好了,正是因为那段用 Clojure 做函数式思考的经历。

    tom_b查看英文原文

    I remember being at the first Clojure/conj - I had just spent some time learning a bit of Common Lisp and stumbled onto the conference announcement somehow. This was very fortunate for me - after attending the conj, I was able to use Clojure at work to sneak in some FP on the readily-available JVM platforms. I later used it to do some internal REST-API work. The code for that project has run for years without modification or error. For whatever reason, I also discovered that thinking functionally with Clojure worked so much better and naturally for me than object-oriented design methods. While I have drifted away from Clojure over the last couple of years, I find that my problem solving mind is much better in other languages because of the time spent thinking functionally with Clojure.

    相关资源

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

    关注向阳乔木

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

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

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