学生的第一门编程语言应该是什么?
“学生第一次开始学习计算机科学(computer science,CS)时,应该从哪种编程语言开始学习?”这一问题一直让教育工作者备受困扰。来自密歇根大学的计算机科学教授 Mark Guzdial 也对此进行了大量思考与研究,然而其近期发表在《ACM 通讯》上的一篇文章则指出,他的两个来自不同学校的 CS 同事都认为,学生的第一门课程学习何种编程语言并不重要,重要的是 CS 的学习成果。因为如果学生很好地学习了这些概念,那么他们接下来就可以简单地将其应用到任何要学习的语言当中。
对此,Guzdial 则在文中指出,当这个领域还处于比较早期的阶段的时候,这种想法或许是正确的。但那是在 20 世纪 60 年代末,课程刚刚建立的时候;而今天,所有不同年龄段和经验水平的学生都在学习如何编程,且他们最终都有着不同的需求。
对于这一问题,不同的大学也仍然有不同的答案,这从某种程度反映了他们的教学理念和看法。THENEWSTACK 指出,斯坦福大学在 2017 年就曾因其计算机科学专业的入门计算课程的一些变化引起了强烈的反响。
斯坦福大学的学生报纸报道称,斯坦福大学计算机科学荣誉教授 Eric Roberts 花了五年时间致力于将该课程从 Java 过渡到 JavaScript,并最终创建了该课程基于 JavaScript 的新试验版本。因此,该课程被命名为 CS106J,而不是 CS106A。这一变化涉及到创建新的教科书和作业、以及培训新的助教,Roberts 本人也从退休状态中走出来教授该课。
此前,斯坦福大学的入门课程一直是基于 C 语言编程的(更早之前是 Pascal 语言)。然而在 2002 年,Roberts 通过编写教科书、并与其他教师合作重组课程和作业,帮助学校将课程转向了 Java。根据 Roberts 的说法,Java 很早就被设计为“互联网语言”。但在过渡到 Java 十多年后,他又认为,Javascript 已经取代了 Java 作为网络语言的地位。
现在,再次查看斯坦福大学的教学大纲,你会发现 CS106A 似乎正在使用 Python(和 PyCharm IDE),而 CS106B 的教学大纲则表明他们正在使用 C++。
与此同时,哈佛大学自己的入门课程 CS50 多年来则一直坚持使用多语言方法。在第一周,学生们采用 Scratch 编写程序,之后切换到 C 语言;接着在后面几周再次切换到 Python,再然后是 JavaScript。该课程的官方 FAQ 解释称,"CS50 不是只教一种语言,而是向学生介绍一系列'程序性'编程语言,每一种都是在概念上建立的。最终的目标是让学生觉得他们不是'学会了如何在 X 中编程',而是他们'学会了如何编程'。 "
至于为什么要从 C 语言开始,该课程的讲师 David J. Malan 教授则认为,学习 C 语言的几周让学生有机会了解所有编程语言的一些基本构件,同时也提供了解释缓冲区溢出这一关键安全概念的机会。
"我认为在一周时间内用 C 语言实现一个哈希表(或 trie),然后在一周左右后仅用一行 PHP 或 JavaScript 代码就能实现同样的内容,这也是一件很强大的事情"。此外,C 语言也是一种相对较小的语言,所以 "到了学期中期,学生们几乎已经了了解到了所有的东西(除了 unions 和函数指针)。"
不过,ACM Communications 的一篇文章指出,截至 2014 年,Python 已经成为美国顶级计算机科学课程(包括麻省理工学院和加州大学伯克利分校)的入门课程中最受欢迎的语言。具体来说,排名前 10 位的 CS 系中有 8 个(80%),排名前 39 的系中有 27个(69%)在 CS0 或 CS1 的入门课程中教授Python。Java 紧随 Python 之后,其次分别是 MATLAB、C、C++,然后是 Scheme 和 Scratch。
2016 年,三位英国研究人员进行的一项调查则指出,在英国大学中,使用 Java 的课程是 Python 的两倍多。“尽管事实上,相同的受访者认为 Python 更容易教学和学习”。对此,研究人员引用的一个可能的解释是:由社区指数衡量的长期的行业流行。
而温斯顿-塞勒姆州立大学的三位研究人员在 2019 年为 ACM 的计算机科学教育小组撰写的一篇论文中甚至认为,每个计算机科学学生也应该掌握大数据和云计算的基础知识,并拥有一些在云中部署和管理大数据应用程序的实践经验。还提出,与其单独开设云计算课程,不如将这些材料整合到多个本科计算机科学课程中。
根据英国研究人员的说法,向初级程序员教授什么仍然是一个重要问题。他们的论文认为,不能轻易掌握编程几乎肯定意味着不能在计算机科学领域取得进展。并指出,因此自从大学开始进行计算机科学教学以来,先教哪种语言的问题一直存在着激烈的争议。
密歇根大学教授 Guzdial 则仍然认为,学生从哪种语言开始学习是很重要,但他也希望教育工作者重新审视一个形成性假设。他在自己的 ACM 文章中回顾了 1979 年的一项研究,该研究认为,一旦学生学会了更广泛的语义概念,他们就可以将其应用于任何后续语言(只需要掌握相对容易的语法差异)。
但是 Guzdial 指出,在那个时代,大多数计算机科学的学生都是传统的大学生。早期进入计算机科学的学生通常比今天学习编码的普通学生具有更强的数学背景。因此,早在 20 世纪 70 年代末,教育工作者可能高估了转换编程语言的难度,因为他们最终只是在已经理解的数学基础上教授编程。
Guzdial 认为,如果我们根据学生已经知道的数学来教授编程语言的语义,那么新的语法只是一种新的数学形式主义。我们没有必要让编程与数学有关,如果我们不期望学生首先了解数学,也许早在 40 多年前就能期望更多的人学习编程。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
每日一博 | 疯了吧!这帮人居然用 Go 写“前端”?
作者 | 郑嘉涛(羣青) 来源 | 尔达 Erda 公众号 无一例外,谈到前后端分离“必定”是 RESTful API,算是定式了。但我们知道 REST 在资源划分上的设计总是与 UI 大相径庭,大量专用、特异、古怪的接口就像永远拾不尽的菌菇,你费力铲除它们,但一场雷雨便又枯树复披。另一方面接口越来越通用,最后却只剩下 CRUD,美其名曰后端只考虑稳定和性能,大量业务逻辑却全权“丢”给了前端,不禁让人怀疑,这真的是前后端分离了吗? Erda 作为企业一站式云原生 PaaS 平台,也存在着大量面向使用交互的布局各色的界面:从个人后台到部署总览再到项目设置;从集群管理到监控大盘再到成员管理。我们从 REST 开始做起,但也逐渐发生变化。本文将从头讲述我们如何从确实问题切入,逐步建设和完善 Erda 的前后端分离框架。 由于整个框架牵涉到太多内容,所以我计划以系列文章的形式来进行详细解读。本文主要介绍其产生的缘由以及设计思路,更多相关的细节会在后续文章中进行展开,包括但不限于: 框架实现细节 使用框架后测试如何展开? 稳定性和工程管理 ······ 简要介绍一下本文的主要结构: ...
- 下一篇
Firefox Lite 已死,Mozilla 停止开发和支持
Firefox Lite 是一个专为 Android 移动平台开发的 Firefox 浏览器,2021 年 6 月 30 日之后将不再收到任何更新。 Mozilla 的 Firefox Lite 是一个针对 Android 操作系统开发的浏览器,Firefox Lite 于 2017 年发布。 Firefox Lite 采用的是 Chromium 引擎,而非 Mozilla 自己的渲染引擎。这是 Firefox Lite 与其他版本的 Firefox 浏览器最大的不同之处,它也有别于许多同样基于 Chromium 开发的 Android 浏览器,Lite 版本的开发重点是隐私保护功能。 Firefox Lite 起初是以性能为目的而设计的,重点是运行速度快,同时最大限度地减少数据使用量。但是经过多年的更新,Firefox Lite 已经越来越臃肿,背离了当初的目的。越来越多的功能通常没有什么坏处,但用户为了丰富的功能完全可以使用传统的 Firefox 浏览器。 2020 年,作为组织架构调整的一部分,Mozilla 解雇了 250 名员工。Mozilla 对 Firefox Lite ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7设置SWAP分区,小内存服务器的救世主
- Linux系统CentOS6、CentOS7手动修改IP地址
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Hadoop3单机部署,实现最简伪集群
- Mario游戏-低调大师作品