中国大学应该广泛尝试用Python来教编程
The picture shows a Koch curve,which may be familiar for those who know something about fractal. It is an example form an excise of the book Think Python Chapter5's sample solution.
图片是Koch曲线,熟悉分形的同学肯定对此很了解。 这是大胖翻译的ThinkPython这本教材中第五章的最后练习题样例代码生成的图案。
I am always a fan of coding, because all I learn from a programing class can be tested immediately. I can find out whether what the teacher says is right. So I put a lot of efforts into programing both in my college years and my postgraduate period. I really enjoy coding a lot.
我对编程一直很热衷,因为学到的内容都是可以拿来用的,我能随时来检测老师讲的内容,不会有一些难以把握正确与否的情况。因此编程课是本科和硕士时代我投入精力最多的课程之一,也是我很喜欢的一门课程。
Unfortunately, coding is not everyone's love.
然而蜜糖砒霜。
Programing class is like some horrible nightmare for many of my classmates. Some of my friends even attended and failed a C++ class for several times. They often say that they have no chance to code in daily life and do not understand why they are forced to take a programing lesson. They are not interested in anything related to programing. They even begin to hate everything about computer science. So some of the students begin to do something dirty, like copying others' code as their homework or cheating in the exams.
对于很多同学来说,编程课简直是痛苦的噩梦。一些同学甚至多次参加某一门编程课而挫败感极其强烈。他们往往认为编程课没有什么用处,也没有太大兴趣,因此非常反感,学习效果可想而知。也因此有一些应付作业应付考试的现象出现。
Of course, there are always some people trying their best to learn coding. However, for most of them, their majors are so far away from C++ or VB that the skills they learned about programing may never be used in their future. So they just forget what they learned some years after the lessons.
当然还是有一些人真的用心学习了,但往往因为自身的专业与C++或者VB之间很少有交集,而且掌握的基本内容也不足以参与一些日常开发,所以在上课之后的数年之内都很难有实践的机会,学到的内容也就只能逐渐荒废了。
Some others were stuck at some panic point of the programing language such as the memory control or the address of a value. Then they gradually lost their motivation and curiosity about the lesson, and did not make any effort.
此外,回想身边同学当年在研一时候学C++时候的状态,很大一部分人都是对语言本身的一些特点理解不够,在某些复杂的地方卡住了(比如内存管理或者地址等等),逐渐因为挫败感而失去动力了,对编程本身也没有能够培养出兴趣,更谈不上学到多少技能了。
Having no motivation of coding, getting no chance of practicing, and being trapped by some complicated part of a programing language, those are the three killers which should be responsible for boring the students in China in coding lessons.
觉得没有用而缺乏兴趣,没有实践的机会而逐渐荒废,被一些复杂内容困住而失去动力,这就是国内高校学生面对编程课的情景。
I used to help some of my classmates on the coding lessons during my college years and my postgraduate period. I found that they were all bothered by those three problems. I felt very sorry that they had to spend a lot of time on lessons they hated and they even wouldn't use anything from the lessons.
当年在本科乃至硕士上编程课的时代,我曾经若干次给身边一些同学进行过辅导,深深感觉他们都受到上述三个问题的困扰,而难以在编程课程方面有太大的兴趣和收获。对此我也没有什么办法,只能觉得特别遗憾,感慨他们花费时间去学习一门自己不喜欢、也没机会应用,并且还特别难的课程。
I haven't found any solutions until I met up with Python. I never give up coding since my college time. I am not a good coder at all, but I keep trying to be a better one than I used to be. I wrote some Android applications and some simple calculation functions. Then during my PHD period, I learned something new, Java, Swift, Qt-Quick , and Python.
最近我才意识到一种可能的解决办法——Python。 从本科时代到现在我一直都没有远离编程,比如写一些Android程序或者简单的算法之类,都很肤浅,但从未扔下,并且随着论文和科研的需要,逐渐学了一些新的内容,比如Java、Swift、QT-Quick,以及Python。
I found that Python is friendlier for NON-Computer Science major students as an introduction language to programing world than C++ or Java. Python is easier to teach, learn, and use. After learning Python, students could immediately use it on their own research, and on some GUI projects or scientific calculations.
我发现Python相比C++与Java,更适合给非计算机专业的本科生和硕士生作为编程入门语言来教学,授课难度更低,学习几乎无门槛,上手最简单的,学会了之后也能立即在图形化编程或者科学计算中进行使用。
Firstly, Python is very easy to use on making something for fun without spending much effort on learning a lot of details about the language. Take the Koch curve at the beginning as an example, it is not very hard to do something like that. You can make it happen after you reading about one or two chapters of any textbooks of Python.
首先Python很有趣,能做很多有趣的事情,需要在语言本身上投入太大的时间精力。比如本文开头那幅图,画出来的过程并不复杂,但是实现的过程很巧妙,对思维和数学逻辑都有训练。
Secondly, Python is used everywhere. There are many Python programs running in the real world. It is used in scientific research, website building, graphic development and cross-platform development. The use of Python could also be found in many majors. Students can practice all they learned in their own area, and use Python in real life.
其次Python应用广泛,世界上有各种各样的Python项目,科学计算、网站搭建、图形界面、跨平台开发等等领域都有Python的身影。各个学科中也都充满了在实践中使用Python的机会。同学们一旦掌握了Python,就能迅速做出一些在现实世界中的各个领域都可以发挥作用的程序。
Most importantly, Python is a lot easier than C++, Java, and VB. The code of Python is almost as easy to read as simple English. There isn’t any huge challenge in the language itself for the learners to conquer.
最重要的是Python的学习难度相比C++或者Java乃至VB这些国内比较普遍的编程语言来说,要简单很多很多。代码清晰可读,几乎就是缩进过的英语而已。这种特点可以更快速地让学生投入精力到探索编程过程中,而在语言本身上,不用花费过多时间。
Of course, Python is not perfect. The fatal flaw of Python is that it is a scrip language and runs much slower than C++ or even Java. But this disadvantage doesn't hamper us using Python as an introduction language for coding.
当然,Python并不是万能的,作为脚本语言,其致命缺点是运行效率很低,但这个对于让学生入门编程为目的的授课过程来说也不算太大问题。
A huge advantage of Python is the abundance of material for teaching. A lot of books and videos could be found on the Internet. It is easy to gather information and prepare forlessons. With the programing and teaching experience, teachers can grasp the core of Python quickly and use it well in classes, even for those who never meet Python before.
Python除了解决了学生学习编程的几大障碍之外,还有额外的优势,就是资料丰富,易于备课。网上比如Fenby.com等等都有详细的教材和视频资料。所以教师备课并不会特别困难。即便是没有接触过Python的授课老师掌握Python并用来授课并不会有什么困难,有其他高级语言基础,又有丰富授课经验,这种情况下大概也就一两个小时就能掌握Python的框架。
In China, C++ or VB are still used in most universities for both college students and postgraduate ones. Teachers in those lessons still use some methods from last century. In the top universities of the world, such as Stanford, Harvard, Princeton, and others, different languages are provided to students, of which Python is the most popular one.
国内很多高校在本科和硕士阶段开设的编程课依然还是以C++和VB为主,讲授的内容也普遍停留在上世纪末的状态。而国际上以斯坦福、哈佛、普林斯顿等等所谓世界一流高校,都往往会提供更多种类以及更多层次区分的计算机课程。这些编程课程中最热门的正是Python。
Many universities in China are trying to become top ones worldwide. But the lessons they offer are still the same as the past, which are outdated and boring. They should learn from the top ones by using Python as a beginning. I don't know whether they really want to make a difference or they just enjoy shouting out some slogans.
国内很多高校都说要办世界一流的学校,而在具体课程设置上面,却偏偏依然在坚持一些旧的特色:古板、过时、落伍、僵硬无趣。 不知道他们是真的想办好大学,还是只是说说而已。