讲故事与叙事2014catb.org
梅尔的故事
The Story Of Mel
导读
这篇讲的是程序员梅尔(Mel)的故事,属于黑客圈里的经典叙事:他用一种近乎偏执、完全贴合机器底层的方式写出黑杰克程序,宁可欺骗对手、被同行视为异类,也不肯写“正确”但平庸的代码。写作者值得读它,是因为它示范了怎样用具体细节、技术冲突和人物执念,把一个高度专业的故事讲成关于手艺与匠人精神的一般寓言。
可以直接用的写作要点
- 01
用具体的机器细节和冲突(例如指令集的边角、编译器的局限)代替抽象的赞美,让“技艺”变成读者看得见的东西。
- 02
让主角有明确的、不讨喜的执念:梅尔宁愿作弊也不愿按常规写法,这种偏执比“他很厉害”更有说服力。
- 03
把一个行业内部的故事提升为普适主题(艺术与科学、匠人与体制),读者即使不懂技术也能代入。
- 04
结尾不急着评判,而是让读者自己掂量“对机器的忠诚”与“对人的诚实”之间的张力。
HN 评论精选
这个故事具有反复被重提的生命力,说明它已成为社群共同记忆。
这个故事最有意思的地方在于,它似乎能在 HN 上无限次地自我复制,每过一阵就会被重新发一遍。不知道下一次会是什么时候。
gtirloni查看英文原文
The most interesting aspect of this story is that it apparently has a property of yielding infinite posts of itself on HN. I wonder when will be the next one :) https://news.ycombinator.com/item?id=7282617 https://news.ycombinator.com/item?id=5758225 https://news.ycombinator.com/item?id=5643818 https://news.ycombinator.com/item?id=5395931 https://news.ycombinator.com/item?id=5269815 https://news.ycombinator.com/item?id=3509450 https://news.ycombinator.com/item?id=1945288
现代编译器取代了梅尔式的个人技艺,把少数专家的知识固化成了集体资产。
我今天正在为一个小语言写 x86 代码生成器,这个故事读起来格外应景,因为要生成真正优秀的 x86 代码实在太难。即便我自认懂得怎么写代码生成器,也有旧作品可参考,边角情况仍然多到难以做对。以前人们说编译器在汇编上永远赢不了程序员,现在我们说编译器通常会“做对的事”。原因大概有两层:一是代码生成器比过去好太多;二是大多数人已不像梅尔那样吃透自己的机器,编译器因此承载了少数高手的“机构性知识”,其余人只是使用它。
timtadh查看英文原文
I am working on an x86 code generator today for a small language I have been working on. This story seems very timely to re-read because it is so difficult to generate really good x86 code. Even though I basically know what I am doing when writing a code generator at this point, and I have previous ones to reference, there are so many edge cases it is hard to get it right.[1] It used to be said that a compiler would never beat a programmer at assembly. Now we say the compiler is usually going to "do the right thing." I think there are two things going on here: 1) Our code generators are much better than they were in the bad old days. 2) Most people don't understand the ins and outs of their machines like Mel did (I certainly don't). This means that the compiler has "institutional" knowledge from a few really knowledgeable people and the rest of us just use that knowledge. [1] see for simple example `imul` which has 5 different forms http://docs.oracle.com/cd/E19455-01/806-3773/instructionset-39/index.html . According to the intel optimization manual[2] the 16 bit forms suffer from "false LCP" stalls. The recommendation is to cast to 32 bit before preforming the `imul`. [2] http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf page 103 in the PDF. See also 506 for timings on the Atom architecture and 517 for Silvermont.
编程兼具艺术性,非常规地使用工具本身就能产生令人震撼的作品。
正是这样的故事让我倾向于把编程看作艺术,而不只是科学。艺术家同样可以用完全新奇、反常的方式使用自己的媒介,结果往往让外行或循规蹈矩的艺术家不适(后者相当于写干净、可维护、无补丁代码的程序员),但也常常让人惊叹于一件工具、一个特性或一种语言结构竟能被用得如此不同。想读哲学讨论可看 PG 的两篇:一篇是 Knuth 演讲的记录,一篇是 PG 自己的文章,他主张玩闹式、先做原型的编程,更像画家作画,而不是社会学家做系统研究。
thegeomaster查看英文原文
Stories like this are why I'm inclined to consider programming as much as an art as it is a science. Artists, too, can use their media (such as brushes or musical instruments) in a completely novel and unusual way. The end result is often not pleasant to casual viewers or conventional artists (that would be coders who write clean, maintainable, kludge-free code) but it can just as often leave you awestruck by how interestingly and differently a tool or a feature or a language construct has been used. For a philosophical discussion on this, see [1] and [2], both from PG, who actively advocates for a playful, prototype-first approach to coding, which more resembles a painter painting a picture than, say, a sociologist conducting systematic research. ([1] is a transcription of a talk by Don Knuth, [2] is Paul's own essay.) [1]: http://www.paulgraham.com/knuth.html [2]: http://www.paulgraham.com/hp.html
同类还值得读
Pixar in a Box:可汗学院的皮克斯讲故事课
Pixar in a Box – Khan Academy
这篇是 Khan Academy 与 Pixar 合作的“Pixar in a Box”项目介绍,用计算机图形和动画制作来讲解数学概念。
讲故事与叙事2015 · 753 分 · 65 评4 条写作要点编辑精选皮克斯的讲故事法则
Pixar's Rules of Storytelling (2013)
这是皮克斯动画工作室流传甚广的 22 条讲故事法则清单,从“从前有个___,每天___,有一天___”的骨架,到如何重写自己讨厌的作品。
讲故事与叙事2018 · 513 分 · 74 评4 条写作要点编辑精选皮克斯通过可汗学院提供免费在线讲故事课程
Pixar offers free online lessons in storytelling via Khan Academy
这篇报道介绍皮克斯与可汗学院合作的免费在线课程《讲故事的艺术》,把皮克斯内部的故事创作方法公开给普通学习者。
讲故事与叙事2017 · 503 分 · 93 评4 条写作要点编辑精选用皮克斯的故事公式说服投资人
Use Pixar's story formula to win over investors
这篇文章借用皮克斯的故事公式(以《海底总动员》为例)来示范如何给投资人讲创业路演故事:先讲目标、再讲障碍、最后讲改变。
讲故事与叙事2021 · 439 分 · 188 评4 条写作要点编辑精选贝索斯如何把叙事变成亚马逊的竞争优势
Jeff Bezos Turned Narrative into Amazon's Competitive Advantage
这篇讲杰夫·贝索斯如何把“六页叙事备忘录”变成亚马逊的管理与竞争优势:用可独立阅读的叙述性文档替代口头汇报和 PowerPoint。
讲故事与叙事2019 · 435 分 · 181 评4 条写作要点编辑精选