高中生应该必修编程课程吗?

编程是数字素养的关键,还是有更重要的技能需要我们灌输给未来的领导者?
201 位读者喜欢这篇文章。
question mark in chalk

TeroVesalainen via Pixabay CC0

孩子们应该具备技术素养吗?当然!将他们培养成程序员是教授这项技能的最佳方式吗?嗯,这是一个更棘手的问题。

首先,坦率地说,在世界上的许多地方,即使在富裕地区,学校也没有能力处理这项任务。除了缺乏物理技术外,许多学校还缺乏足够的师资资源来教授编程课程。

其次,重要的是要注意计算机科学和编程不是同一件事。两者都很有价值,但在学术课程中,根据学生希望学习的课程,教授计算机科学和形式逻辑实际上可能同样有用。

第三,编程和计算机素养也不是一回事。完全有可能成为计算机高级用户,但不懂编程,也完全有可能成为程序员,但对他们正在使用的系统以及如何优化系统以供自己使用知之甚少。

第四,教学时间是有限的。并非每个人最终都会在日常工作中使用计算机编程,那么从其他学科中抽出时间真的会带来最佳结果吗?

尽管如此,仍然有理由支持它。

未来是数字化的,软件正在吞噬世界。要从根本上理解当算法而不是人类做出决策时世界如何运作,就需要对算法是什么以及它是如何创建的有一些基本的了解。编程不仅仅是制造东西,而是理解东西是如何制造出来的。

坦率地说,世界需要更多的程序员。需要编写和管理的代码比以往任何时候都多,虽然人工智能和自动化可能会改变程序员的工作内容,但这不会改变对程序员的需求。

但更进一步,理解至少编程的基础知识对于充分利用开源的好处非常重要。拥有可供审查、编辑和共享的代码(在开放许可下)非常重要,但如果您因自身无法进行希望进行的更改而受限,您真的能充分利用开放许可的全部力量吗?

双方都有充分的理由。

您怎么看?今天的每个孩子都应该学习编程吗?为什么?或为什么不?

 

标签
User profile image.
Jason 曾是 Opensource.com 的员工和红帽员工,时间从 2013 年到 2022 年。此个人资料包含他在该期间发表的与工作相关的文章。其他贡献可以在他的个人帐户中找到。

17 条评论

如果我们认为教育应该是关于开发年轻人的思想,那么编程有很多方面可以帮助你学习以逻辑的方式思考和计划。它从分析问题开始,将其转化为逐步的过程,然后整理出逻辑步骤来组装解决方案。
最大的困难是,可能很少有教师有任何编程经验,而且有人怀疑他们是否有兴趣学习编程。

Greg,我同意。说得好。可以(并且已经)为技术知识的不同原因和不同方面提出论据……但表达需求并制定解决方案计划的能力是许多人无法展示的“必须”。虽然这项技能源于 IT 行业,但它在我们生活的各个方面都很有价值,而不仅仅是在处理计算机时。可悲的是,世界已经变成了一个情绪和直觉反应占主导地位的地方,而“解决方案”往往充其量是短视的,在许多情况下是完全错误的。能够有效地找到快速的战术解决方案作为可持续解决方案的垫脚石比大多数人意识到的更有价值。

回复 作者 Greg P

“它从分析问题开始,将其转化为逐步的过程,然后整理出逻辑步骤来组装解决方案。”

这听起来像是所谓的计算思维。学习 BASIC 编程可以培养这种思维方式;计算机科学专业的学生必须摒弃它,才能通过分解而不是顺序地进行逻辑思考和编程。你将如何教授并行编程?

回复 作者 Greg P

我投了反对票,原因有几个。首先,我通常对将中等教育用作职业培训手段持怀疑态度。其次,正如您指出的那样,编程与计算机素养不同。计算机素养在 2018 年是一项至关重要的技能。编程不是。我宁愿看到逻辑课成为必修课,而不是编程课。

无耻的自我推销:几个月前,我在我的博客上写了一个更长的评论 https://funnelfiasco.com/blog/2018/06/07/everyone-needs-programming/

“计算机素养是一项至关重要的技能”

计算机素养到底是什么?这听起来像是必须学习几种编程语言,然后通过研究比尔·盖茨的生平和阅读他编写的所有程序来完成博士论文。不如莎士比亚有用。

信息学(计算机科学)是应用数学的一个分支,编程是其中的重要组成部分。我绝对赞成中等教育中的数学,如果老师顺便教一点编程,数学可能会更有趣。

“坦率地说,世界需要更多的程序员。”

世界需要的是更少的程序员,但它需要的是能够编程的计算机科学毕业生。问题是,目前的所谓程序员无法生成没有错误的代码,因此他们的代码应该是非法的。虽然计算机科学教授声称有一种编程方法,但到目前为止,他们还无法将其传授给 IT 行业。

回复 作者 bcotton

计算机素养绝对应该是成年人群体的普遍素养,并有望在整个青少年群体中普遍发展。我不确定编程素养是这种素养最重要的组成部分。虽然“要么编程,要么被编程”这句老话有一定道理,但我目前更关心公众的数据素养水平。围绕反恐、执法等公共政策的讨论充斥着关于“机构间信息共享”的说法,而消费者问题受到广泛关注,包括“隐私政策”、“数据经纪人”和据称已剥离“个人身份数据”的数据集。作为一种预防或公共卫生措施,我建议开设一门高中课程,强烈鼓励(如果不是必修的话),介绍数据库概念,或许可以使用 SQL(在我看来,SQL 的学习曲线平缓且直观,但我的经验可能不具代表性)。我希望这种介绍至少能让学生了解表连接的概念。这是因为(在我看来)SQL 的“魔力”就在于此。这就是为什么访问两个数据集比访问一个数据集具有两倍以上的信息力量(而信息就是力量)。我提议的数据素养课程的练习会提出如下问题:

* 您将如何尝试从这个已被剥离识别信息的数据集中的记录中推断出个人身份?

* 您将如何设计一个系统,用于计算此数据集中每个[人、产品、地点等]的数字“分数”,您的目标是更高的分数可能预示着更高的[犯罪发生、贷款拖欠、消费者购买等]概率

* 您将如何构建推荐引擎?同样,我希望重点更多地放在数据和数据关系的选择上,而不是编码上,以纳入推荐,以及以何种方式纳入推荐。

还有一件事:我参加过的许多编程课程(在传统大学和学院中)都过度依赖于过于简化和不切实际的准商业问题。我似乎记得一个“为假设的简单航空公司编写一个简单的预订系统”之类的东西。难怪没有入门级工作这种东西。我希望数据素养课程的数据集是经验性的,也就是说,真实世界的数据。我也希望至少一些数据集是较大的。请记住(不幸的是为了我的目的)信息不想免费,一些课堂作业可能是数据收集作业,也许是让学生出去进行一些调查,或记录食物日记,或进行一些 GPS 测量等等。

我认为基本了解什么是编程,以及做一些简单的(应用级)编程的能力很重要。我认为试图让每个人都成为系统程序员是毫无意义的。

为了进行比较,请考虑另一个领域——汽车维修。试图让每个高中生都成为 ASE 认证的机械师是没有意义的。但是每个人都应该了解汽车如何工作的基本知识,以及如何执行基本的维修/维护工作(例如,如何更换轮胎、如何更换空气滤清器、更换前灯或尾灯等)。即使这个人长大后会成为打电话给汽车俱乐部来加注玻璃水的某个人,但理解这没什么神奇之处,如果他愿意,他可以完成这项工作,这一点很重要。

我认为这尤其重要,因为我们日常使用的技术如此先进,以至于在许多人看来它与魔法无异。我不希望人们认为他们完全无法理解计算机、手机或互联网是如何工作的。他们不需要能够设计设备或网络,但他们应该能够理解基本的操作原理以及如何执行日常任务(例如,如何设置家庭 LAN 路由器,或者知道当您加载网页时您的数据包会去哪里)。

这必然会包括少量编程,但我认为这是一件好事——它可以揭开技术的神秘面纱,并表明任何人都有能力理解它。

当然,它也会激励一些人想要深入学习这项技术——而这些孩子将成为下一代发明家和开发者。

我们需要再次将宪法和法律设为必修课。我们需要将银行业务、利率如何运作、货币如何运作设为必修课。编码将在课程有用之前发生变化。

您一针见血。这里的根本问题是我们的孩子需要成为有效的公民。尽管我喜欢编程,但公民课是更有效利用有限课堂时间的方式。

回复 作者 Marty Buchaus (未验证)

我投票“视情况而定”,因为我看到 K-12 编程教学中存在一些膝跳反应。我认为强调批判性思维和解决问题能力并使用编程(无论是 Scratch、Python、Javascript 还是其他任何东西)的课程是一种很好的方法。我认为编程必须有一个背景。我认为将编程与数学、科学,更具体地说是数据科学联系起来的学校正在为他们的学生提供真正的服务,但太多的学校只是为了编程而编程,没有背景。使用 Python 让数学、科学甚至语言艺术生动起来会很酷。使用 Scratch 来教授动画。使用 Python 和或 Minecraft 教授游戏开发。这只是我的一些想法。很棒的文章,很棒的问题,也很棒的讨论。

我认为学习编程有很多价值。我不在乎你以后是否在 IT 行业工作,但学习一点编程可以消除很多人对技术抱有的“它是魔法”的印象。

一个月前,我在一次关于人机共生的演讲中谈到了这个话题。

在这里您可以找到包含幻灯片和视频链接的文字记录:http://www.tesio.it/2018/10/06/the-intelligent-symbiosis.html

能够编程是当下公民身份的先决条件。

我们的政治家不断地被他们的无知所操纵。
我们的儿子也是如此。

我们需要培养一代黑客,他们能够成为我们所处的控制论世界的积极成员。

我投了反对票。我认为培养批判性思维能力更重要。如果一个人能够批判性和逻辑性地思考问题,那么就更容易教别人如何用特定语言的语法表达想法或可能的解决方案。

似乎如果一个人在学习批判性思维之前学习编程语言,就更难意识到所学的编程语言可能不适合所有问题。并非一切都是对象。函数式编程不会解决世界上所有的问题。如果你只有一把锤子,那么一切仍然不是钉子。

我看到一些关于批判性思维/解决问题的评论。这就是基本编程所教的内容。我非常赞成将逻辑编程作为任何计算机科学课程的第一步。它教会学生如何找到问题的解决方案,而不仅仅是学习语法。事实上,我上的第一门编程课程是从伪代码开始的。多年以后,我仍然遇到一些大学生无法掌握解决方案的概念。所以他们永远无法编写代码。另一个学习解决问题的好课程是物理学。

是的,以及许多其他主题,例如合同法、家庭法和消费者法的概述,以及制定这些法律的立法程序。教育的目的是为您提供在社会中生存的技能,而不仅仅是获得高薪职业。

“教育”和“培训”之间存在很大差异。我的妻子,一位退休的 IT 培训师,问人们“您希望您的女儿接受性教育还是性训练?”

我特意避免讨论“价值观教育”的烂摊子,因为无论你站在哪一边,它都可能是洗脑的同义词。

计算机科学不仅仅是编程。
我是一名老牌计算机科学工程师(五年制学位),显然我了解编码原则和一些较旧的语言,但我最近从未编写过超过 40 行代码 :-)

首先,由于大多数订阅 opensource.com 的人倾向于信息和计算机技术,因此这项民意调查的结果很可能对程序员有利。其次,尽管编程在当今技术驱动的世界中至关重要,但在生活的许多方面,这种程度的计算机科学是可选的——因此,我认为候选人最终应该做出选择。尽管我发现,如果没有一些自动化(最终需要编程/脚本技能),解决问题变得越来越困难

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© 2025 open-source.net.cn. All rights reserved.