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

    编程与软件工程wincent.com

    Git 之争:Bram Cohen 对 Linus Torvalds

    Git: Bram Cohen vs Linus Torvalds

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

    2009 — 2016,它一次次回到首页

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

    导读

    这篇文章回顾早期 Git 诞生时 Bram Cohen 与 Linus Torvalds 围绕版本控制和合并设计的交锋,尤其是“是否需要重命名跟踪等复杂元数据”这类问题。页面把两人的不同思路放在一起,帮助理解 Git 为何选择只跟踪树的内容状态。

    为什么经久不衰:它把 Git 的简单设计哲学放回早期争论中,今天读仍能明白 Git 为何能迅速胜出并改变版本控制实践。

    关键词 Git版本控制Linus Torvalds合并算法

    HN 评论精选

    Linus 的优势来自近二十年真实合并实战经验,而非正式研究合并算法。

    我认为 Bram 错在以为自己对合并算法的研究和实验,能让他比看似新手的 Linus 更有洞察力。他忽略的是,Linus 近二十年大部分时间都在用各种不够好的工具做合并,无疑经常被迫手工编辑成千上万个补丁才能成功合并。当 Linus 开始那个两周项目时,他带来了在庞大复杂代码库、大量贡献者环境下做真实合并的极其丰富的经验。而且他是个很有洞察力的人。所以,虽然他没有花那么多时间正式研究深奥细节,Linus 对合并密集的开发流程产生的日常问题以及如何解决它们有很好的洞察。

    swillden查看英文原文

    I think an Bram errs when he thinks that his experience in studying and experimenting with merge algorithms gives him deeper insight than the apparent newcomer to the field, Linus. What he's missing is that Linus has spent a large part of nearly two decades doing merges using a variety of inadequate tools which no doubt frequently forced him to hand-edit many thousands of patches in order to get successful merges. When Linus sat down to start his two-week project, he brought with him an incredibly rich base of experience with real-world merging of changes in a significant, complex codebase with large numbers of contributors. Also, he's an insightful guy. So while he may not have spent as much time in formal study of the esoteric intricacies, Linus had great insight into the day-to-day issues that merge-heavy development processes create, and how to solve them.

    Linus 强在识别并解决真正影响开发者的问题,Git 因此迅速胜出。

    我认为 Linus 的长处——这篇文章指出的正是其中一例——是发现正确的问题,而不一定是解决问题时有多么天才(不过他也很擅长解决问题)。我怀疑 Bram 和 Linus 一样有才华,但在他追逐深奥问题的优雅解法时,Linus 发现并解决了对开发者影响最大的问题,Codeville 错过了船。我认为版本控制战争未来几年基本结束了,Git 以巨大优势获胜。这本身就说明了 Linus 的天才:他造的东西有几十个竞争者,有些还有 Canonical 的 bzr 这种大靠山,但几个月内几乎所有人都清楚 Git 占据了下一代版本控制的心智份额。他的方案很丑,只是一些 C 和 Perl 脚本短时间拼起来,但它在正确的时间解决了正确的问题。

    SwellJoe查看英文原文

    Linus' strength, I think, and this article is pointing out one particular instance of that strength, is in spotting the right problem...not in any particular brilliance in solving the problem (though he's pretty good at solving the problems, as well). I suspect Bram is as talented a developer as Linus, but in chasing down elegant solutions to esoteric problems while Linus spotted and solved the problems that most effect developers, Codeville has missed the boat. I suspect the revision control wars are pretty much over for the next few years, and git won by a large margin. That, in and of itself, is an interesting indication of Linus' genius...he built something that had dozens of competitors, some with major backing like Canonical's bzr, and within a couple of months it was apparent to just about everyone that git had the mindshare for next generation revision control. His solution was ugly, just some C and Perl scripts thrown together in a short period of time, but it solved the right problems at the right time.

    Git 只跟踪树的内容状态,重命名等由内容差异隐含推导,这种简单模型让人真正理解并接受 Git。

    这篇文章带回回忆。2007 年我刚看过 Linus 在 Google 的 Git 演讲,当时觉得 Git 可能只是一时风潮。但后来这篇文章让 Git 终于在我脑中豁然开朗。关键引文是:不需要花哨的元数据、重命名跟踪等等。你唯一需要存的是每次变更前后树的状态。哪些文件被重命名?哪些被复制?哪些被删除?哪些行被添加、删除或修改?哪些文本块从一个文件复制到另一个?你不该关心这些问题,也不该为回答它们保留特殊跟踪数据:对树的所有变更都隐含在树两个状态之间的 delta 中;你只需跟踪内容是什么。用了 Git 七年,我无法想象以前怎么用不基于整棵树的版本控制。

    solutionyogi查看英文原文

    This article brings back memories. Back in 2007, I had just watched Linus' presentation on Git at Google (http://www.youtube.com/watch?v=4XpnKHJAok8) where he called all non distributed version control systems as useless. I could not make any sense of the DVCS from his talk. I tried to play with Git and it was extremely frustrating due to the poor CLI. I thought may be Git is just a fad. But then more and more people kept talking about how awesome it is. This was one of the article where Git finally clicked for me. The key quote: There is no need for fancy metadata, rename tracking and so forth. The only thing you need to store is the state of the tree before and after each change. What files were renamed? Which ones were copied? Which ones were deleted? What lines were added? Which ones were removed? Which lines had changes made inside them? Which slabs of text were copied from one file to another? You shouldn't have to care about any of these questions and you certainly shouldn't have to keep special tracking data in order to help you answer them: all the changes to the tree (additions, deletes, renames, edits etc) are implicitly encoded in the delta between the two states of the tree; you just track what is the content. It's been 7 years since I have been using Git and I can't imagine how I ever worked with version control which didn't work on the entire tree.

    不能等学术定论才动手,实践和试验本身推动创新。

    链接文章里有一句很妙的话:“也许有一天有人会就这个主题写一篇博士论文,然后我们再把它加进去,但在那之前我们坚持基本功能。”我想,如果每个人都等某个主题的博士论文发表,而不是试验自己的想法,那就不会有太多创新了。

    adambyrtek查看英文原文

    There is a lovely quote in the linked post: "Maybe someday somebody will do a PhD thesis on that topic and we'll add it, but until then we're sticking with the basic functionality." I guess not much innovation would happen if everybody waited for a PhD thesis to be published on a given subject instead of experimenting with their own ideas.

    历次讨论

    同类还值得读

    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

    关注向阳乔木

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

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

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