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

    工具与资源github.com

    Mu:一台人类尺度的计算机

    Mu: A Human-Scale Computer

    3次上首页
    5年跨度
    333累计得分
    131条评论

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

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

    导读

    Mu 是 Kartik Agaram(akkartik)发起的一个实验性项目:从最底层开始,自建一整套「人可理解」的计算机软件栈——包括接近机器码的指令集、编译器、以及运行环境,目标是让一个人能从头到尾读懂全部代码。它用汇编/底层语言构建以避免庞大的运行时,并大量采用文学编程和以「场景」形式记录运行过程作为测试。

    为什么经久不衰:它挑战了现代软件栈层层抽象、无人能完整理解的现状,这种「一个人能全部读懂」的理想让它在五年间反复引发讨论,今天读来仍有启发。

    关键词 可理解的软件栈编程语言文学编程开源项目

    HN 评论精选

    把它与 uxn/varvara 等「小而可理解」的计算项目并列推荐。

    另可参考 uxn、uxntal 和 varvara,我觉得它们的设计目标很相似。我喜欢这场运动,我怀念个人计算的时代。

    Stampo00查看英文原文

    See also uxn, uxntal, and varvara, which I feel have similar design goals. I love this movement. I miss personal computing. https://wiki.xxiivv.com/site/uxn.html https://wiki.xxiivv.com/site/uxntal.html https://wiki.xxiivv.com/site/varvara.html

    详尽点评:赞赏测试即记录、单库分层、文学编程等设计,但建议用常规术语替代自造名词。

    我很喜欢的地方:把运行过程录下来当测试;所有抽象层共用一套库;用汇编构建以避开庞大的运行时;用文学编程管理汇编代码;scenario、screen-should-contain、assume-keyboard 很棒;spaces 作为闭包类概念的原始操作很好;元程序的 attributes 也很棒;用 [,] 当标签是天才之举。建议:如果「recipes」其实就是函数,请沿用大家都熟悉的叫法,reagents、reply、ingredients、products 同理;另外 number:list 之类的多种类型若要走下去,映射表应保持一致,别写成 lisp 风格。总之我很喜欢这个方向。

    vinodkd查看英文原文

    Things I really liked: + recording runs as tests + one library for all layers of abstraction + building in assembler to avoid the big runtime. + using literate programming techniques to manage coding in assembly. + scenario, "screen-should-contain" and "assume-keyboard". awesome. + spaces: nice primitive of the closure and similar concepts + attributes for meta programs. again, awesome. + labels and using [,] as labels. genius. Suggestions: * If there's a valid reason to call them recipes, go ahead. If they're actully just functions, please stick with what everyone knows and gets. Same thing with "reagents","reply", "ingredients" and "products". Update: I did read your blog post about this. still think the regular names are better in the long run. * I dont know where you're going to with multiple types of the "number:list" kind, but if so, the map must look the same, not lispy. In all, I really like where you're going with this. Kudos! I find a lot of resonance of ideas I've had for a long time now.

    实际动手试用后指出的具体限制:取地址、区间构造与测试断言都不够灵活。

    我用 Mu 的数组类型写了一个线性查找的实现。笔记:可以用 create-array 建数组,但找不到办法取它的地址并传递;无法取得数组非法位置的地址,因此无法用 begin/end 地址对构造有界区间(STL 风格);解释器强烈倾向于用引用计数的 address:shared 而非普通地址,即使并不需要共享内存;也没搞清如何写一个按具名地址而非序号地址检查的测试场景(memory-should-contain)。

    enqk查看英文原文

    So I wrote an implementation of linear search in Mu using its array type. https://gist.github.com/uucidl/df81b6ab0fe65713f5ba My notes: - creating an array w/ create-array is possible, however I could not find how to take its address and pass it around - one cannot get the address of an invalid position of the array, so one cannot construct bounded ranges (STL style) using a begin/end pair of addresses - the interpreter strongly suggests to use refcounted pointers (address:shared) instead of addresses even when one does not borrow the memory - could not figure out how to write a test scenario that uses checks named memory addresses rather than ordinal memory addresses (memory-should-contain instruction)

    作者本人给出上手教程链接。

    如果你想玩玩 Mu,这里有一个引导式教程,我尽量让过程不那么痛苦:https://github.com/akkartik/mu/blob/main/tutorial/index.md

    akkartik查看英文原文

    If you're interested in playing with Mu, there's a guided tour where I try to make the process as painless as possible: https://github.com/akkartik/mu/blob/main/tutorial/index.md

    历次讨论

    同类还值得读

    1. 直接在浏览器中启动 Linux 内核

      Boot a linux kernel right inside your browser.

      Fabrice Bellard 的 JSLinux 页面,用 JavaScript 在浏览器里启动一个 Linux 内核,并提供一个可交互的终端环境。

      工具与资源上首页 5 次 · 2011–2025bellard.org
    2. Hacker News 未公开功能与行为清单(2018)

      A List of Hacker News's Undocumented Features and Behaviors (2018)

      数据科学家 Max Woolf 整理的 Hacker News 未公开功能与行为清单,涵盖投票机制、排名算法、账号惩罚等社区运作细节。

      工具与资源上首页 5 次 · 2019–2025github.com
    3. MapSCII:在终端中用盲文和 ASCII 渲染地图

      MapSCII – Braille and ASCII map renderer for the console

      MapSCII 是一个在命令行终端里渲染地图的开源工具,用盲文字符和 ASCII 字符把地理数据画成可交互浏览的字符地图。

      工具与资源上首页 5 次 · 2017–2025github.com
    4. 顶尖大学的免费在线课程

      Free Online Courses from Top Universities

      Open Culture 整理的一份免费在线课程合集,汇集了全球顶尖大学(如 MIT、斯坦福、耶鲁等)向公众开放的网络课程资源,涵盖音频、视频等多种形式。

      工具与资源上首页 5 次 · 2010–2022openculture.com
    5. 淘气字符串:容易引发用户输入问题的字符串清单

      Naughty Strings: A list of strings likely to cause issues as user-input data

      一个 GitHub 仓库,收录了大量容易让程序出问题的用户输入字符串,如特殊字符、emoji、SQL 注入片段、系统命令等,供开发者用于测试输入处理逻辑。

      工具与资源上首页 4 次 · 2015–2020github.com

    打赏支持

    打赏二维码

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

    WeChat

    关注向阳乔木

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

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

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