为什么我们应该教孩子实际的编程,而不是Scratch,Alice和其他介绍性“语言”。

附录:这是我对此主题的第一个公开帖子,如果有兴趣,我将继续本系列文章,介绍如何使孩子对编程/计算机科学感兴趣。 我希望我的第一手资料(从另一端看东西)将提供有用的观点。

首先,我只是对编程有热情的高中生。 不幸的是,这种激情变得紧张起来。 我在学校上了计算机科学课,当时我们不是从Python或JavaScript入手,而是从Alice入手。

这个2005年的启动画面没有改变

环境

Alice是一个可视化编程环境,您可以在其中拖动if语句和and语句等。此系统类似于MIT的Scratch等其他学习环境。 不幸的是,这些类型的环境存在多个问题。

首先,它们没有显示“真正的”编程是什么样的。 我并不是在建议我们将每一个初学者都投入到手动内存管理中,但是我们似乎对编程是不切实际的,这似乎是不诚实的。 对此的反驳是,它更容易入手。 这种谬误使我想到了下一个问题。

这些所谓的“容易”学习语言不过是什么。 查看上面发布的GUI。 这比带有“ print(“ Hello World”)”的Python REPL更容易。 您必须教给孩子这么多不同的想法,前提是他们对编程完全陌生。 很明显,Alice是用Java编写的,源于这些语言的冗长性(并且您没有使用自动完成功能获得良好的IDE)。 有了这样的包//思维方式,您就会进入一个需要面向对象的世界,坦率地说,这很难从像Python或JavaScript这样的简单过程语言入手(我很清楚这两种支持面向对象的编程,但是您不必这样做。 坦白说,如果我以前没有比Alice精疲力尽的编程经验,那这会破坏人们的编程动力。

最后,它们只是简单的不好玩。 抽象级别很高,您看不到编程如何有趣和有用。 翻个雪人虽然起初可能会更令人兴奋,但在第二次/第三次/第四次之后变得无聊。 隐喻的上限太低了。 相比之下,将某些社交媒体API与Python结合使用,坦率地说,很明显如何使编程变得有趣。

我们使用的教科书

由于视频游戏,我学会了编程/反向工程师。 我必须学习手动内存管理,并乐在其中,因为我知道/看到它可能有用。 我们不应该为孩子及其创造力设置天花板,而是应该展示如何在您的爱好和现实世界中使用编程。