## 学点computing

请原谅我在标题中使用了一个英文单词。computing 和 calculating 翻译成中文都是“计算”，可是它们的意思并不完全一样。用计算器算个账，是calculating，而我总感觉，computing是更高级的计算行为。

我们本周的专栏文章有个偶然的主题：计算机科学。周一《数学家告诉你什么时候结束单身》说的是算法，周三《现代世界的快速上升管道》提到了高级编程工具，周五《一个神人的世界观》说的是Mathematica的发明人沃尔夫勒姆。

我们专栏的有些读者本身就是程序员，不过大多数人可能未必熟悉这些内容 —— 我就特别想问这些读者一个问题：

—— 你难道不想试试这种高级的计算吗？

Mathematica就是个很好玩的计算工具。跟一般计算器和普通编程语言不同，它可以进行“符号计算” —— 也就是像人一样计算。

比如你可以用它算个最简单的分数加减法：

![图片](https://piccdn3.umiwi.com/img/201611/19/201611192014154093642190.jpg)

第一行是我的输入，第二行是它的输出结果。它直接给了一个分数答案，而不是像计算器那样给一个近似的小数结果！

它还会解方程，比如来个一元三次方程：

![图片](https://piccdn3.umiwi.com/img/201611/19/201611191802548938275485.png)

它给出了精确的一个实根和两个虚根。如果你想要小数结果，只需要在输入的时候把一个数写成小数：

![图片](https://piccdn3.umiwi.com/img/201611/19/201611191803545378566776.png)

哪怕方程参数不是具体数字，它也可以算：

![图片](https://piccdn3.umiwi.com/img/201611/19/201611191804525924528062.png)

它可以算积分：

![图片](https://piccdn3.umiwi.com/img/201611/19/201611192016184028702926.jpg)

它还可以非常方便地生成各种函数的图像：

![图片](https://piccdn3.umiwi.com/img/201611/19/201611191806291849855863.png)

你还可以让它把圆周率算到任意多位数：

![图片](https://piccdn3.umiwi.com/img/201611/19/201611191807396899293472.png)

可以说，一个人从小学到大学毕业所需要的所有数学计算，Mathematica都会 —— 事实上，Mathematica算积分的能力超过所有人类。

现在的Mathematica已经被沃尔夫勒姆给扩充成了“沃尔夫勒姆语言”，它不但能做各种计算，而且是整合了各种实际知识，可以随意查询和使用。比如在Wolfram|Alpha网站，你可以很方便地比较中国、美国和欧盟的GDP情况：

![图片](https://piccdn3.umiwi.com/img/201611/19/201611191808363612203496.png)

。。。。

![图片](https://piccdn3.umiwi.com/img/201611/19/201611191916554109481851.jpg)

不过这篇文章并不是想向你介绍Mathematica或者Wolfram语言，而是想让你对“计算”，重新产生兴趣。

我们大多数人使用计算机主要做的事情大概是上网、看视频、处理文档等等日常的事情，但是别忘了，计算机还可以用来……做计算！

用Excel算个账是一种计算，用Mathematica画两个图是一种计算，而更高级的计算，则是编程。并不是只有程序员才应该编程。

编程的本质，是你写一个剧本，让计算机根据剧本去完成你交给它的任务。你发布命令，计算机执行命令。你负责想事儿，计算机负责做事儿。你深谋远虑，计算机埋头苦干。这难道不是很有意思的事儿吗？

编程不见得非得是为了做个什么产品，自己在生活中也能用到编程。前段时间很热闹的阿里程序员写了个脚本抢月饼事件，你听说之后，难道不想学学这个脚本是怎么写的吗？

我自己写过几个简单的脚本。以前老的Kindle阅读器，把你读书时高亮的所有句子，做的所有笔记都存在一个文件之中，可是如果你同时读几本书，这些书的句子和笔记就会混在一起没法看。我就用Python写了个小程序，能把一本书的高亮句子和笔记从Kindle文件中直接提取出来，单独形成一个整洁的文件，非常好使。这个程序我用了很多次，不知道省下多少时间！

今年我儿子学乘法，不好好背口诀。为了让他刻意练习，我就写了个小程序，能生成一份乘法考试试卷：

![图片](https://piccdn3.umiwi.com/img/201611/19/201611191810333018479795.jpg)

这份试卷还是有点技术含量的 —— 每次出题的顺序都不一样，完全随机，所有十以内的乘法都出现一次而且只出现一次（不会既有6x7又有7x6），而且每道题中既可以大数在前面也可以小数在前面。我还加入了加减法和除法的功能……只需一个命令，就能让儿子忙活好一阵。

编程，是人机交流的最高境界。简单地让计算机按照你的鼠标指令做事儿，计算机就是个寻常工具。可是你一旦写个程序让计算机执行，你会对它有一个完全不同的感觉 —— 就好像计算机活了一样，简直充满敬意。现在计算机“懂你”了。

所以就算没有这些实用功能，我也建议没事儿编程玩，就等于锻炼身体。

而且特别建议，让孩子从小学编程。编程不但能训练逻辑思维，而且是一个适应现实世界的过程。一开始你不熟练，动不动就出错，甚至质疑自我，这不就是磨炼意志品质吗？解决问题，可以收获巨大的成就感。等到能够熟练编程了，你就会获得一种掌控感。从自我质疑，说话别人不听，到令行禁止，掌控世界，这种经历好不好？

所以我不太理解那些让孩子每周花十几个小时练钢琴的家长，也不太理解那些醉心于书法艺术的老先生。要说陶冶情操，我看编程是个更高级，也是更高雅的运动。

> 万维钢
> 很多读者留言问新手如何学编程？建议从Python语言入手。
> 感谢两位读者补充——阿龙申：推荐youtube上的code栏目，有很多制作精美，简单易懂的计算机原理讲解。还有很多为什么学习编程的分享。让我这个外行都已经产生了浓厚的兴趣。
> 肚皮：可汗学院有套Python的零基础教程非常不错，在网易公开课上有中文字幕版，推荐没有任何程序语言基础的人学习。共勉~

### 💡 精华要点
- 编程的本质，是你写一个剧本，让计算机根据剧本去完成你交给它的任务。你发布命令，计算机执行命令。你负责想事儿，计算机负责做事儿。你深谋远虑，计算机埋头苦干。

![图片](https://piccdn3.umiwi.com/img/201611/19/201611191811042171622831.jpg)
