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

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

树莓派基金会. CC BY-SA 4.0.

为了连续第 10 年,寻找 Ada 网络在十月的第二个星期二庆祝 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 会是一个更好的替代方案,因为你可以用它做很多事情,而且只需很少的努力。
我会让孩子们对做一些除了通常的 C 语言的 printf() 和链表之外的事情感到非常满意(并且关心指针和 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,它或多或少与 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++ 作为入门语言,但之后我会使用 Microsoft C# 和免费版的 Visual Studio,然后慢慢开始,向他们展示他们如何制作游戏以及它如何与 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

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.