@ 2015.08.18 , 14:00

开学季:为什么物理课应该教授编程?

[-]
理论物理学家Kip Thorne帮助《星际穿越》的Jessica Chastain计算更真实的黑洞

新一学年又要开始了,很多教员正在研究他们的物理学导论课程。应该设置几次考试?留多少作业?需要教流体吗?那数值计算呢?就让我们来谈谈数值计算吧:

杯具的是,我(原文作者)认为大多数物理教员甚至都不会考虑在物理课程中包括数值计算。当然,我所指的数值计算是把复杂问题分解成很多(更容易的)问题的过程。由于这样做会产生很多个问题要求解,最简单的策略就是使用某些类型的计算机。因此一些人可能会称之为计算物理学,甚至物理编码学。随便你喜欢叫什么,但我认为这是导论课需要涵盖的一个重要课题。

那教员不教数值计算的原因又是什么呢?下面是一些常见顾虑以及我的回答。

[-]
理论物理学家Richard Feynman

“这不是一门计算机科学科。”

好吧,是这样的,这是一门物理课。然而,这也不是一门英语文学科,这是否意味着课上就不应该有读写?这也不是数学课,但是大家还是在用数学。这不是艺术课,但学生们还是应该能够画力学示意图。

物理学不是与其它所有事物隔离的。说实话,根本没有一门课程是完全自成一体的,你能想象一门不使用文字只使用表情图片的课吗?不,大家都会挂科的。物理学必须使用很多不同领域知识来研究宇宙的本质,这也是其牛逼之处。

当然不仅仅教员会说“这不是一门计算机科”——学生也会这么想。这个我在另一篇文章里回答过

[-]
天文学家Carl Sagan

“我的特定物理领域不使用数值计算。”

首先,这多半不正确。我猜想你可以说有些实验物理领域用不到数值计算,但大部分领域确实使用它们。哦,而且不仅仅是在物理学,想想气象学,或者量化交易(利用数值模型选股)?数值计算无处不在,学生们越早学它越好。

其次,仅仅因为你不做一件特定的事情并不意味着就不应该在课程里包括它。对不?物理学导论课程的目的并不是复制出一个迷你你(或者迷你我),相反,是为了向学生介绍物理学的基本思想。

[-]
计算机科学家Stephen Wolfram

“数值计算太过复杂,用在导论课程中所需前提太多了。”

我承认这看法曾经是对的——但现在不比从前了。过去,对于非程序员来说,要进入某种类型的计算环境真是蛋疼无比,唯一可行的方法就是用电子表格做计算,但即便是这样,学生们也要拥有Excel或类似软件才行。

[-]
Python设计者Guido van Rossum

但现在再也不是1995年了,对于新生,甚至对于物理教员来说,数值计算不再是遥不可及,我们现在有了如下这些优秀的工具:

# PythonVPython:Python是非常易学易用的语言,而VPython是为物理上的东西创建出色可视化效果的模块,它们的好处难以言喻。

# GlowScript:这样么说吧,这是跑在浏览器里的VPython。很了不起吧?是的,现在一名学生只要在任何一台电脑上装有现代浏览器,就能开始研究数值计算。有经验的教员会知道要在实验室电脑上安装新软件会搞得有多复杂,这可不是好玩的。

# Trinket:同样的,这实质上也是跑在浏览器里的VPython。不过,Trinket允许你分享和嵌入python代码,并让其他人能修改和观察会发生什么。这里有一个帖子展示用python和trinket能做些什么很酷的事情

当然还有很多其他工具你能用来进行数值计算,你仍然能使用电子表格(你甚至能使用Google Docs的电子表格),你也可以用Mathematica或类似的东西。重点是,开展这种类型的计算起步门槛变低了——比十年前的情况低多了。

[-]
未来学家加來道雄

“我已经在物理学导论里涵盖了太多东西,没时间讲数值计算。”

是的,在物理课程里可以包括很多东西,对我来说,有三个重要概念一定要放在第一学年的物理学里:

# 动量原理——或者你愿意叫牛顿力学也可以
# 功能原理
# 角动量原理

几乎任何其他东西都涵盖于这三个概念中的一个或多个中。我理解要往已经很满的学期里再塞进更多课题会有困难,但不要把它想成是一件新事物——相反,它只是解决同样问题的新方法。哦,但是你不喜欢这个新方法?没问题,但如果一个物理教员说“嘿,我不喜欢用代数求解有两个变量的物理问题”会如何?当然,你可以避免需要求解两个变量的所有物理问题,不过这样就有点蠢萌了。现在这对于数值计算来说也是同样成立的。

[-]
摇滚物理学家Brian Cox

数值计算从哪里开始呢?

好,我们同意数值计算足够重要包括到物理学导论里。但然后怎么做?首先,你可以采用一本支持数值计算的教科书。我个人喜欢Chabay和Sherwood写的《物质和相互作用》教材,它很棒而且本身就包括了vpython内容。其次,你可以在几乎所有课程中实施GlowScript活动。如果你想要一些上手教程,这里有一些我整理的东西,或者你也可以使用亚马逊Kindle店里我写的《物理刚刚够》电子书——有一整章讲数值计算的基本概念。

外面还有很多其他资源,但这些就足够你上手了。哦,最后一件事,一旦上手,你可能会发现用python编程求解会促使学生更多地讨论物理学而不是编程。是的,这一点也总让我大吃一斤。

[-]
科普家Bill Nye

本文译自 Wired,由 王丢兜 编辑发布。

赞一个 (9)