学编程 才能更好的了解世界
在信息时代发展的今天,“人人学编程”已经不再是一句口号了。很多人对此也会有一些误解,认为“人人学编程”,只是为了补充目前人才市场的程序员空缺。其实并不是这样的。越来越多的学者感受到,如果有一种神秘的力量在控制我们所处的世界,那么这个力量的源泉应该是一台强大的计算机(对,和电影《黑客帝国》里的设定类似)。编程,是控制计算机的唯一手段。所以只有了解编程,才能更好地了解这个世界。
在斯蒂芬·沃尔夫勒姆的一篇专访《宇宙的本质是计算》中,这位传奇科学家说:“我们的世界就是计算,就是一套简单的规则生成的复杂现象。很多时候人们说的‘随机性’,只是证明你还没为这个系统建立完整的模型而已。”
如果不理解文章的意思,我试着解释一下,不一定对:物理定律是恒定的,是宇宙运转的原理;数学是物理的基础,所有物理定律都能用数学来表达;数学是复杂的,但无论多复杂的数学公式,都是从最简单的数学公式推导出来的。所以,从最基础的数学出发,就可以描述整个宇宙的运转。描述的过程,就是建立数学模型的过程。现在我们描述不了,只不过因为还没有完全建立所有模型。假如模型都有了,那么就可以在计算机中模拟宇宙的一切。如果计算机的速度足够快,快得超过宇宙的运算速度,那么甚至能计算出未来会发生什么,也就是能预测未来。
如果上述理论正确,那么真的就一切都是计算,也就一切都可用计算机处理,学编程就是了解、控制这一切的最便捷途径。这套理论还只是猜想,也许不能说服你。但有另一套更接地气的理论,已经被广泛接受,叫“计算思维”。
“计算思维”理论的提出者是曾任 CMU 计算机系系主任的周以真教授,她在最近的一次采访中说道:“计算思维就是像计算机科学家一样思考。”她本人也承认这句话不好理解。我试着解释一下。
我们所处的时代被称作“信息时代”,计算机是信息处理的核心。商业、农业、工业、教育等等都被计算机技术推动着进步。如果能知道计算机是怎么做到这一切的,也就是知道这里蕴含的计算思维是什么,能给个人在所处行业的发展带来帮助。否则,就只能浮于表面地应用现成软件而已。比方说,人类一直在用推理来解决很多需要思考的问题,比如下棋。所以看到会下棋的程序,很多人都认为这是计算机在思考,很神奇。实际上,计算机从来都不会思考。
1997年打败国际象棋冠军卡斯帕罗夫的 IBM 深蓝电脑,使用的核心方法叫做“搜索”,就是尽可能地穷举所有棋步的可能,从中搜索对自己最有利的那一步落子。干的是体力活,一点儿都不智能。2011年,在一档经典的智力答题节目中,IBM 的 Watson 系统战胜了两位人类冠军。是这个程序的智力超群吗?也不是。Watson的核心方法还是“搜索”,搜索的范围是一块 4TB 的硬盘,上面存满了资料。也就是说,计算机在智能方面战胜人类,依靠的是其不知疲倦的高速搜索能力和海量的数据存储能力。其实想想看,我们自己所谓的智能,是不是很多时候也就是对自己脑中的记忆进行搜索呢?也许有一天大脑的秘密被完全解开,会发现它的工作原理和计算机是类同的。不管怎样,知道了高速海量搜索这个“计算思维”,就可以将其应用在自己遇到的难题上,用计算机找到答案。
即便在日常生活中,知晓“计算思维”也是大有好处的。比如说 ifttt.com 这个网站,提供了非常便利的界面,让用户可以利用计算思维中的“条件分支”概念过自动化生活。就像我,有个 Misfit Shine 运动手环。我在 ifttt.com 设置了当我运动量达标,就自动发微博求点赞,而不达标时,则求被嘲笑。因为怕被嘲笑,我自从设了这个 recipe(在 ifttt 上,条件设定被叫做 recipe),就再也没有一次不达标。ifttt 已经将很多网站、智能设备和手机相连接,能搞出很多有趣的玩法。比如一离开工作地点,就给老婆发条短信;天气预报明天下雨,就提醒女友带伞;快到家了,自动打开电暖气;到电影院,手机自动静音。
在英美等国家,很多小学都开始教授计算思维,这是“人人学编程”活动起源的基础。在中国,这么好玩的事情只可能高考之后才让学生接触。所以,大学肩负起了传播计算思维的重任。《大学计算机基础》这门课在以前主要是教计算机操作、Word、PowerPoint等。随着时代的进步,已经很少有学生在上大学时还不会操作计算机了。所以这门课现在正在转型为传播计算思维。如果你毕业早,没学过计算思维,可以学学这两门MOOC:哈工大的《大学计算机——计算思维导论》和山东大学的《大学计算机——计算思维的视角》。
总之,“人人学编程”,并不是人人都要“学会”编程,而是每个人都要学会计算思维,并通过它来了解、探究和控制这个世界。