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

    编程与软件工程andrewkelley.me

    Zig cc:GCC/Clang 的替代品

    Zig cc: A drop-in replacement for GCC/Clang

    2次上首页
    1年跨度
    1,132累计得分
    409条评论

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

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

    导读

    Zig 作者 Andrew Kelley 介绍 zig cc——把 Zig 工具链当作 GCC/Clang 的即插即用替代品来编译 C 代码。它最大的亮点是开箱即用的交叉编译:单个静态链接的可执行文件自带 libc,无需配置目标平台的 SDK 就能为不同操作系统和架构编译。

    为什么经久不衰:它把 C/C++ 生态里出了名痛苦的交叉编译简化成一条命令,这种简化工具链的思路至今仍影响着构建和分发软件的方式。

    关键词 Zig交叉编译C 编译器工具链

    HN 评论精选

    Zig 工具链静态链接、体积小且跨平台可用,交叉编译体验远胜 Clang。

    花点时间想想刚才发生了什么——我下载了 Zig 的 Windows 版本,在 Wine 里运行它,用它交叉编译出 Linux 二进制,然后原生运行。计算机真有趣!相比之下,Clang 的 Linux 压缩包有 380 MiB 且依赖特定发行版,而 Zig 的包完全静态链接,在所有 Linux 发行版上都能正常工作。Zig 不附带预编译库,而是附带源码,按需即时构建。

    airstrike查看英文原文

    > Take a moment to appreciate what just happened here - I downloaded a Windows build of Zig, ran it in Wine, using it to cross compile for Linux, and then ran the binary natively. Computers are fun! > Compare this to downloading Clang, which has 380 MiB Linux-distribution-specific tarballs. Zig's Linux tarballs are fully statically linked, and therefore work correctly on all Linux distributions. The size difference here comes because the Clang tarball ships with more utilities than a C compiler, as well as pre-compiled static libraries for both LLVM and Clang. Zig does not ship with any pre-compiled libraries; instead it ships with source code, and builds what it needs on-the-fly. Hot damn! You had me at Hello, World!

    Zig 简化工具链的做法直击 Linux 软件分发层层抽象的痛点。

    很高兴有人努力持续简化系统编程而不是把它弄得更复杂。Linux 各层的 libc、共享库、systemd、dbus 等复杂性造成不必要的痛苦;如果编译工具链、libc 和共享库能简化,也许就不会有这么多沙箱和虚拟机方案(JVM、Docker、WebAssembly 等)。期待有一天在 Linux 上安装程序就像下载一个静态可执行文件直接运行那样简单。

    Shoop查看英文原文

    Really incredible work and it's been very fun to follow along. The streams where Andrew did the last part of this work can be seen here: [1], [2]. I am really happy that someone is making the effort to steadily simplify systems programming rather than make it more complicated. Linux goes to such incredible lengths to be bug-for-bug backwards compatible, but then the complexities of all of our layers of libcs, shared libraries, libsystemd, dbus, etc cause unnecessary pain and breakage at every level. Furthermore, cross-compiling C code across different architectures on Linux is far harder than it needs to be. I have a feeling that there wouldn't be as much interest in the steady stream of sandboxes and virtual machines (JVM, NaCl, PNaCl, flatpak, docker, WebAssembly) if we could just simplify the layers and layers of cruft and abstractions in compiler toolchains, libc implementations, and shared libraries. Practically every laptop and server processor use the exact same amd64 architecture, but we have squandered this opportunity by adding leaky abstractions at so many levels. I can't wait until installing a program on linux is as simple as downloading a static executable and just running it and I hope zig brings this future. [1] https://www.youtube.com/watch?v=2u2lEJv7Ukw [2] https://www.youtube.com/watch?v=5S2YArCx6vU

    Zig 自动处理 libc 选择,而传统交叉编译流程对用户极不友好。

    我很喜欢他们为交叉编译做的事。自动选择合适的 libc/crt 实现太省心了。相比之下,C/C++/Rust 的交叉编译简直对用户充满敌意:你得自己找到正确的 cross-sdk,但没人告诉你是哪个、怎么获取、放哪里;猜错了就会报出难懂的错误,甚至直到目标机器上运行时才失败。

    pornel查看英文原文

    I really like what they've done for cross-compilation. Automatically selecting appropriate libc/crt implementation is such a relief. Compared to Zig, cross-compilation in C/C++/Rust seems downright user-hostile: you have to obtain the correct cross-sdk, but it won't tell you which one, or how to get it (some combos don't even exist), or even where to put it. If you don't guess everything correctly, it will fail with inscrutable errors, or worse, only fail at runtime on the target machine.

    Zig 让不熟悉 C 构建系统的人也能轻松使用 C 库。

    我学 Zig 几个月了,最喜欢的是可以直接用 Zig 调用任何想要的 C 库,还享受 Zig 提供的便利。SDL2、cairo、GTK4 都没问题——把 C 源文件丢进项目目录,和其他 .zig 文件一起用 Zig 编译即可。作为一个一直回避 C 的人,这条路让我不用学 autotools、make 等就打开了 C 世界的大门。

    _benj查看英文原文

    I’ve been learning Zig for a few months now and what I’m in love with is the ability to just use Zig to interact with whatever C libraries I want, but doing so with the conveniences that Zig offers. I want to use SDL2 and cairo and pango? No problem! GTK4, easy peasy! There’s a C lib that comes as a single .c file that makes it easier to interact with SDL? Drop it on the project folder and compile it with Zig along all the other .zig files! As somebody that has been avoiding C as much as I can, I’m loving this approach since it has open the doors to the world of C for me without having to learn autotools, make, valgrind, et al

    历次讨论

    同类还值得读

    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

    关注向阳乔木

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

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

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