你会首先教孩子哪种编程语言?

为了庆祝艾达·洛夫莱斯日,我们想知道你认为哪种编程语言最适合向孩子们介绍编程。参与我们的投票。
159 位读者喜欢这篇文章。
kids in a classroom learning about Raspberry Pi programming

Raspberry Pi 基金会。CC BY-SA 4.0。

连续第 10 年,寻找艾达网络都在 10 月的第二个星期二庆祝艾达·洛夫莱斯日。这是一个全球性的庆祝活动,包括旗舰活动和草根活动,旨在表彰女性在科学、技术、工程和数学 (STEM) 领域的成就和贡献。

根据Girls Who Code的数据,计算机行业中的性别差距正在扩大,计算机科学家中只有 24% 是女性。然而,66% 的女孩从小就对计算机科学感兴趣。我们能做些什么来支持女孩和年轻女性完成她们的教育和早期职业生涯?寻找艾达网络认为,指导至关重要。

我们想听听您作为导师或学员的经验。您想首先教孩子哪种编程语言?您会教青少年和教小学生相同的语言吗?您对如何让孩子们对计算机编程感兴趣有什么建议?参与我们的投票并分享您的指导故事。

接下来阅读什么
User profile image.
Lauren 是 Opensource.com 的执行编辑。当她不整理编辑日历或深入研究数据时,她会带着家人和德国牧羊犬救援犬 Quailford 去冒险。她热衷于传播开源技术和原则如何应用于技术行业以外的领域(例如教育和政府)的意识。

29 条评论

Go,为了更好地理解面向对象和非面向对象的语言。好的开始

比编程语言更重要的是理解编程概念,显然要适合孩子。

有点呼应 Marco 的观点,您应该首先考虑孩子们会理解并有兴趣自行追求的编程任务类型。
就语言而言,我倾向于 Perl 或 Python。Perl 有一些更严格的语法规则,这实际上更好,因为它可以使调试变得容易。Python 则更宽松一些(例如,变量命名规则以及没有字符来结束行)。
我认为对于孩子来说尤其重要的是,尽早展示大量错误语法的示例,并附带相关的错误消息。有时,编译器发出的错误消息对于哪里出了问题或在损坏的脚本中查找什么并不那么明显。

Python 或 Rust。也许先 Python,然后 Rust。第一种语言是什么并不那么重要,只要它是当今非常流行的语言,而不是仅仅因为个人历史而选择的语言。

很棒的文章。我曾经认为 Scratch 是第一语言的最佳选择,但我改变了主意。我认为 Python 可以是一个很好的起点,并且有很多方法可以通过 Mu-editor 和 EduBlocks、BBC Microbit 和 AdaFruit 的 CircuitPython 使这个选择更加简单。

C

我学的第一种编程语言是 C,当时我 11-12 岁,一开始非常困难……我认为 Python 会是一个更好的选择,因为你可以用它付出很少的努力做很多事情。
我想让孩子们在做一些除了通常的 C 语言的 printf() 和链表之外的事情时获得极大的满足感(并且关心指针和 mallocs 完全是一场噩梦)

在选项列表中,只有一种具有静态类型的语言 - 而 Java 生态系统和工具对于孩子来说可能太多了,无法入门。

我会建议 Pascal - 我知道它在当今并不流行,但它确实是一种很棒的入门语言:你不会被迫与手动内存管理的复杂性作斗争,但它会教会你数据类型的基础知识以及它们在计算机内存中的存储方式。

像 JS、Ruby、Python 或 PERL 这样的高度动态的语言会让你认为数字和字符串以及其他类型之间的区别并不重要,但实际上,这对于理解计算机和编程至关重要。

我知道很多人会不同意 - 有些人担心通过让编程看起来太难而吓跑孩子,但是……编程很难。如果你想做一些容易的事情,就不要开始编程。

这并不是说它不能有趣 - 但我们这些长期成功的人往往认为它之所以有趣*是因为*它很难,而不是因为它容易。如果你不喜欢挑战自己,如果你没有准备好从事一项需要你终生学习和改进的工作,那么它可能不适合你。

所以我将为我的孩子选择 C。我认为最重要的是学习如何使用指针进行内存管理。这将为垃圾回收赢得极大的赞赏。而且,在我看来,静态类型语言可以轻松过渡到动态类型语言。此外,学习 C 结构为学习面向对象编程奠定了良好的基础。

这是对大多数传统编程语言中发现的典型控制流和循环(if/else、for、while、switch/case 等)的补充

我会选择 C。
当然,Python 可以用来快速生成应用程序。
但是,当孩子们提出关于计算机/并行性如何工作或缓存是否重要或为了使应用程序可执行而做了什么……诸如此类的问题都隐藏在语言之下。恕我直言,减少 C 材料将更适合教孩子们了解计算机。

Scheme。

在我的时代,它是 BASIC 和 Pascal。可惜 Pascal 消失了,它是一种非常好的语言。

>> 可惜 Pascal 消失了,它是一种非常好的语言

啊哈,但你在这个断言上错了。Pascal 仍然存在。事实上,由于 25 年以上的 FreePascal 编译器,它是一种蓬勃发展的语言,该编译器可以为每种可以想象到的平台输出二进制文件。
此外,免费的类似 Delphi 的 LazarusIDE 项目使创建跨平台 GUI 应用程序变得轻而易举。
另外,不要忘记 RemObjects Elements 编译器,它支持 4 种语言:Swift、C#、Oxygene(21 世纪的 Object Pascal)和 Java。最后,看看 Smart Mobile Studio,它将 DelphiScript 编译为 JavaScript,用于创建移动/Web 应用程序。这是一项非常棒的技术。

有关更多信息,请参阅此处 --->

** Free Pascal 是一个 32 位、64 位和 16 位专业的 Pascal 编译器。它可以针对多种处理器架构:Intel x86(包括 8086)、AMD64/x86-64、PowerPC、PowerPC64、SPARC、ARM、AArch64、MIPS 和 JVM。支持的操作系统包括 Linux、FreeBSD、Haiku、Mac OS X/iOS/iPhoneSimulator/Darwin、DOS(16 位和 32 位)、Win32、Win64、WinCE、OS/2、MorphOS、Nintendo GBA、Nintendo DS、Nintendo Wii、Android、AIX 和 AROS。此外,开发版本中还提供了对 Motorola 68k 架构的支持。** https://www.freepascal.org

** Lazarus 是一个与 Delphi 兼容的 Free Pascal 跨平台 IDE。它包括 LCL,它或多或少与 Delphi 的 VCL 兼容。Free Pascal 是一个 GPL 许可的编译器,可以在 Linux、Win32、OS/2、68K 等平台上运行。Free Pascal 旨在能够理解和编译 Delphi 语法,即 OOP。Lazarus 是缺失的拼图的一部分,它将允许你在上述所有平台上开发类似 Delphi 的程序。与 Java 努力实现一次编写,随处运行不同,Lazarus 和 Free Pascal 努力实现一次编写,随处编译。由于在上述所有平台上都可以使用完全相同的编译器,这意味着你无需进行任何重新编码即可为不同的平台生成相同的产品。**
https://www.lazarus-ide.org/

** Elements 是一个现代化的多用途软件开发工具链。
它支持四种流行的编程语言:Oxygene (Object Pascal)、Swift、C# 和 Java,适用于所有现代平台。借助 Elements,你可以为你喜欢的任何平台编程——无论是单独编程,还是在项目和平台之间共享代码。** https://www.elementscompiler.com/elements/

** Delphi 仍然是王者!你可以编译到 Mac。你可以使用 Linux。你可以为手机编写 FireMonkey 应用程序。现在……借助 Smart Mobile Studio 3,你可以为浏览器开发精彩的应用程序。

使用 Smart Mobile Studio,你可以编写 Object Pascal,它被编译为 JavaScript。你可以获得强类型语言的所有优势,这可以防止你犯错误。你也不必与浏览器和移动环境之间的所有差异作斗争。RTL 负责处理这些怪癖,就像 Delphi 对 WinApi 所做的那样。** https://smartmobilestudio.com/

回复 ,作者 NonSequiTourDeForce (未验证)

Lisp?

我认为所有这些语言都很有趣,但其中一些语言的 IDE 最差,或者对于一些 8-10 岁的孩子来说很难仅在命令行上教授,Java 很棒,但它使用的一些 IDE 对于孩子来说太难了,Python 很棒,但也不是我会首先使用的语言,我喜欢 C++ 作为入门语言,但之后我会选择带有免费版 Visual Studio 的 Microsoft C#,然后慢慢开始,向他们展示他们如何制作游戏以及它如何与 Xbox 集成,因为孩子们只与乐趣相关,我认为像这样的东西会让他们对编码感兴趣,然后向他们展示 Java 和 Python 如何做同样的事情,因为它们是当今需求最高的语言

Pascal

Texas Instruments 和 Casio 可编程计算器都使用它们自己的 Basic 变体。

从这里开始还不错。

C++

Cobol

这取决于情况。对于年龄较小的孩子,我可能会寻找一些为此目的创建的语言或套件(Scratch、Karel 等),对于青少年来说是 Python。我会考虑 C 以养成良好的编程习惯,但随后著名的 Stroustrup 名言浮现在脑海。[1]

在 Python 中,内存分配是隐藏的,它是隐式类型语言,它不是为复杂的桌面程序设计的,但这并不意味着它不能处理复杂的任务以及充当更好的计算器。毕竟,这是教成年人编程的一种选择(另一种是 C 或 C++),但在基本形式中,它也可以用于孩子。也许先 Python,然后是一些 C 或 Qt C++ 的基础知识。

[1] https://www.reddit.com/r/ProgrammerHumor/comments/8odd6r/c_makes_it_easy_to_shoot_yourself_in_the_foot_c/

很棒的投票!很高兴看到所有不同的回应以及背后的原因。

我个人从纸质“代码”和帮助非常小的孩子在没有数字设备的情况下理解基本编程概念的活动开始。

从 8 岁左右到 10 岁左右,我教 Scratch。我仍然会教一些与学习相关的纸质“代码”活动。这也是我使用基于块的编程语言引入机器人的年龄范围。

一旦学生清楚地理解了图形化编码,我就会转向 Python。我过去教 Processing,但不认为它有足够的现实世界价值来引起我的学生的共鸣。帮助学生将新的 Python 关键字与他们已经知道的 Scratch 块联系起来非常重要。

多年来,我注意到有 Scratch 经验的年幼学生比直接跳入基于文本的编程而没有 Scratch 经验的年长的学生更容易学习基于文本的编码。

我也喜欢 Scratch 如何通过授权用户分享和混音项目来轻松参与开放社区。

您提出了一个关于使用触觉活动向非常小的孩子介绍编码的好观点。我们必须在孩子们(所有年龄/能力)所在的地方与他们会面,然后他们才能学习任何东西!

回复 ,作者 Cyanide Cupcake

对于小孩子,Sketch 或任何 Logo 方言。对于年龄较大的孩子,Lisp(或其任何方言,如 Clojure)。停止给你的孩子洗脑,让他们接受 C 的“唯一真理之道”。

可能是 Julia。但你肯定不会选错 Python。

lisp

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.