随着数据、计算资源和人工智能的发展，编程教育是否越来越重要了？
Thinking in computer最重要。编程教育只是其中一环，并且只是其中最不重要的一环。 这里包括几个层面的知识或思维模式： 1、数学表达。把一个实际问题抽象成数学问题，并通过数学的方法来解决这个问题。这一步最重要。计算机终归是计算机，它其实并没有智慧，不懂得思考，它实际上只懂得计算。如果一个问题它不能通过数学模型来进行描述，那么它就是不可计算的，因此也就不能受益于日益增长的计算能力。曾几何时，我们认为计算机不能处理声音，不能识别图像。但最终通过科研人员的努力，现在计算机图像识别已经烂大街了。 2、系统工程。计算机仅仅是贡献了计算机能力。但广义的计算机实际上是一个计算机系统。它包括了计算核心部件CPU和外围部件。而外围部件在嵌入式计算机的使用中，又独立成为一个微小的计算机系统，并以此迭代。最终，这些系统组合成一个目标系统。因此如果要理解一个目标系统，就必须理目标系统的组成以及各自的作用。通过分层和抽象，使得我们处理问题的时候，适当的把某一层级的系统进行黑盒化，从而简化了数学建模的难度。但是为了要构建这个系统，最终还是要打开每一个部件进行开发和建设。这当中如果设计者没有系统工程的思维，则绝不可能理解和构建一个复杂度越来越高的计算机系统。 3、硬件界面。不管计算机的计算机能力多么强大，数学建模的契合程度多么完美，如计算机要最终作用到现实世界的话，它就必须直接操作硬件。而在硬件层面，这些计算结果最终会表达成为0和1。而这些0和1最终会成为某一条线路上的逻辑电平，从而通过电平的高低来进行硬件电路的操作。如果设计计算机系统的设计者没有这样的思维，那么计算结果仅仅是结果，绝不可能产生当今这种生产能力巨大的变化。 4、编程方法。编程方法可以说是上述思维的粘合剂。它是最重要的，然而它又是最不重要的。说它重要，主要是指它的思维方法重要：数据结构+算法。而说它不重要是指，具体的编程语言是不重要的，编程语言只是工具，工具可以有助于或限制了思维的表达，但工具绝对不能产生新的思维。当工具成为产生力的约束的时候，人们就会发明新的工具来代替它。实际上只要掌握了数据结构分析方法和算法设计的原理，对于一个熟练的程序员来说，学会一门新的语言只需要五分钟。 论述到这里，我的答案就出来了：用计算机的思维方式去思考问题是最重要的，而编程仅仅是必要的步骤和过程。不要把过程当成目标了。