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

article/2025/10/23 5:34:04

“学生第一次开始学习计算机科学(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 多年前就能期望更多的人学习编程。


http://chatgpt.dhexx.cn/article/AmIGJdGN.shtml

相关文章

编程语言是怎么发展的?

说到编程语言,我们通常会想到JAVA、C#之类的。不知道你有没有好奇过,编程语言到底是怎么发展而来的。别急,听小编慢慢道来。 编程语言的定义为计算机和人都能识别的语言,通过编程语言,程序员将指令发给计算机&#xf…

如果编程语言是一门武功绝学

学习编程与武功绝学 武侠小说中,各路侠客绿林好汉都是从基本功开始一招一式学起,掌握了足够多的招式后,加之勤学苦练,量变引起质变,会有一天打开任督二脉顿悟出这些招式背后的哲学逻辑,成为一代宗师。在编程的学习过程中,我们何尝不是从一招一式的函数、语法、特性等学…

什么是 Python 编程语言?

Python:是世界上最流行的解释型编程语言之一。Python 由 Guido van Rossum 设计,作为“ABC”编程语言的继承者,于 1991 年首次发布。它是一种高级通用语言,其设计理念是通过使用缩进来强调代码的可读性。Python 的语言结构旨在帮助…

世界上到底有多少种编程语言

今天在找选题的时候,发现一篇《世界上最不流行的编程语言》。程序员常常讨论世界上最流行的编程语言有哪些,各种编程语言排行榜也会定时发布出来,例如Python、JavaScript、Java这些耳熟能详,排在各大榜单前列的流行编程语言&#…

Python 编程语言

💂 个人网站: 海拥 —— 一个乐于分享技术与快乐的博主🤟 版权: 本文由【海拥】原创、在CSDN首发、需要转载请联系博主💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦💅 想寻找共同摸鱼的小伙伴,…

python是一种编程语言吗?,python语言是编程语言吗

python语言是什么? Python是一种计算机程序设计语言,你可能已经听说过很多流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript等,Python…

第一门编程语言,我应该学什么?

作者 | Daniel Bastos 译者 | 弯月 责编 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 软件工程师问我最多的一个问题就是,第一门编程语言应该学什么。这可能是开发人员学习过程中最大的困惑,以至于许多人觉得在得到百分百正确的…

第一门编程语言选谁?

Are You Ready? Go! ——第一门编程语言选谁? 金旭亮 说明: 这篇文章是专门针对大学低年级学生(和其他软件开发初学者)写的,如果你己经是研究生或本科高年级学生,请将这篇文章转发给你的师弟或师妹&…

输入电阻定义

MOSFET的栅极是绝缘的,所以 i G ≈ 0 i_G \approx 0 iG​≈0,输入阻抗很高 定义:对不含独立电源(可以含受控源)的端口网络,定义端口的电压和电流之比为该端口网络的输入电阻(入端电阻&#xf…

关于电路中输入阻抗和输出阻抗大小的讨论

前言 很多同学搞不清楚为什么说输入、输出阻抗大小是大好还是小好,在这里我要简单概述一下。对于输入阻抗来说,输入阻抗越大越好,因为这样落到放大器上的电压就越大,更接近信号源电压(信号源内阻索取的就越小&#xf…

阻抗匹配的简单理解

阿尔伯特爱因斯坦声称:“科学的大多数基本思想本质上都很简单,并且通常可以用每个人都能理解的语言来表达。” 我不确定 21 世纪的物理学是否仍然如此(试着找一个能简单解释超弦理论的人)。尽管如此,这也是我对本专栏的…

如何用示波器测量输出阻抗

本文介绍了测量函数信号发生器、放大器或其他电路的输出阻抗的方法。这种方法适用于频率较低的场景,并不适应于所有的电路类型。本实验中用低频(1k Hz)的正弦波测量。 本文以汉泰的 DSO8060 为例,测量其输出阻抗,该示波器带有信号…

什么是阻抗?影响阻抗的因素有哪些?

问 什么是阻抗? 答 在具有电阻、电感和电容的电路里,对电路中的电流所起的阻碍作用叫做阻抗。 问 什么是阻抗匹配? 答 阻抗匹配是指信号源或者传输线跟负载之间达到一种适合的搭配。阻抗匹配主要有两点作用,调整负载功率和…

为什么阻抗匹配是输入阻抗与输出阻抗相等?

要说明什么是阻抗匹配,首先要知道有这么两个概念:输入阻抗和输出阻抗,那么什么是输入阻抗和输出阻抗呢? 输入阻抗Zin是由电阻或设备输入端看进去的阻抗。 而输出阻抗Zout是由设备输出端看过去的阻抗。任意电阻或设备的输出可以等…

输入阻抗-输出阻抗-阻抗匹配原理详解

本文转载来源:阻抗匹配是什么意思_阻抗匹配原理详解-电子发烧友网 (elecfans.com) 本文主要详解什么是阻抗匹配,首先介绍了输入及输出阻抗是什么,其次介绍了阻抗匹配的原理,最后阐述了阻抗匹配的应用领域。 一、输入阻抗 输入阻抗…

什么是阻抗?

目录 1、电阻和阻抗 2、电容和阻抗 3、电感和阻抗 在电子产品设计时,经常听到工程师说:阻抗多少?阻抗匹配吗? 那么什么是阻抗? 在一般状态下,导体多少都存有阻止电流流动的作用,其阻止程度…

二端口输入阻抗和输出阻抗

1、输入阻抗和输出阻抗定义: 实际中用的基本都是二端口网络,以二端口电路说明。(还有二端口的其他参数:Y参数、Z参数、T参数、H参数,请参考《电路》。) 二端口输入阻抗和输出阻抗定义参考链接&#xff1a…

阻抗、输入阻抗、特性阻抗……傻傻分不清楚

有时候,发现对各种阻抗傻傻分不清楚,“好记性不如烂笔头”,那就把它们一个个写下来。 01.阻抗 具有电阻、电感和电容的电路,对电路中的电流所起的阻碍作用叫做阻抗。阻抗又称为交流(AC)电阻,它…

深入浅出理解输入输出阻抗-音频电路输入输出阻抗

输入阻抗,输出阻抗,这两个参数似乎没那么重要,但事实并非如此。下面说下我的看法吧。 一个问题 音频中的耦合电容从0.1uF-220uF都有,这是有病吗?都是用作隔离直流的,怎么就不能统一呢? 明白…

输入阻抗如何测量?

原文来自微信公众号【小小的电子之路】 输入阻抗是指从电路的输入端看进去所得到的等效阻抗,它可以反映电路从信号源获取电压或者电流的能力。 1、输入阻抗 假设一个电路的输入阻抗为Zin,该电路采用电压源供电,实际电压源总存在内阻Zs&…