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

    编程与软件工程en.wikipedia.org

    非英语编程语言列表

    Non-English-based programming languages

    3次上首页
    6年跨度
    446累计得分
    348条评论

    2013 — 2019,它一次次回到首页

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

    导读

    这是维基百科上关于“非英语编程语言”的条目,收录了以中文、俄语、阿拉伯语、芬兰语等各种自然语言为基础设计的编程语言,以及 Perl 等允许改写语法以支持其他语言的例子。它引发了一个经典讨论:编程语言的关键词为什么几乎都是英语,用母语写代码会是什么体验。

    为什么经久不衰:编程语言与自然语言、母语思维之间的关系是个历久弥新的话题,这个条目汇集了大量真实存在的非英语语言案例,每次重登首页都引发新讨论。

    关键词 编程语言设计自然语言本地化维基百科

    HN 评论精选

    母语在脑中是“硬件级”解码的,英语母语者对编程关键词的体验与非母语者根本不同

    用英语编程多年后,再看到母语编程语言会觉得它看起来和听起来都很滑稽。我认为母语在大脑中是底层固化的,直接唤起含义和联想,而第二语言至少要经过一层有意识的处理。同样,我听到母语的广告词时无法阻止大脑疯狂搜索含义,但用英语读完全无意义的内容却毫无负担。由此我想到,母语是英语的人对编程语言的体验可能相当不同——关键词会不断唤起根深蒂固的联想,又被编程语境不断重塑。

    aasasd查看英文原文

    Seeing a programming language in your native language after working with English ones, you discover that it looks and sounds pretty ridiculous. My belief is that the native language is ingrained on a low level in the brain, so it's decoded ‘in the hardware’ and directly invokes meanings and associations, whereas a second language goes through at least some level of conscious processing. The very same way, I'm physically unable to shut off the brain's frantic search for meaning when I hear some inane song lyrics or advertisement in my native language—which causes suffering whenever I get near television. Meanwhile, I'm completely comfortable reading or hearing total drivel in English until I consciously try to interpret it. Similarly, I can't skim in English as fast as I do in my language. This all brings me to the thought that native-English speakers probably have a rather different experience with programming languages, since the keywords must constantly invoke deeply ingrained associations but that's in turn modified by regularly seeing and thinking of them in the programming context. КОНЕЦ ЕСЛИ

    非英语语言往往表达冗长、且缺乏编程术语,做母语编程语言有实际文化障碍

    我学生时代想过用泰语做编程语言。主要问题之一是文化层面的:泰语习惯用多个词组合表达复杂含义,比如出租车司机是“人-驾驶-出租车”,理发师是“从业者-剪-头发”,所以语言会非常冗长。而且编程源自西方,很多概念泰语里根本没有对应词——我编程多年,至今不知道“软件”“类”“继承”“封装”用泰语怎么说。

    tanin查看英文原文

    I used to think about this when I was a student. I could totally make a programming language in Thai. Surprisingly, one of the main issues that I thought of was a cultural one. Thais culturally don't use a single word to encapsulate complex meaning. We use a combination of words to capture that kind of meaning. Just to give an example: a taxi driver is 'human-drives-taxi' in Thai. A barber is 'tradeperson-cuts-hair'. So, the programming language would be really verbose. Also, since programming originates from the western world, we never really have Thai words for many concepts in programming. I've been programming for years, and I have no idea how to say 'software', 'hardware', 'class', 'inheritance', 'encapsulation', 'abstraction', 'refactoring' in Thai.

    翻译关键词不等于真正的非英语语言;不同自然语言的语义特性可能塑造出截然不同的编程范式

    创造非英语编程语言和翻译一个英语编程语言是完全不同的。不同语言表达时间、状态的方式各异。以葡萄牙语为例,我们用两个动词区分“太阳是热的”(恒常状态)和“今天很热”(暂时状态)。如果编程语言从一开始就基于这样的语言设计,区分可变/不可变状态会自然得多。甚至可以用英语创造非英语思维的编程语言——Ruby 就是个好例子。

    lucasrp查看英文原文

    Create a non-English based programming language is very different from translating a english programming language. Different languages have different ways to express time, state, etc. If one translates a english programming language, it will be a translated English based programming language (not a Non-English base...) I`m a native portuguese speaker, for example. In portuguese, we "break" the "to be" verb in two forms: The "ser" verb to denominate an immutable state like "The sun is hot" and a "estar" verb to denominate a transitory state "It is hot today". My guess is that, if programming languages were made since the beginning with a language like that, the coding world would be a more pleasant place today. Things like differenciate mutable/immutable state would be much more natural. So, it`s possible even to create a Non-English based programming language IN English. Russian, japanese, etc. languages have their peculiarities, that could shape coding very different than what it is today. Ruby it`s a nice example of it. Just google about the subject, and found this material (http://blog.new-bamboo.co.uk/2010/12/17/learning-japanese-th...) Any rubyist-japanese-speaker who would like to give some thoughts on the subject?

    从字符集、术语长度到语法形态变化,非英语语言做编程语言会带来大量实际麻烦

    我觉得这是个糟糕的主意。以西里尔字母语言为例:字母表有33个以上字母,键盘上没空间留给程序员常用的符号;数学变量传统上用拉丁/希腊字母,难道要不停切换输入法?单词也长得多,英语有缩写习惯(variable→var),俄语没有;而且俄语形态变化复杂,改个单复数或性别,一串词都要跟着变。

    lcedp查看英文原文

    I think it's an awful idea. Let's take Cyrillic languages, Ukrainian/Russian as an example. * Alphabet has 33+ letters, so there is no space left for programmer's favorite symbols on layout: @#$^&{}[]|~`<>. Yep. * In Math variables' names traditionally are Latin/Greek letters, Cyrillic is used only when teaching kids. Again: switching layout all the time? No, thanks. * Words are simply much longer. And I mean much. In English even short words tend to become shorter (variable -> var). In Russian there is simply no such pattern exists. `var-set` -> `установить-переменную`. `var-get` - `получить-переменную`. * Words are stable in English morphologically. e.g. `last-msg-delivered` - `last-msgS-delivered` -> `последнЕЕ-сообщениЕ-доставленО` - `последнИЕ-сообщениЯ-доставленЫ` - if you change gender or from singular to plural etc you should change few words in a row. Seriously, it seems to me like trying to make things more complicated.

    历次讨论

    同类还值得读

    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

    关注向阳乔木

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

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

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