当前位置: 首页 > 科技观察

学生的第一门编程语言应该是什么?

时间:2023-03-19 00:55:20 科技观察

“学生应该从哪种编程语言开始学习计算机科学(CS)?”是长期困扰教育工作者的问题。密歇根大学计算机系教授MarkGuzdial也对此做了大量的思考和研究,但最近在《ACM 通讯》上发表的一篇文章指出,他的两位来自不同学校的CS同事认为,学生的第一门课学什么编程语言不重要,重要的是CS的学习成果。因为如果学生很好地学习了这些概念,那么他们就可以简单地将它们应用到他们正在学习的任何语言中。对此,Guzdial在文章中指出,在该领域还处于相对早期阶段的情况下,这种想法可能是正确的。但那是在20世纪60年代后期,当时课程刚刚建立;今天,各个年龄段和经验水平的学生都在学习如何编程,他们最终都有不同的需求。对于这个问题,不同的大学还是有不同的答案,这在一定程度上反映了他们的教学理念和观点。THENEWSTACK指出,斯坦福大学在2017年对其计算机科学专业的入门计算课程进行了一些更改,引起了强烈反对。斯坦福大学的学生报纸报道称,斯坦福大学计算机科学名誉教授埃里克·罗伯茨(EricRoberts)花了五年时间致力于将课程从Java过渡到JavaScript,最终创建了一个新的基于JavaScript的实验性课程版本。因此,课程名称为CS106J,而非CS106A。变革涉及创建新的教科书和作业,以及培训新的助教,罗伯茨本人也从退休状态中走出来教课。此前,斯坦福大学的入门课程一直以C语言编程(以及更早的Pascal语言)为主。然而,在2002年,罗伯茨通过编写教科书并与其他教师合作重组课程和作业,帮助学校将课程转向Java。根据罗伯茨的说法,Java很早就被设计为“互联网语言”。但在过渡到Java十多年后,他认为Javascript已经取代Java成为网络语言。现在,再次查看斯坦福教学大纲,您会发现CS106A似乎正在使用Python(和PyCharmIDE),而CS106B教学大纲说他们正在使用C++。同时,哈佛大学自己的入门课程CS50,10多年来一直坚持多语言教学。在第一周,学生们使用Scratch编写代码,然后切换到C;然后在接下来的几周内再次切换到Python,然后是JavaScript。该课程的官方常见问题解答解释说,“CS50不是只教授一种语言,而是向学生介绍一系列‘过程式’编程语言,每一种语言都建立在概念之上。最终目标是让学生感到他们没有‘学会如何在X中编程,但他们‘学会了如何编程’。”至于为什么他们应该从C语言开始,DavidJ.教授提供了一个了解所有编程语言的一些基本构建块的机会,同时也提供了一个解释缓冲区溢出的关键安全概念的机会。“我认为在一周内用C语言实现一个哈希表(或trie),然后在一周左右后仅用一行PHP或JavaScript代码实现同样的事情也是一件很强大的事情”。此外,C是一种相对较小的语言,因此“到学期中期,学生几乎了解所有内容(联合和函数指针除外)”。然而,ACMCommunications的一篇文章指出,截至2014年和2008年,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指出,在那个时代,大多数计算机科学专业的学生都是传统的大学生。较早进入计算机科学领域的学生通常比今天学习编码的普通学生拥有更强的数学背景。因此,回到70年代后期,教育工作者可能高估了转换编程语言的难度,因为他们最终只在他们已经理解的数学基础上教授编程。Guzdial认为,如果我们用学生已经知道的数学来教授编程语言的语义,那么新语法只是一种新的数学形式主义。我们不必为数学编程,如果我们不期望学生首先了解数学,也许我们在40多年前就可以期望更多的人学习编程。本文转自OSCHINA文章标题:学生第一门编程语言应该是什么?本文地址:https://www.oschina.net/news/149329/students-first-programming-language