编程还是被编程?这是个问题
我们使用工具并不意味着需要亲自制作工具。然而,如果我们希望能够与现有的这个由代码构成的环境交互,而不是处于完全被动的话,就需要了解基本的编码。我们不应该把这种技能完全地推给某一阶层或精英。
巴黎高科评论:首先,代码是什么?
尼古拉斯·达内:有很多定义方式。首先,代码是使机器运行的程序。如果没有代码,我们的电子设备包括电脑、手机就没有生命。代码是让我们最接近机器灵魂的方式,使机器能根据我们的需求而运作。它是一些通过算法来自动完成任务的句法。这是第一个定义。
但是代码也可以被定义为一种语言。因为它基于数学算法,我们过去倾向于认为它只是一个属于数学家和工程师的领域。但实际上,许多语言学者已经对编码和发明新的编程语言产生兴趣。有些人甚至用代码写诗!斯坦福大学的学生就创立了一个俱乐部,将诗歌和编程融合在一起。代码完全可以被视为一种说话和表达方式。
从某种意义上说,学习代码和学习一门外语相似:开始会很艰难,但渐渐地,我们开始理解语言的逻辑性——每个人都有能力掌握它,因为说话谁都会。
因此,我们都能学会代码,但有必要所有人都学吗?
没错,任何人都可以学习代码,包括儿童。只要使用合适的界面,孩子也可以轻松地码代码,而不必非得是编程天才或计算机学博士。就像你不必非得是莎士比亚才能说好英语一样。理解基础的编程语言并不复杂。事实上,大多数人每天都会处理几行代码:每个人都要在网络浏览器中输入 URL 地址;每个人都知道删除 .com 后的整个序列会带你回到首页。
根据美国著名的网络文化作家道格拉斯·洛西克夫所说,一个当代性难题在于“编程还是被编程。”这可能略有些极端:我们并不需要因为使用手机,而必须成为手机程序员。我们使用工具并不意味着需要亲自制作工具。然而,如果我们希望能够与现有这个由代码构成的环境交互,而不是处于完全被动的话,就需要了解基本的编码。我们不应该把这种技能完全地推给某一阶层或精英。
公民需要基础教育,所以对编程有所认识是有意义的。当我们学习读写时,最好能有一些编写代码和“阅读”那个我们身处其中的数字世界的经验。
对我来说,这几乎与公民学一样必要。不传播民主的价值,公民将永远无法找到自己在社会上的位置。同样,如果我们不懂编程的逻辑,身处这个由代码构成的世界就会感到不自由。就以 Google 这个每个人每天都会使用好多次的搜索引擎为例,如果我们不了解它是如何工作的、如何生成信息索引、信息又来自哪里、为什么一个查询能反馈很多结果等等,就可能轻易地被这个工具欺骗。永远不要以为,搜索引擎给出的结果就一定是真理;不要以为,除了搜索结果的前几条其他都是无关紧要的。
简而言之,你认为数字教育、唤醒学生对代码的认识很重要。当然,这是公民教育的使命之一,但学校真的是教这门课的最好地方?
近年来在几乎所有的西方国家都出现了是否应该在学校教授代码的争论。然而,改变整个学校计划通常是很艰难的,而且我们没有足够的计算机教师来使编程成为一门像数学和英语那样的主课。同样,当法国于 2010 年将算法这门课引入高中课程体系时,那些没有受过相关训练的教师就有了麻烦。
有人会问为什么编程要单独成为一个学科:如果编程就像写作,那么所有学科都将涉及到。
我倾向于从另一个角度理解这个问题。在我看来,更重要的是采纳学生的观点进而了解什么才是对他们最有利的,而不是把精力集中在如何将编程加入到教育课程中去。
我们经常抱怨孩子们花太多的时间在屏幕前,这可能是正确的。但最重要的是,我们需要确保当孩子们在屏幕前时不只是处于一个被动的状态。这就是编码可以发挥至关重要作用的地方。如果一个孩子可以开始编程,通过适当的界面,他们很快就会体验到其中的乐趣。因此,他们在使用 IT 工具时将有完全不同的体验。
在这一点上,存在一个关于学习范式的基本问题:是从理论出发更好呢?还是将实践和理论结合更好?就个人而言,我不认为你可以在不亲自运行代码的情况下理解编程。从实践出发总是最好的,而不是通过阅读代码理论的书。当我还是个孩子时,我就是从尝试编写几行代码起步来学习编程的。我的代码远非完美,但这不重要,重要的是了解它们的背景和它们的运作方式。通过实验来学习算法思想比单纯阅读理论书更有效。
但学校能提供这种方式吗?
不一定。这种学习模式可以在课堂之外实现。每个学校的代码和计算机文化是非常不同的,水准也有很大差别:教师、学生、硬件……相反,代码的世界主要基于自学者和网络支持。总之,这正是整个宇宙的创建方式。不将这些理想的水平协作模式融入到教学中,使之不同于传统教学,将是一种耻辱。在第二个阶段,这些处于传统教育边缘的主动性学习可以被重新组合、获得进一步开发。不断在边缘地带试验、更新、整合,其实就是一种非常“数字化”的思维方式。
这种方式也会部分解决人力资源的问题,也就是说,大规模地招聘教师或是同等力度地将编程引入到小学或中学课程中去。然而,如果没理解错的话,你认为在中期内,学校的课程体系应该包含这些课外活动。我们甚至可以想象,如果数字时代必须改变学校,代码就可以被视作触发这一变化的特洛伊木马,允许不同学习文化的发展。那么你如何看待学校的未来呢?
理想情况下,它应该比现在更加强调协作能力。孩子们需要学会通过与人交往来了解自己。这是一个巩固知识的好方法。如果一个学生需给他的同学做出解释,那么他就需要首先加强自己的知识水平。在这种背景下,老师在课堂上的位置也会改变。老师的工作将成为一种催化剂,而不只是传递知识。理想情况下,这种协同维度可以扩展到与来自其他国家班级的交流,在伊拉斯谟计划*的初高中教育体系下。
未来的学校也将关注创造力。在实践中学习,给日常生活中的问题提供解决方案:制作一个网站、设计一个小程序来自动化一组任务、编程连接对象、玩一个光传感器,等等。在某种意义上,代码非常类似于其他的创造性领域,如视觉艺术或音乐:在程序设计中,一个给定的问题很可能引起在优雅性和时效性方面全然不同的解决方案。最后,学习编程是一种发现和深化学习风格、培养创造力的方式。
*伊拉斯谟计划(Erasmus Programme,European Community Action Scheme for the Mobility of University Students),是欧洲各共同体在 1987 年成立的学生交换项目,2014 年 1 月在它的基础上创建了应用于欧盟现有教育、训练及青年体育领域的交换计划 Erasmus+。其国际版为伊拉斯谟世界计划。
本文文字及图片出自 sptreview.org
你也许感兴趣的:
- 【外评】15 年前我给自己的一系列编程建议
- 【外评】软件复杂性的三大法则(或:为什么软件工程师总是脾气暴躁)
- 【外评】我对 The Clean Coder 的看法
- 【外评】我为什么编程
- 【外评】我们应该将编程法则视作谚语
- 【译文】40 亿条 if 语句
- 现在开始,把代码里的 else 丢掉!
- 程序员提交 PR 的理想长度是多少?有人答:50 行代码!
- 别再说 “技术债” 了!
- 经历多次重写,苹果平台最强科学计算器PCalc背后的故事
有时候看现在的小孩子,会觉得他们很幸福,因为等他们这代长大,就不需要像我们现在这样编写程序了,那时候,编程已经成了一种令人习以为常的通用技能,就像现在的人用Office软件一样,所谓的编程,很可能已经不需要敲代码了,而是图形化,设置几个参数就完事了。