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

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

Raspberry Pi Foundation. CC BY-SA 4.0.

连续第 10 年,寻找 Ada 网络在 10 月的第二个星期二庆祝 Ada Lovelace Day。 这是一项全球性的庆祝活动,通过旗舰活动和基层活动,表彰科学、技术、工程和数学 (STEM) 领域女性的成就和贡献。

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

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

接下来阅读
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 会是一个更好的选择,因为你可以用它轻松地完成很多事情。
我会让孩子们在除了通常的 printf() 和 C 的链表(以及关心指针和 malloc 是一个彻底的噩梦)之外做一些事情,从而获得很大的满足感

选项列表中只有一种静态类型语言 - 并且 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,LCL 或多或少与 Delphi 的 VCL 兼容。 Free Pascal 是一个 GPL 许可的编译器,可在 Linux、Win32、OS/2、68K 等上运行。 Free Pascal 旨在能够理解和编译 Delphi 语法,Delphi 语法是 OOP。 Lazarus 是缺失拼图的一部分,它将允许您在上述所有平台上开发类似 Delphi 的程序。 与 Java 努力实现一次编写随处运行不同,Lazarus 和 Free Pascal 努力实现一次编写随处编译。 由于完全相同的编译器在上述所有平台上都可用,这意味着您不需要进行任何重新编码即可为不同的平台生成相同的产品。 **
https://www.lazarus-ide.org/

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

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

使用 Smart Mobile Studio,您可以编写 Object Pascal 代码,它会被编译成 JavaScript。您可以获得强类型语言的所有优势,从而防止您产生 bug。您也不必费力应对浏览器和移动环境之间的所有差异。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_eas…

很棒的调查! 看到所有不同的回复以及背后的原因真是太棒了。

我个人从纸质“代码”和帮助幼儿理解基本编程概念的活动开始,无需数字设备。

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

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

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

我也很喜欢 Scratch 让用户能够分享和重新混合项目,从而轻松参与开放社区。

对于小孩子,Sketch 或任何 Logo 方言。 对于大一点的孩子,Lisp(或其任何方言,如 Clojure)。 停止向你的孩子洗脑,灌输 C 的“唯一正确方式”。

可能是 Julia。 但是选择 Python 绝对不会出错。

lisp

知识共享许可协议本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.