大胖 大胖
图片是Koch曲线,熟悉分形的同学肯定对此很了解,这是大胖翻译的ThinkPython这本教材中第五章的最后练习题样例代码生成的图案。
代码地址:http://thinkpython2.com/code/koch.py
第五章刚刚翻译完毕,双语版本地址:http://blog.cycleuser.org/thinkpython-shuang-yu-xue-bian-cheng-chapter-5.html
这是大胖翻译的ThinkPython这本教材中第五章的最后练习题样例代码生成的图案。
我对编程一直很热衷,因为学到的内容都是可以拿来用的,我能随时来检测老师讲的内容,不会有一些难以把握正确与否的情况。因此编程课是本科和硕士时代我投入精力最多的课程之一,也是我很喜欢的一门课程。
然而蜜糖砒霜。
对于很多同学来说,编程课简直是痛苦的噩梦。一些同学甚至多次参加某一门编程课而挫败感极其强烈。他们往往认为编程课没有什么用处,也没有太大兴趣,因此非常反感,学习效果可想而知。也因此有一些应付作业应付考试的现象出现。
当然还是有一些人真的用心学习了,但往往因为自身的专业与C++或者VB之间很少有交集,而且掌握的基本内容也不足以参与一些日常开发,所以在上课之后的数年之内都很难有实践的机会,学到的内容也就只能逐渐荒废了。
此外,回想身边同学当年在研一时候学C++时候的状态,很大一部分人都是对语言本身的一些特点理解不够,在某些复杂的地方卡住了(比如内存管理或者地址等等),逐渐因为挫败感而失去动力了,对编程本身也没有能够培养出兴趣,更谈不上学到多少技能了。
觉得没有用而缺乏兴趣,没有实践的机会而逐渐荒废,被一些复杂内容困住而失去动力,这就是国内高校学生面对编程课的情景。
当年在本科乃至硕士上编程课的时代,我曾经若干次给身边一些同学进行过辅导,深深感觉他们都受到上述三个问题的困扰,而难以在编程课程方面有太大的兴趣和收获。对此我也没有什么办法,只能觉得特别遗憾,感慨他们花费时间去学习一门自己不喜欢、也没机会应用,并且还特别难的课程。
最近我才意识到一种可能的解决办法——Python。 从本科时代到现在我一直都没有远离编程,比如写一些Android程序或者简单的算法之类,都很肤浅,但从未扔下,并且随着论文和科研的需要,逐渐学了一些新的内容,比如Java、Swift、QT-Quick,以及Python。
我发现Python相比C++与Java,更适合给非计算机专业的本科生和硕士生作为编程入门语言来教学,授课难度更低,学习几乎无门槛,上手最简单的,学会了之后也能立即在图形化编程或者科学计算中进行使用。
首先Python很有趣,能做很多有趣的事情,需要在语言本身上投入太大的时间精力。比如本文开头那幅图,画出来的过程并不复杂,但是实现的过程很巧妙,对思维和数学逻辑都有训练。
其次Python应用广泛,世界上有各种各样的Python项目,科学计算、网站搭建、图形界面、跨平台开发等等领域都有Python的身影。各个学科中也都充满了在实践中使用Python的机会。同学们一旦掌握了Python,就能迅速做出一些在现实世界中的各个领域都可以发挥作用的程序。
最重要的是Python的学习难度相比C++或者Java乃至VB这些国内比较普遍的编程语言来说,要简单很多很多。代码清晰可读,几乎就是缩进过的英语而已。这种特点可以更快速地让学生投入精力到探索编程过程中,而在语言本身上,不用花费过多时间。
当然,Python并不是万能的,作为脚本语言,其致命缺点是运行效率很低,但这个对于让学生入门编程为目的的授课过程来说也不算太大问题。 Python除了解决了学生学习编程的几大障碍之外,还有额外的优势,就是资料丰富,易于备课。网上比如Fenby.com等等都有详细的教材和视频资料。所以教师备课并不会特别困难。即便是没有接触过Python的授课老师掌握Python并用来授课并不会有什么困难,有其他高级语言基础,又有丰富授课经验,这种情况下大概也就一两个小时就能掌握Python的框架。
国内很多高校在本科和硕士阶段开设的编程课依然还是以C++和VB为主,讲授的内容也普遍停留在上世纪末的状态。而国际上以斯坦福、哈佛、普林斯顿等等所谓世界一流高校,都往往会提供更多种类以及更多层次区分的计算机课程。这些编程课程中最热门的正是Python。 国内很多高校都说要办世界一流的学校,而在具体课程设置上面,却偏偏依然在坚持一些旧的特色:古板、过时、落伍、僵硬无趣。 不知道他们是真的想办好大学,还是只是说说而已。
预览时标签不可点