code.club

標題: 编程不只是技术,高考应有计算机一席之地<轉> [打印本頁]

作者: 21333    時間: 2014-10-22 20:35
標題: 编程不只是技术,高考应有计算机一席之地<轉>
2013年12月17日 08:42    创事记 微博 作者: 手稿2012    我有话说(3,114人参与)

前几天,全球近百国家领导人亲临曼德拉葬礼现场,美国总统奥巴马和古巴领导人劳尔·卡斯特罗握手,让我们看到了伟大的人格和主义可以超越种族、文化与意识形态的藩篱。而本周美国科技界最大的新闻,code.org发起的“编程一小时”活动,同样也让苹果、微软、Facbook和亚马逊这些死对头们坐在了一起。奥巴马为此专门录制了视频,他呼吁全民写代码,“编程关乎美国的未来…我们需要孩子们熟练地掌握这些技术”。

奥巴马的呼吁不仅在美国科技界引发广泛呼应,中国的互联网人士也对此大加褒奖,雷军在微博上甚至表达了自己的惊喜。其实在30年前的中国,邓小平同志在上海视察时就发出了“计算机普及要从娃娃抓起”的号召,这则故事还被写入了人教版的小学教材。然而30年后,已经没有多少人记得了。


编程不只是一门技术

长期以来,无论在中国还是美国,都将编程视为一门职业技能。科技产品发展的趋势也在弱化编程的作用,多年前的DOS命令,甚至是五笔字型,都具有某种编程的色彩。而如今在iPhone和iPad上,人们只需要简单挥动手指。但是不能回避的是,在任何专业领域,无论是自然科学、还是管理和工程领域,都需要从业者至少拥有基本的编程知识和计算机基础。

有人认为编程只需要少数开发者掌握,普通人学会使用软件即可。建议高考取消数学的人也是同样的逻辑,韩寒认为数学学到初二就可以,后来他纠正了这个看法,认为只用学到初一。“上街买菜需要学习函数和几何吗?”,我们的教育难道就只是教会你上街买菜?每个人都应该在某一领域成为某种意义的专业人员。NBA全明星球员波什在参加“编程一小时”活动时表示:编程一开始只是自己篮球生涯的备胎。在收获了成功的篮球生涯之后,他仍然保持着编程的习惯,“(现在)学习编程对我来说,是理解这个世界运转的方式”。

在Excel上使用宏和函数,在Windows上批处理文件,甚至于自定义你的搜索方式,在某种意义上都是一种编程。对于工作来说,编程意味着你可以改进方法、加快进度,并以最简单的方式重复和分享这些经验。对于生活,编程可以是一种表达的方式,类似于写作。你可以把自己的见解和看法打包成Web或者App,以最丰富多样的形式感染别人。

高考中应有计算机一席之地

程序的实质是语言,计算的核心是数学,既然数学和两门语言都是基础教育最重要的学科,那么计算机和编程知识理应在基础教育中占据一席之地。很多人怀疑,过早的让孩子接触编程,是否是拔苗助长,或者会扼杀他们学习的积极性?美国科技界巨子大多数都是少年成名,乔布斯和沃兹结缘于高中,伊隆·马斯克15岁就自己开发了游戏。比尔盖茨和扎克伯格,无不是中学时代就开始接触编程。

波什在接受采访时说“如果早知道编程可以改善成千上万人的生活,会更早激发我的兴趣”,“我会教育孩子计算机和编程,越早越好”。在中国,我们见惯了各种少年沉迷游戏或者伤仲永的例子,也没有听说因接触编程而毁掉前程的故事。给邓小平同志演示计算机的男孩叫李劲,他目前就职于微软亚洲研究院,成为张亚勤的左膀右臂。张亚勤本人,还有15岁进入华中科技大学,27岁当上华为副总的李一男,都是鲜活的例子。

高考是基础教育的“指挥棒”,最近英语高考形式的改革就引发了弱化英语教育的担忧。如果在高考中以某种形式引入对计算机的考查,可以引发社会的重视,甚至可以引领高考改革的进程。从学科的角度来看,计算机科学本身就是英语、数学和逻辑的运用。从考试的角度来讲,计算机科学的评价标准更多样化,也更适合使用互联网和计算机改善考试方法、净化考试环境。

编程的门槛应当降低

当然还有人担心编程进入基础教育会引发教育不公,城市特别是一线城市的孩子有更多的机会接触计算机。高考英语听力就是以如此理由被取消的。然而95后们已经被视为“iPad一代”和“原生移动互联网一代”,即使是在偏远的农村地区,电脑也是年轻人结婚必不可少的家当。30年前邓小平同志的倡议可能还只是高瞻远瞩,而此时再拖延计算机科学的普及,才是对下一代最大的不公。


电脑和宽带业务对于一些低收入家庭来说仍然是一笔负担,PC加Visual Studio的组合价值数千美元,然而目前在欧美极客家庭中流行的树莓派只有35美元。树莓派和Arduino这样的开发板不仅能够让孩子们学习编程,而且还可以通过和各种硬件的组合来实现生活中的创意。谷歌也推出了coder项目配合开发板使用html语言来进行编程。未来一台廉价平板电脑、一枚方寸之间的开发板,再加上公共场所免费提供的互联网,就可以撑起一个孩子改变世界的梦想。这些简单廉价的硬件同时也可以配合MOOC在线教育平台,让低收入家庭享受到一些优质的教育资源。

这些年来,无论是环保、动物保护、女权主义还是科技产品。大洋彼岸的潮流总能在中国掀起同样的波澜,但是这一次,在美国有数千所学校和百万学生参与的“编程一小时”活动,在国内基本没有引发成规模的回应。互联网和计算机带给中国人从前难以想象的便利、公开和平等。不仅决策者和互联网巨头要看到普及计算机科学巨大的经济和社会效益。公民们也应该身体力行参与到这一运动中来,我们能够给予下一代的,难道只有一罐干净的奶粉吗?

作者: 21333    時間: 2014-10-22 20:36
也谈编程进高考:学编程是否适合所有人?

文/李玮

  近期创事记的一篇报道建议将编程纳入高考范围。实际上,关于“编程应当从娃娃抓起”这一问题,过去几年已在欧美得到广泛讨论。不支持这一做法的人常常会提出的一个论据是:乔布斯也不会写代码,甚至没有获得过工程类学位,但他仍取得了巨大成功。

  这一问题的重点在于,如果想成为乔布斯式的人物,你能否找到“自己的史蒂夫·沃兹尼亚克”?乔布斯拥有提出概念和硬件设计方面的天才,因此可以完美地与沃兹尼亚克这样的软件工程师合作开发出想要的产品。此外,尽管不是传统意义上的“骨灰级程序员”,但乔布斯的技术能力也很强,仅仅只是被沃兹尼亚克这一方面的光芒所掩盖。乔布斯只有一个。如果会编程,那么可以从事与甲骨文CEO拉里·埃里森和Facebook CEO马克·扎克伯格一样的创业活动;如果不会编程,也不具备乔布斯的才能,那么如何在科技行业立足?

  不仅仅是工程专业,关于文科、理科、工程和艺术等专业的学生是否应当学习编程,大部分人的看法是肯定的。以下为主要原因:

  1.学习编程有助于理解原则,同时分步骤解决问题

  我们如何利用技术去解决能源、环境、城市、健康和教育等方面的问题?学习编程是一个好方式。这里以艺术专业为例。艺术专业学生通常倾向于从宏观角度来看问题。例如在城市规划中,规划人员需要思考如何在建筑、环境和交通等方面实现可持续发展,相关工作非常繁琐。在这一过程中,许多编程工具可以带来帮助,包括用于数据可视化的JavaScript框架D3。

  规划人员可以收集有关多少土地可被用于城市绿地的数据,并基于D3框架进行可视化处理。实现这一目标需要完成许多后端工作,包括从哪里收集数据,如何以符合统计学原理的方式来组织数据,在可视化的过程中如何配色,如何基于公式来简化数据。与此同时,规划人员还需要兼顾可视化工作是否符合总体项目。简单来说,这一工作实际上是一个包含分析问题和解决问题在内的逻辑思维过程,而编程是思维过程的具体体现。

  从更高的层次来看,在编程时规划人员所做的主要是为了获得更直观的信息,以帮助决策。程序有助于更好地“讲故事”。一个故事的要素通常包括概要、循序渐进的叙事方式以及人物。而编程语言的一系列组成部分,包括指令、if语句、变量属性及循环,可以扮演故事要素的角色。如果能更好地讲故事,那么就能更好地决策。

  2.未来一个世纪,超过40%工作可被机器取代。成为机器的主人,否则就被淘汰。

  社会发展速度很快。在新经济环境下,除非掌握新的计算技术,否则很难适应社会。设计大师唐·诺曼(Don Norman)曾写过《设计心理学》和《未来产品设计》两本书,其中一个主要观点是:最优秀的机器不会帮你完成一切,而是帮你更好地决策,人类应当利用这些机器使自己更聪明。那么具体方式是什么?还是编程。如果需要与这些机器互动,或是进入一个极度依赖机器(包括智能手机和计算机)的经济环境,我们需要知道如何操纵这些机器。

  实际上,这些机器能完成的工作远超出科技行业的范畴。《哈佛商业评论》曾在一篇文章中指出,科技能与许多行业形成互动。文章称:“我们开发的软件可用于多个垂直行业,例如汽车、医疗以及公共服务。这些行业都有不同的需求和目标。因此在讨论多样性时,主要是指客户、工作及背景的多样性。在曼哈顿街头,你能遇到许多专业人士。将他们集合在一起,你将发现一个拥有丰富技能和经验的人才库,这是硅谷难以匹敌的。当这种专业的多样性遭遇软件工程天才时,才能推动突破性的创新。”

  举一个简单的例子。在许多公司,人们都会花很多时间向Excel表格输入数据,某些时候数据源为客户文件。在这种情况下,文件中的数据往往是可分析的,例如.csv文件。如果不懂编程,那么即使是名校毕业生也需要把大量时间浪费在复制粘贴数据的操作上。而如果掌握了VB这样的简单语言,整个工作就可以自动化。无论何时获得多大的数据文件,只要运行一遍代码,所有数据就可以被导入Excel表格中。

  而另一个例子是许多大学课程设置中的数值计算。大学之所以开设这样的课程是为了告诉学生,如何使用程序重复处理大批量数据。回顾在大学研究室中的生活,我们可以发现最具效率的同学往往编程能力都很强,他们可以使用Perl或VB等语言来分析文件或处理数据,并输出一个可被其他程序识别的结果。尽管这些脚本程序并不复杂,但这有助于完成许多日常工作,节约大量时间用于思考问题或从事其他方面的学习。

  简而言之,如果希望脱颖而出给世界带来不同,那么编程是一项必要技能。

  不过,仍有许多业内人士反对将编程作为一种通识教育。其主要理由包括:

  1.编程不是目的。软件开发者的终极目标并非写代码,而是开发解决方案。强调编程是一种舍本逐末的行为。

  2.编程是一类方法。强调方法而弱化问题解决将带来困扰。一方面,在解决问题时,作为方法的具体代码并不是唯一的,因此如果不考虑代码效率很难对优劣进行判断,而代码效率问题已可以被硬件的快速发展所解决。另一方面,由于解决问题的方法众多,代码的可阅读性一直是困扰程序员的一大问题。对于Perl等脚本语言的开发者,这样的问题尤为明显。此外,强调方法往往导致人们忽略对问题的深入研究,你是否能保证程序在任何情况下都真正解决了问题?

  3.泛泛学习编程无助于事。一些科技公司的人士反映,尽管许多人自称从事软件开发工作,但实际上编程能力很弱,因此对团队的帮助很有限,甚至带来负面作用。此外,尽管可以通过短平快的方式了解一些语言,例如Perl,但真正运用好这些语言需要花很长时间。而达到这样的水平是无法通过短期培训或通识教育实现的。

  在以上讨论中,支持编程学习的人士大多从思维训练和时代发展的角度来看待问题,而反对者通常着眼于编程本身是否有意义。毫无疑问,编程并非所有人都会每天去做的工作,但掌握这一技能也可以满足不时之需,提升工作效率。如果不考虑是否有利于眼前工作这样的短期功利性因素,那么学习编程不失为一种培育学生综合素质的好方式。




歡迎光臨 code.club (https://code.club/) Powered by Discuz! X3.2