谈编程纳入高考范围 从娃娃抓起
![](/uploadfile/2013/1225/20131225014434254.jpg)
文/李玮
当英语退出高考让众多学生欢呼的时候,近期一篇报道,建议将编程纳入高考高考范围,大家怎么看。
实际上,关于“编程应当从娃娃抓起”这一问题,过去几年已在欧美得到广泛讨论。不支持这一做法的人常常会提出的一个论据是:乔布斯也不会写代码,甚至没有获得过工程类学位,但他仍取得了巨大成功。
这一问题的重点在于,如果想成为乔布斯式的人物,你能否找到“自己的史蒂夫·沃兹尼亚克”?乔布斯拥有提出概念和硬件设计方面的天才,因此可以完美地与沃兹尼亚克这样的软件工程师合作开发出想要的产品。此外,尽管不是传统意义上的“骨灰级程序员”,但乔布斯的技术能力也很强,仅仅只是被沃兹尼亚克这一方面的光芒所掩盖。乔布斯只有一个。如果会编程,那么可以从事与甲骨文CEO拉里·埃里森和Facebook CEO马克·扎克伯格一样的创业活动;如果不会编程,也不具备乔布斯的才能,那么如何在科技行业立足?
不仅仅是工程专业,关于文科、理科、工程和艺术等专业的学生是否应当学习编程,大部分人的看法是肯定的。以下为主要原因:
1.学习编程有助于理解原则,同时分步骤解决问题
我们如何利用技术去解决能源、环境、城市、健康和教育等方面的问题?学习编程是一个好方式。这里以艺术专业为例。艺术专业学生通常倾向于从宏观角度来看问题。例如在城市规划中,规划人员需要思考如何在建筑、环境和交通等方面实现可持续发展,相关工作非常繁琐。在这一过程中,许多编程工具可以带来帮助,包括用于数据可视化的JavaScript框架D3。
规划人员可以收集有关多少土地可被用于城市绿地的数据,并基于D3框架进行可视化处理。实现这一目标需要完成许多后端工作,包括从哪里收集数据,如何以符合统计学原理的方式来组织数据,在可视化的过程中如何配色,如何基于公式来简化数据。与此同时,规划人员还需要兼顾可视化工作是否符合总体项目。简单来说,这一工作实际上是一个包含分析问题和解决问题在内的逻辑思维过程,而编程是思维过程的具体体现。
从更高的层次来看,在编程时规划人员所做的主要是为了获得更直观的信息,以帮助决策。程序有助于更好地“讲故事”。一个故事的要素通常包括概要、循序渐进的叙事方式以及人物。而编程语言的一系列组成部分,包括指令、if语句、变量属性及循环,可以扮演故事要素的角色。如果能更好地讲故事,那么就能更好地决策。
2.未来一个世纪,超过40%工作可被机器取代。成为机器的主人,否则就被淘汰。
社会发展速度很快。在新经济环境下,除非掌握新的计算技术,否则很难适应社会。设计大师唐·诺曼(Don Norman)曾写过《设计心理学》和《未来产品设计》两本书,其中一个主要观点是:最优秀的机器不会帮你完成一切,而是帮你更好地决策,人类应当利用这些机器使自己更聪明。那么具体方式是什么?还是编程。如果需要与这些机器互动,或是进入一个极度依赖机器(包括智能手机和计算机)的经济环境,我们需要知道如何操纵这些机器。
实际上,这些机器能完成的工作远超出科技行业的范畴。《哈佛商业评论》曾在一篇文章中指出,科技能与许多行业形成互动。文章称:“我们开发的软件可用于多个垂直行业,例如汽车、医疗以及公共服务。这些行业都有不同的需求和目标。因此在讨论多样性时,主要是指客户、工作及背景的多样性。在曼哈顿街头,你能遇到许多专业人士。将他们集合在一起,你将发现一个拥有丰富技能和经验的人才库,这是硅谷难以匹敌的。当这种专业的多样性遭遇软件工程天才时,才能推动突破性的创新。”
举一个简单的例子。在许多公司,人们都会花很多时间向Excel表格输入数据,某些时候数据源为客户文件。在这种情况下,文件中的数据往往是可分析的,例如.csv文件。如果不懂编程,那么即使是名校毕业生也需要把大量时间浪费在复制粘贴数据的操作上。而如果掌握了VB这样的简单语言,整个工作就可以自动化。无论何时获得多大的数据文件,只要运行一遍代码,所有数据就可以被导入Excel表格中。
而另一个例子是许多大学课程设置中的数值计算。大学之所以开设这样的课程是为了告诉学生,如何使用程序重复处理大批量数据。回顾在大学研究室中的生活,我们可以发现最具效率的同学往往编程能力都很强,他们可以使用Perl或VB等语言来分析文件或处理数据,并输出一个可被其他程序识别的结果。尽管这些脚本程序并不复杂,但这有助于完成许多日常工作,节约大量时间用于思考问题或从事其他方面的学习。
简而言之,如果希望脱颖而出给世界带来不同,那么编程是一项必要技能。
不过,仍有许多业内人士反对将编程作为一种通识教育。其主要理由包括:
1.编程不是目的。软件开发者的终极目标并非写代码,而是开发解决方案。强调编程是一种舍本逐末的行为。
2.编程是一类方法。强调方法而弱化问题解决将带来困扰。一方面,在解决问题时,作为方法的具体代码并不是唯一的,因此如果不考虑代码效率很难对优劣进行判断,而代码效率问题已可以被硬件的快速发展所解决。另一方面,由于解决问题的方法众多,代码的可阅读性一直是困扰程序员的一大问题。对于Perl等脚本语言的开发者,这样的问题尤为明显。此外,强调方法往往导致人们忽略对问题的深入研究,你是否能保证程序在任何情况下都真正解决了问题?
3.泛泛学习编程无助于事。一些科技公司的人士反映,尽管许多人自称从事软件开发工作,但实际上编程能力很弱,因此对团队的帮助很有限,甚至带来负面作用。此外,尽管可以通过短平快的方式了解一些语言,例如Perl,但真正运用好这些语言需要花很长时间。而达到这样的水平是无法通过短期培训或通识教育实现的。
在以上讨论中,支持编程学习的人士大多从思维训练和时代发展的角度来看待问题,而反对者通常着眼于编程本身是否有意义。毫无疑问,编程并非所有人都会每天去做的工作,但掌握这一技能也可以满足不时之需,提升工作效率。如果不考虑是否有利于眼前工作这样的短期功利性因素,那么学习编程不失为一种培育学生综合素质的好方式。
不知道同学们都怎么看待呢。
【谈编程纳入高考范围 从娃娃抓起】相关文章:
上一篇 : 学生外出娱乐场所 老板们 下一篇 : 重庆大二学生自制汽车 网