资讯
首页  >  专题  >  环球科学  >  环球科学<前沿资讯>

把编程当作一种思维方式

来源:环球科学

  现代程序设计语言的强大在于它们达意、可读、简洁、精确和可执行。

  导语:现代程序语言的可读性使得更多人走进了计算机科学这个领域,但是编程语言真的只能在编程中使用吗?显然并不是。它们也可以是我们考虑实际问题一种的方式。这篇文章解释了为什么计算机工程应用大师Allen Downey在众多工程应用和数据科学的作品使用Python作为教学辅助。

  关键词:编程语言; 教学方法; Python;

  图片来源:K.lee 维基百科

  程序设计一直在变化。第一代编程语言像FORTRAN和C语言,程序员主要的工作是将高级概念编译为代码。在现代程序设计语言中(我将使用Python作为案例),我们使用函数、对象、模块和库来扩展语言。这一变化不仅仅使程序更稳健,还改变了编程所指代的含义。

  编程过去常常是指翻译:用自然语言表达想法、以它们的数学注记符工作,然后编写流程图和伪代码,最后写程序。这其中必须有翻译,因为每一种语言拥有不同的性能。自然语言达意且可读,伪代码更精确,数学注记符简介,代码可执行。

  但是翻译的代价就是极大地局限了我们在每种语言里能够高效表达的想法。一些很容易计算表达的想法却很难用数学注记符书写,而且我们在数学中的符号运算也难以在大多数程序设计语言中实现。

  现代程序设计语言的强大在于它们达意、可读、简洁、精确和可执行。这意味着我们可以剔除中间转译语言并且使用一种语言进行探索、学习、教学和思考。

  

图1

  举个例子,图1展示了一本畅销课本上伪代码形式的广度优先搜索(BFS)算法。作者设计这种语言为的是比当时大多数程序设计语言更简洁和可读,那时候是1989年。

  图2用Python表现了相同的算法。这种语言表达比伪代码还短几行,而且因为这里面用的单词比符号多,可读也更强。此外,不像伪代码只能表意,我们可以直接运行语句、显示结果和调试语句。

  

图2

  运行程序是编程的关键点,当然,但是编程远不止此。执行代码的能力使得编程成为思考和探索的工具。当我们以程序表达想法时,我们使它们可以被试验;当我们调试程序时,我们也在调试我们的大脑。

  像Python这样的语言也是学习和教学的理想语言。举个例子,我最近写了一本关于数字信号处理(DSP)的书。我用Python写了一个简单的库、用Jupyter(一个软件开发环境)做了一个在线手册。这个在线手册不仅涵盖文档、代码和输出结果,还包括图像和声音片段。

  我在编写这本书的时候使用代码测试我的理解认知,同时向学生解释这种认知。学生也可以运行这些代码开发新的想法模型、更改代码测试他们的预测以及根据他们的项目拓展我的代码。

  大多数教科书和课堂使用数学传授信号处理课程内容,即学生主要使用纸和笔计算。在这种情况下,唯一的选择就是“自底向上”,也就是从复杂数字运算开始学习。然而这种方法一点都不吸引人,学生需要数周的时间和大量的篇章才能理解相关应用。

  使用计算处理的方法,我们可以“自上而下”学习,从那些实现最重要的算法的库开始学习,如快速傅里叶变换。学生可以先使用算法,再了解它们是如何运作的。由于没有被细节搞得晕头转向,他们可以掌握像频谱分析这样最重要的概念。在第一天,他们就可以在实际应用进行学习,这将给予他们动力深入学习。而且他们可以在学习中发现更多乐趣。为了演示,我写了一本名为《杂音总动员》的Jupyter手册。如果你点击链接,你可以看到代码并且试听案例。手册使用了我模拟的一个年级学校乐队声音的库。那段声音中有乐器走调、小孩子随机弹奏错误的乐符。这旨在展现学生们会犯的种种错误(当然也稍微刻薄了一些),但是它也演示了我们如何感知声音和解释复杂信号的基音。

  我所引用的现代编程语言并不是特别新颖;事实上,Python已经超过25岁了。但是在高中和大学教育中它们仍然没有普及。而且甚至是在使用这些语言的地方,它们常常被大材小用,并没有发挥出它们强大地效力。

  现代程序设计语言与它们的前辈相比有本质上的区别,但是我们仅仅才开始意识到这种区别的含义。

  更多使用Python思考、探索、学习和教学的方法在本文的姊妹篇。

  关于作者:Allen Downey是美国萨诸赛州尼德姆欧林学院计算机科学的一名教授。他是《像计算机科学家一样思考Python》(此名为《Think Python》人邮版的中译名)、《DSP思维》以及其他使用Python探索工程和数据科学课题的书籍的作者。

  本文观点仅代表作者,不代表《科学美国人》。

  (翻译:赵小娜;审校:杨玉洁)

本文来自:环球科学
特别声明:本文转载仅仅是出于科普传播信息的需要,并不意味着代表本网站观点或证实其内容的真实性;如其他媒体、网站或个人从本网站转载使用,须保留本网站注明的“来源”,并自负版权等法律责任;作者如果不希望被转载或其它相关事宜,请与我们接洽。
[责任编辑:环球科学]
分享到:
文章排行榜
©2011-2022 版权所有:中国数字科技馆
未经书面许可任何人不得复制或镜像
京ICP备11000850号-1 京公网安备11010502039775号
信息网络传播视听节目许可证0111611号
国家科技基础条件平台
./t20170617_510811_taonews.html