近期一则新闻引起了笔者的注意,这个新闻的内容是这样的:从2018年开始,浙江省信息技术这门课程中的编程语言将由VB(Visual Basic)改成Python。这个改动意味着在浙江省高考的"技术"这一门课程中,Python将成为一个考试项目。 笔者的第一反应是,中国也终于开始向美帝学习普及编程了吗?但笔者仔细一想,在这之前,高中时期的学生实际上也是有机会接触到编程的,一方面数学教材中纳入了一小块编程的内容,另一方面虽然各省市的教材不同,但在高中时期学生还是可以从信息技术课上接触一下编程。如果国家有"编程从娃娃抓起"的想法,实施起来实际上并不难。浙江省的高考这么改,在笔者看来另有目的。 目前国内高中的教育并不看重编程,毕竟编程高考不考。即使学生通过课程或课外兴趣小组/社团等接触了一些编程知识,但是由于大多数学生接触到的都是VB、Pascal等编程语言,因而在学生真正进入大学后学生往往会遇到自己学过的编程语言都用不上的窘境,因为VB、Pascal等语言虽然作为教学用确实很不错,但是它们已经跟不上时代了。 在笔者看来,真正推动浙江省在高考中用Python取代VB作为教学用编程语言的最大原因是因为国家最近对人工智能的重视。 最贴近人工智能的语言 Python是最贴近人工智能的语言,这一点与Python的特性有关。 Python相较于其它编程语言的一大优点是Python在各种开发场景中都能用上,不论是Web开发、爬虫、数据分析与挖掘、机器学习、并行计算、科学计算等都可以用Python作为主要编程语言进行开发。这实际上得益于Python特别丰富的库,包括强大的数学计算库numpy、机器学习库scikit-learn等等,在这些库的基础上程序员可以使用Python更为简便、快速地构建自己的程序,特别是需要复杂数学运算的程序。 其次Python对程序员特别友好,它并不像C++一样写出的代码冗长而且晦涩难懂。随着目前机器算力的不断提升,不同编程语言在运行效率上的差异已经特别小,而Python语法上的简洁可以极大地提升程序员的开发效率,极大地节约程序员的时间,因而在编写人工智能这类大型、复杂的程序时,Python就具有先天的优势。 正是基于Python的种种易用性以及其丰富的库资源,目前世界上主流的深度学习框架,如Tensorflow、PyTorch、Caffe等都是使用Python进行开发的,在这个基础上,目前世界上的人工智能程序大多数都是基于Python编写的,只有一小部分是采用C++编写的。 在这些深度学习框架中有的框架其底层程序是采用C++编写的,在应用层上它提供了C++的编程接口,故C++的程序员也可以使用该框架,C++更主要用于于深层次的算法开发,在应用开发效率上C++是比不过Python的。 说得简单一些,目前火热的概念如"人工智能"、"大数据"等都离不开Python,Python是最接近这些新技术的编程语言。 因而浙江省决定用Python取代VB来进行教学,其最终的目的还是为了与国家的政策、与时代接轨,让学生进入到大学后可以直接学习更深入的编程知识,进而让学生能更快地投入到人工智能方面的实际开发中。 上手简单 目前国内大学计算机专业主要教的还是C/C++,所以基于目前大学的教学情况来看,从高中开始教给学生一些C/C++的基础能更有利于学生在大学的学习。除此之外,假如学生在高中就已经入门了C/C++,那么在大学的教育中学校则可以更快地教学生更深层的知识,这样一来学生的编程能力可以得到更快的提升。 但是结合C/C++的语言特性和目前高中的教育形式,在高中就教给学生C/C++是完全不可能的。 入门C/C++对于一个对电脑操作都不是很熟悉的学生来说是一个漫长而又艰难的过程,C/C++的语法复杂,而且C/C++和硬件结合得更为紧密,所以在学习C/C++的时候往往还需要学习一些计算机其它方面的知识。这对于一个学业繁忙的高中生来说简直就是一个噩梦。 而入门Python则完全不同了,掌握Python的语法是特别简单的一件事情,通过自学Python官方的文档都可以基本掌握Python的用法。 有网友整理了一张Python的脚本说明图,这张图涵盖了Python的各种基本语法: 配合百度或是Python的官方文档完全看懂这张图,那么恭喜你,你已经入门Python了。 综上所述,在高中使用Python作为教学编程语言是完全合理、可行的一件事情,一方面老师不用花特别大的精力在为学生解答各种各样奇怪的问题上,另一方面学生学得快、懂得快,进而他们可以根据自己的兴趣运用Python干更多的事情,这对于学生的全面发展来说是很有益处的。 教到什么程度 那么问题来了,学生在高中学习生活中能分配给学习编程的时间是十分有限的,因而学校到底能教到什么样的程度呢? 从目前浙江省的考试标准来看,学生要至少学习到数组相关的知识,包括排序算法。这就意味着学生至少要学习完基础的入门知识,这对于学生的发展来说是很不错的。 不过由于目前只有浙江省实行了这一套方案,其他省市还没有进行相关的改革,所以放在全国来说,大学的教学并不会因为浙江省的这一改革而进行什么太大的改变。除此之外浙江省的"技术"这一门课程并不仅仅只学Python,这门课程要学习的内容是学生自己选的,假如很多学生认为编程很难而不选学Python,那么这个改革最后只会沦为纸上谈兵。 不管怎么说在笔者看来这都是一件好事,因为终于有地方政府开始重视在大学之前的阶段进行编程方面的教育。实际上在国内想要推进编程方面的教育是十分困难的事情,因为在目前很多家长的眼中,IT行业是一个非常费力不讨好的行业,而且由于早年电脑的"被妖魔化"导致编程教育和很多家长的固有理念相违背,这就导致相关的教育很难推进,很难得到家长的认可。 除此之外高中的学生们也面临着极大的升学压力,在社会竞争越来越激烈的今天,学生们面对改革后的高考也是压力山大。在课余时间少得可怜的情况下,愿意在学校的学习任务之外学习其他知识的学生真的太少。 在这种情况下,"编程从娃娃抓起"在国内就变得特别不现实,对于高校来说,要么放慢课程的速度让学生一步步适应编程、体验编程,要么采用填鸭式的教育追求完成教学进度。不论是哪一种,对于绝大多数本科生来说都是不利的。 真希望有一天编程能成为一门正统的科目出现在高考的考场上,在这个由互联网或者说由人工智能引领的时代,编程可以说是每一个年轻人都多少要了解或是掌握的基本技能。会编程的人在这个时代往往会更容易生存一些,毕竟未来人工智能会取代越来越多现有的工作岗位,而这些工作岗位中最后一个被取代的应该就是程序员了吧。 最后值得一提的是除了浙江省高考,全国计算机等级考试中编程内容使用的编程语言也改成了Python,笔者猜测着也和国家今年重视人工智能发展的导向有关。 如果在看本文的你是一名有意向从事人工智能方面工作的学生,那么笔者给你的建议是趁着还年轻,赶紧学Python。在出现更好的编程语言之前,Python不论是在人工智能还是大数据等领域都是主流。除此之外人工智能这方面在国内有很大的发展空间,在未来这方面的就业机会很多,连Google都在国内建立了AI方面的研究团队,国内人工智能行业的前景可想而知。