❏ 站外平台:

编程是否应该成为一门基础学科?

作者: 陈一斌

| 2015-02-18 11:28   评论: 27 分享: 19    

本文节略自爱范儿副主编陈一斌的同名文章

matrix

尽管这个问题还不够 20 个字,但却很难回答。它涉及以下几个问题:

  1. 编程适合成为基础教育科目吗?若要成为基础学科,编程教育是希望达到怎样的目的?
  2. 若让人更早地接受编程教育,那么编程教育应该是算哪种类型的教育?
  3. 在大量计算机学院毕业的大学生,却往往缺乏相关的职业技能的情况下,中国教育的体制,适合推广编程吗?
  4. 基础教育学科设立的背后,需要怎样的社会环境,才能得以顺利推广?

我采访了 20 位以上不同背景的人,询问他们赞同或反对这个观点,以及赞同与反对背后的理由。这些人当中,有的是开发者,有的是开发者当中重视技术教育的,有的是非开发者但注重运用技术工具的,也有的是非开发者而且也对科技兴趣了解不深的人,也有的是非开发者初为人父人母的……我试图站在更多立场来看待“编程是否应当成为基础教育”的问题。

以职业技能的观点来看,编程并不适合作为基础学科

我在总结采访对象对该问题的态度时,发现不少人试图先定义“编程”作为一种教育,应当实现怎样的目的,而后再谈及编程是否应当成为一种基础教育。有趣的是,不管是支持或反对,他们并不不认为如果把“编程”作为一种职业技能来培训会产生很大的价值。

曾在爱范儿开辟“断章”专栏,现在担任一家公司 CTO 的陶醉,反对编程应当作为基础教育的一部分。他认为,“从培养基础学习能力来说,编程是应用技术,远不如数学、文学、外语、自然对任意国家的孩子来得重要。从培养技术工作能力来说,第一,如果他不从试着行业没有必要,如果他从事这个行业的话,更新换代又太快,掌握皮毛浪费学习时间和精力。”

哈佛尼曼学者、专栏作家安替也表达了同样的忧虑,“最大的问题是,如果推广的程序语言过时了怎么办?C 语言当年多少文科生在学啊,现在有什么用?行政推广一个本由竞争出来的语言肯定有问题。”

前 DoNews CTO、盛大创新院高级研究员,现移居美国的霍炬,同样不支持编程应当成为基础教育。“编程本身并不是一门学科,而是很多学科和对其他领域知识的组合。所以,单单学会一种计算机语言表达,对于解决实际问题帮助不大。”

“它和数学物理不同,那些是科学的一部分。即任何时候对于一个没有数学概念的人,学习数学都要从最基础的部分开始,编程则不然,整个系统环境和方法是快速变化的。基础教育欠缺灵活性,学会的技能很快会过时。”

移动 QQ 的产品经理唐敬艺认为,没有必要过早展开编程教育,“大家天赋不同,何必强逼。需要用编程带来的服务,不代表需要学。就如需要吃饭,不必人学做饭。让有兴趣和天赋的人学习就好。基础学科,人文、历史、自然、科学语言即可。编程是专业能力,大学里让一部分人跟进就好。”

另外,在我的朋友圈当中,这个问题引发了一长串讨论。总体围绕在“编程变成基础学科之后,就一定能够激发人的创造性吗?”的问题上。一朋友认为,编程是一门工程性学科,偏重在前人制定的规则不断世界上,是试图排除不确定性的过程,跟基础类学科有很大的差别。而另一朋友则认为,编程作为一种工具,实际可以激发孩子的动手能力,让他们去创造自己喜欢的东西。

如果编程作为一门基础学科,可能帮助学生提高逻辑思维水平以及独立解决问题的能力

然而,如果编程不是作为一种职业技能来培训,而作为一种启蒙学科呢?几乎所有人都支持。

代码托管社区 GitCafe 创始人姚欣宇认为编程可以胜任基础教育科目。在他的观念里,基础教育的作用在于“教会一个人基本生活常识及各领域基础技能、解决问题能力和思维方式,以及面对失败的方法及如何通过这样的过程获得自信。”

“编程这件事情本身就是解决问题的代名词,如何系统化、逻辑地解决问题通过编程及其基础数学理论可以最好地教给受教育者。在学习编程的这个过程中,对于未知领域信息的搜索、获取及分析的情况会反复发生,这是在我们传统基础教育学科中极少遇到的情况,但是却是非常重要的一项基础能力,编程会无形之中不断强化一个人依靠自己的想法和力量找到解决方案的能力。

编程不总会一帆风顺,我们所写的代码会经常出现 bug,出现运行失败,或是未达到预期,在不断经历小挫折、debug 成功的路线循环中,一个人能够很好的培养起自己的自信,对未知的问题不再恐慌是非常重要的基础。”

理财应用 DailyCost 的开发者梁国鹏也认为编程应当作为一门基础学科对待,但他觉得编程应该是让人对计算机产生兴趣的敲门砖,这一点与姚欣宇的观点不一样:

“在当今计算机极大普及的背景下,一个国家的科技水平很大程度是由计算机水平决定的,这个水平不是使用计算机的水平,而是利用计算机、网络等手段解决更复杂问题的能力水平。而学习编程只是一个入门应该尽早的普及,引起孩子们的兴趣,带他们入门。”

我的身边一位初为人母的朋友和 KnewOne 的 CTO 李路、还有爱范儿产品总监李本卿,认为编程训练有助于学生逻辑思维的培养。李路说,“软件是人类能制造出的最复杂的事物(可高达 9 个以上抽象层次),编程基于逻辑,训练这方面的思维特别有效。”他还认为,“编程入门并不需要很多前置课程,但精通并不容易,这是基础教育的重要特征。”

编程成为基础教育的另一理由,技术已经渗透生活当中

正点闹钟 CEO 王颖奇认为,“整个世界已经由软件驱动,学习编程有助于理解这个世界的运行逻辑,不会再出现高铁站上有人指着自动售票机骂娘的情况。”

爱范儿黄姓编辑认为,“App、移动互联网已经成为生活不可或缺的一部分,就像过去建房子、修电灯、烹饪一样,学习编程也是应对生活、改变生活的基本技能。”

而“教育大发现社区”联合发起者、北京师范大学教师庄秀丽也抱有同样的看法。“我对奥巴马的观点表示认同,因为奥巴马在表达要学习编程的时候,并没把否认或降低其他一些基本素养培育的重要。”

“未来的世界,是数字化的世界,人类各种信息的开发和存储,都在借着数字化的编程方式,表达、传播、加工。从这个角度来说,孩子从一出生,他所接触到的世界,就是被数字化符号编织和连接的物理世界。因此,当孩子有机会接触学习编程素养,会更好地帮助孩子理解和认识这个被数字符号连接的世界。”

从社会的角度看,若把编程转为基础学科,其后果可能是正面的

爱范儿的 CTO 张涤凡支持编程成为基础学科,“奥巴马总统提出将编程能力作为基础教育的一部分将是另一次对美国历史产生重大影响的决策。克林顿提出的国家资讯基础建设计划促使了美国最近二十年在信息技术方面领先全球的结果,而培训出拥有编程能力的一代人,对计算机行业的发展会提供更多人才储备。这可以通过二十世纪末二十一世纪初,互联网泡沫时期,因泡沫刺激学习 CS(美国人习惯将计算机专业缩写为 CS)的人才在次贷危机过后为充满活力的互联网创业公司提供了大量的人才储备,促进了湾区新一次的创业高潮的事实而得到证实。而且,这也将减少美国对于外籍高科技劳工的需求。”

姚欣宇认为,“基础教育中真正开始注重基础能力的培养,是拉开国家和国家巨大差距的因素。编程只是个最好用的工具和方式,而美国率先意识到了这一点,无论是处于政治作秀原因还是真的理解,这都会带来非常正面的效果。”

现在深圳被视为中国的“硅谷”,很大程度上要感谢 2006 那一年迎来了“山寨”狂潮——应对快速变化的市场环境,训练了大量技术过硬的工程师,形成灵活而高效的供应链分配。更重要的是,因为“山寨”,深圳可能聚集着世界上数量最多的硬件工程师,这是中国深圳可与硅谷比较的优势。

在中国应试教育的环境下,编程不适合作为基础教育学科

秒视 CEO 周凯雯说,“国内高中数学课程就有 Basic 编程的内容,主要是针对语法做了些讲解,高考这部分内容大概占 6 分,我们所示基础教育加入了编程,但是很明显没有多少人对这种流于表面不结合实际的编程教育有所受益。再好的东西用这种形式向学生传播,恐怕没有什么用。如果编程要推广成基础教育,还要看考试考不考,占多少分。”

如果编程成为基础学科,最大的挑战来自师资力量的不足

庄秀丽以教师的角度出发,解释技术教育推广会遇到的问题,“推广编程教育,实际上包含两部分的内容:一是思维方式上的,一是操作技术层面的。技术层面的内容,是具体的,是变化的,就像程序语言发展一样,是不端更替变化fvj的。操作技术部分的内容,就像现在一些中小学中,孩子们会用 Scratch 这款软件编程一样。然而,不容易推广的,是体现现在操作背后思维方式这个层面的内容。当然,如果有足够优秀的师资(能更胜任引导孩子进行编程的优秀老师),推广也就不会是很难的问题了。

“优秀师资的培育,也不是段时间就能够发展出来,师资能够发展也需要有相应的土壤。如何克服推中存在的这一难题,打破传统学校机制的壁垒,无论是通过哪种方式,让孩子们有机会跟各类科技创新企业或相关民间教育组织进行连接,有机会体验到由那些企业组织提供的各种教育服务。”

Python 中文社区创始人周琦认为,推广编程教育“唯一的困难是当前社会的整体对知识、信息、数据的态度是什么。如果普遍认为知识无用,数据不值钱,信息必须受到严格过滤,那么无论进行怎样的教育体制内编程教育引进,都无法引发出合理的当代信息素养。”

另外,姚欣宇提到,社会对编程认知的偏差,也是推广编程教育的障碍:“普通老百姓对编程这件事情的认知分为三种:1. 这东西是聪明人玩的东西;2. 我用不到编程这个技术,不需要学;3. 会编程的人修电脑应该很厉害。”

另外,他还注意到,编程技术的选择多样性,也构成对编程教育的阻碍,“在技术圈中,我们都会讲 PHP 是最好的语言这个笑话,几乎所有技术从业者都知道这是讽刺PHP语言各类设计问题的行业笑话。但是现实中,PHP 虽然在一些设计上落后甚至有缺陷,但这样的技术应用广泛,学了对找工作有好处,所以从教育体系的角度来说,这个时候就会遇到问题,到底是教社会上用的多的,还是注重基本功先教核心基础。技术领域的多样性导致编程其实是一个非常庞大的话题和体系。”

他认为,“可以组织一些面向社会层面的活动,让大众了解到编程是什么以及不是什么,还有它能够带来什么,关于编程技术体系庞大的问题,可以先制定标准的选修内容,然后根据兴趣和方向进行不同技术路线的选修。”

总结

关于编程是什么,不是什么,或许是另外一个非常值得讨论的话题。然而,从采访的结果来看,可以看到应对高度信息化的社会,有的人认为掌握编程思维、技能,可以帮助孩子更早的适应社会、适应世界。

然而,若从教育的基础学科来看,编程作为一种工程性很强的、与多种学科挂钩的学科,作为职业技能进入基础教育未必适合——工程技术飞速往前发展,知识结构常常需要迭代更新,仅仅 3、5 年就焕然一新。而几乎没有人认为,中国的应试教育体制,能够很好地推广编程教育。

总之,丁香园 CTO 冯大辉的观点会更加中立,“我不觉得编程应该是基础教育的一部分。倒是觉得,IT 技术的基本使用技能应该是基础教育的一部分。编程只是 IT 技术的一部分而已。”

确实,在一个连搜索都还搞不懂怎么样的国家里,提倡编程变成基础教育学科或许还是太早了。

PS:感谢所有接受我采访,并给出回复的人,由于篇幅的关系,相近的观点没有列出,再次感谢。



最新评论

[1]
来自 - 云南昆明 的 Mozilla/Mac 用户 发表于 2015-02-20 04:10 的评论:
真是作死,谁都能编程,那要程序员干嘛。编程本身就是一项极富创造性和挑战性的工作,并不是谁都能轻易掌握的。即便是JS,要想写好也不是容易的事。
linux 2015-02-20 21:48 回复
不会要求成为专业程序员,就和学数学和数学家的区别。。。
来自 - 日本 的 Chrome/Linux 用户 2015-02-20 01:41 回复
一群不懂编程的所谓砖家们又开始研究“编程是否应该成为一门基础学科”的问题了。  是啊  标题一定要酷炫神气才会剥夺别人的关注吸引眼球   提出这个想法的那位麻烦你自己先学会编程先了解计算机语言内部原理后再说。你自己一点都不会编程还混得好好的  就别再绞尽sb脑汁去剥夺本来就已经剩得不多的孩子们的时间了。医生不需要任何编程知识,就是在业余时间他们也没时间编程玩儿。律师也不需要,飞行员不需要,企业家不需要。 就连it公司老总也不是必须要会编程。。。  编程只是一种职业而已,感兴趣的人就去做。不是全国人民都必需要会的
来自 - 湖北咸宁 的 Chrome/Linux 用户 2015-02-19 23:52 回复
呵呵呵
微博评论 2015-02-19 02:33 35 回复
和音乐美术放在相同的位置,或者更高些。。
微博评论 2015-02-18 18:03 回复
值得考虑
来自 - 河南焦作 的 Mozilla/Windows 用户 2015-02-18 15:00 4 回复
这么说吧, 只要高考的地位不动摇,以分数看人的方式不改变,任何知识想加进来,都很困难
微博评论 2015-02-18 14:33 回复
小平同志不是说过么,计算机从娃娃抓起。长大了都去搬砖
微博评论 2015-02-18 14:03 回复
回复@造化不弄僵尸大阿叔:[喵喵][doge]
微博评论 2015-02-18 14:03 回复
回复@顾yc:我不用上学,我有钱,我不会的我摇人,,,,有钱必需任性,你懂得[笑cry] //@顾yc :回复@造化不弄僵尸大阿叔:请不要抨击江苏的高考制度,计算机也算是高考项目。江苏高考总分也就480,400多分上清华,你值得拥有。[doge]
微博评论 2015-02-18 14:03 回复
回复@顾yc:我不用上学,我有钱,我不会的我摇人,,,,有钱必需任性,你懂得[笑cry]
微博评论 2015-02-18 14:03 回复
回复@造化不弄僵尸大阿叔:请不要抨击江苏的高考制度,计算机也算是高考项目。江苏高考总分也就480,400多分上清华,你值得拥有。[doge]
微博评论 2015-02-18 13:33 回复
与电脑交流的语言
微博评论 2015-02-18 13:33 1 回复
回复@顾yc:不是英语的小语种也能学?英语要取代母语汉语?这是在灭绝文化多样性,会导致近亲繁殖[笑cry],,别英语没学咋地,编程没学会,学会了吸毒乱性,,,,哎!!![笑cry][笑cry]
微博评论 2015-02-18 13:33 回复
回复@顾yc:不是英语的小语种也能学?英语要取代母语汉语?这是在灭绝文化多样性,会导致近亲繁殖[笑cry],,别英语没学咋地,编程没学会,学会了吸毒乱性,,,,哎!!![笑cry][笑cry] //@顾yc :
微博评论 2015-02-18 13:03 1 回复
没有汉语平台,你是在为英语写代码,没有母语平台,计算机语言,就像英法德日……+非洲土著语一样多,你能学几种,,,想成为基础教育就要有汉语开发平台,,,英国人用母语小学10岁就能看懂程序,而我们要先学英语大学20岁再学编程,,,,总是落后,,,,[思考]
微博评论 2015-02-18 13:03 回复
微博评论 2015-02-18 13:03 2 回复
多花点时间吧外语数学学好喽,把咱母语学好喽!把自然学科学好喽!有时间再学点艺术!这才是基础教育~
wiiiky 2015-02-18 12:33 47 回复
编程不需要,但是编程的原理,如C语言如何编译成汇编,然后硬件如何执行汇编的原理应该作为基本课程。
因为如果学编程,只是课上讲一讲,其实没有什么意义,需要大量经验积累的。但是编程的原理能大大增加学生的知识面,虽然不会编,但至少知道编程是怎么一回事。
微博评论 2015-02-18 12:33 1 回复
原来“PHP是世界上最好的语言”是讽刺的,是高级黑。你们黑也拜托黑得别太高级,我(们)这些门外汉还真以为你们在诚心诚意地贊诵“PHP是世界上最好的语言”。[doge][doge]
微博评论 2015-02-18 12:33 1 回复
字_词_句_文章=指令_函数_函数_类_程序,,,老祖宗说这个东西叫人,是个代词,以后大家就都叫这东西“人”,,,,是老祖宗烧到硬件中的,搭建了汉语平台,后人发明了各种词句,古诗,文章,,,想开发汉语平的朋互粉交流,我是菜鸟,我要开发汉语平台,,,[笑cry]
微博评论 2015-02-18 12:03 回复
生出来就让你说c语言,3岁你就能学会说c,小学就能写程序,初中就能写论文了,大学写个操作系操跟玩似的,当然要有硬件烧写支持[笑cry]我是菜鸟,我要开发母语平台,,,,[笑cry]
微博评论 2015-02-18 12:03 1 回复
应该
微博评论 2015-02-18 12:03 回复
学校能认真上电脑课就谢天谢地了,别想太多
微博评论 2015-02-18 12:03 1 回复
指软件编程?是门外语,外语是啥,编程就是啥[思考]编程是跟计算机唠嗑,外语跟外国人唠嗑![笑cry]
微博评论 2015-02-18 12:03 回复
[呵呵]
来自 - 陕西西安 的 Safari/Linux 用户 2015-02-18 11:47 49 回复
编程不是培养技能,而是配置逻辑思维.话说以前学的理化生现在有几个人都记着?

返回顶部

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。