科学与数学jeremykun.com
为什么没有写给程序员的《数学漫游指南》
Why there is no Hitchhiker’s Guide to Mathematics for Programmers
2013 — 2016,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
作者 Jeremy Kun 探讨为什么程序员没有一本像《银河系漫游指南》那样通俗易懂的数学入门书:数学领域符号不统一、证明常被一句“证明很简单”带过、且难以自学,这些特点让数学与编程文化差异巨大。文章分析了程序员学数学的门槛与数学学科本身的特性。
为什么经久不衰:它触及程序员与数学之间的长期鸿沟——符号、命名、自学难题至今仍在,多年后重登首页说明这个话题持续引发共鸣。
HN 评论精选
程序员有太多比学数学回报更直接的选择,这是真实的两难。
说这是“极其合理的担忧”还是太轻描淡写了。程序员的困境在于:想提升产品有太多条路可走,工程实践、统计、UI 设计、领域知识等,每条都是独立而深入的领域,而且对大多数程序员来说,这些路比掌握高等数学更容易带来切实回报。
danso查看英文原文
> Perhaps one of the most prominent objections to devoting a lot of time to mathematics is that it can be years before you ever apply mathematics to writing programs. On one hand, this is an extremely valid concern. If you love writing programs and designing software, then mathematics is a nothing more than a tool to help you write better programs. Calling it an "extremely valid concern" is understating it. The dilemma is that programmers have many, many roads to follow if they want to improve their product, all of them discrete, deep fields in their own. Math is great, and certainly studying it will expand your mind...but so will studying engineering practices, statistics (which yes, is a kind of math, but not as theoretical as the kind the OP is advocating for), user interface design, and knowledge domains (medicine, legal, earth sciences, etc.)...all of which, as far as most programmers can tell, will yield concrete rewards much more easily than will mastering higher level mathematics.
并行计算与函数式编程的兴起让程序员不得不回头补数学。
我最近也碰到了这个问题,很多命令式程序员都会。从 perl/php/java 起步后我逐渐意识到:芯片有速度上限,多核成为趋势,并行编程越来越重要,而命令式语言因可变变量不适合并行,函数式语言更接近数学概念——于是糟糕了,只好开始自学统计、概率、贝叶斯和 Haskell。
tunesmith查看英文原文
I've come up against this recently and I think a lot of imperative programmers will. For me, the basic pattern, starting from a career based on perl/php/java was this series of realizations: - EECS circuit design is based on a conceit that gives chips a speed limit - as a result, chips aren't getting much faster and that multi-cores are happening instead - parallel programming will become more and more essential to make a buck as a programmer - imperative languages aren't great for parallel programming due to mutable variables - functional languages are better for parallel programming due to immutable variables - functional languages are a lot closer to math concepts than imperative languages - uh-oh So for me it's been a fun few months of stumbling through self-directed study in stats, probability, and math. Bayesian probability from some articles by Yudkowsky. Fast, clumsy review of 0th-order, 1st-order, and zfc set theory. Anki decks out the wazoo. Now I'm plodding through Learn You A Haskell. I would like to work more with actual mathematical proofs but I'm finding that tough to get into myself. It was fun paging through metamath for a few days, though.
推荐《普林斯顿数学指南》作为接近“数学漫游指南”的读物。
其实有本书很接近这个定位——《普林斯顿数学指南》,由 Gowers 主编、约百位各领域顶尖数学家撰写,是我读过的最优美的书之一。
zepolud查看英文原文
Actually, there is something that comes pretty close to this--it's called The Princeton Companion to Mathematics, curated by T. Gowers but mostly written by about a hundred of the top mathematicians in their respective fields, and is one of the most beautiful books I've ever read.
编程可实验可复现所以能自学,数学缺乏这种环境,这是根本差异。
编程是完美的自学环境:找段代码、编译运行、改改变量、看文档,实验便宜且可复现。而数学没有文档、没有 playground、没有解释——你要么身处数学共同体之内能获得知识传递,要么就像在维护一个巨大的遗留项目。
atemerev查看英文原文
All right, so this article can be probably condensed to these two points: 1. "Mathematics is hard and inconsistent, but so is programming". Well, yes, but this is exactly the problem! I pity poor souls who started their journey into programming with, say, C++ — the champion of consistency and elegancy. But there are other ways and other languages. And, with some effort, it _is_ possible to provide gentle introduction into programming world. The same should apply for mathematics. 2. "You can't learn mathematics on your own, but it's the same with programming". And here I deeply disagree. Programming as activity is _the_ perfect learning environment. Find some coding sample, compile and run it (or paste to REPL), see if it gets you the same result. Try to change some variables in the code, see how behaviour changes. Can you run it without this function? What this method does? (A quick look to the documentation reveals everything, including additional arguments to try). You can tinker and hack and play and learn with every language and environment out there, it's like a perfect experimental setup where experiments are cheap, and everything is perfectly reproducible, at least on your own machine. ;) With math, there are no docs, no playground, no explanations, no nothing. Either you are the part of mathematical community and can hope for explanations and knowledge transfer, or you are not. In programmers parlance, it's like being the part of a huge legacy project with long compile times and cryptic documentation, where the only way you can learn is ask your senior colleagues questions like "what this class is doing?" and get answers like "oh, we are not doing _that_ anymore, this is an artefact from like 15 years ago, still widely referred in the docs, though. Here is the right way instead". Sounds familiar? This is why learning math is way harder than it should be.
历次讨论
同类还值得读
如果月球只有 1 像素:一个极其精确的太阳系模型(2014)
If the moon were only 1 pixel: A tediously accurate solar system model (2014)
一个网页版太阳系模型,以“如果月亮只有 1 像素”的真实比例呈现:你必须一路横向滚动,才能体会行星之间空旷到何等程度。
科学与数学上首页 7 次 · 2014–2025joshworth.com编辑精选沉浸式线性代数(2016)
Immersive Linear Algebra (2016)
《Immersive Linear Algebra》是一本完全免费、开放在线的线性代数“超文本教科书”,其最大特色是大量可交互的图形:读者可以直接拖动、操作图中的向量、矩阵和变换…
科学与数学上首页 5 次 · 2015–2024immersivemath.com编辑精选如何将贝果切成两个相连的半环(2009)
How to Slice a Bagel into Two Linked Halves (2009)
数学家 George Hart 的经典教程,演示如何用一刀把贝果切成两个相互扣住的环,并附上切割步骤与数学原理。
科学与数学上首页 5 次 · 2009–2022georgehart.com“犹太问题”:一组用于歧视的数学题
Jewish problems
一篇 arXiv 论文,整理并讨论苏联时期犹太学生在申请大学数学系时被问到的特殊数学难题:这些题往往有简单解法却极难想到,被用作面试中拒绝犹太考生的手段。
科学与数学上首页 5 次 · 2011–2021arxiv.org你的身体并非为长久而造:人类死亡率数据的一课
Your body wasn’t built to last: a lesson from human mortality rates
文章从人类死亡率随年龄变化的统计规律出发,解释身体并非为长久使用而设计:年轻时死亡风险较低,之后随年龄近似指数上升,像复杂系统在不断累积损伤。
科学与数学上首页 5 次 · 2009–2018gravityandlevity.wordpress.com