首先,让我们把编程语言分为两大类,一类是兴趣类编程,以图形化编程为主,目的是用编程实现自己的想法,不用担心程序执行效率不高,也不用考虑用户的使用场景和平台。另一类是工业类编程,以源码编程为主,除了考虑用编程来解决生活生产中的问题外,还需要考虑到用户会在什么样的场景下使用此软件,以及产品的易用性。


  如果是青少年学习编程,依然不推荐从工业类编程入手。目前Scratch语言也在进化,能支持的功能已经远远大于把一个图形从这里移动到那里。Scratch现在已经可以对特定硬件进行编程了。和Scratch类似的图形化语言Blocky,已经可以完成很多很多远超过Scratch的功能了。例如同是Scratch3基于的Blockly开发的AppInventor,已经可以让孩子用图形化编程制作一个手机App。事实上,并不是图形化编程就弱鸡,现在西瓜创客的员工工资公式已经是用Blocky写的了,西瓜创客的后台各种工作流程规则也都是用图形化语言来写的。


  如果非要选择工业级编程语言,我们还是可以按目标来划分。


  如果目标是应试,首选是Python,目前浙江等地区已经把Python列为了高考科目。如果想通过NOIP加分的话,其次选择是C/C++语言。(注,在应试层面上,选择C和选择C++是一样的,因为C++是基于C扩展增加了一些例如面向对象编程的特性,而在NOIP的赛题里,不会用到这些高级特性)


  如果目标是编写控制硬件的程序,推荐语言是Python和C。C的原因是主流的硬件编程都是支持C的。而非工业级的硬件编程,例如,树莓派支持用Python编程。


  如果目标是制作App,可以选择的语言是Scratch类似的AppInventor、Java(用于编写安卓的App)或者Objective-C/Swift(用于编写苹果系统iOS的App)。另外JavaScript也是一个不错的跨平台选择。现在大多数程序都是苹果安卓系统通用的。这类程序基本是基于某个框架,最常用的框架是ReactNative,而ReactNative使用的就是Javascript语言。(注,Java语言和Javascript是两个语言,类似但不相同)


  如果目标是制作网页,可以选择的语言是Javascript+CSS+HTML。其中CSS和HTML是决定网页长成什么样的。这两种语言学习起来很简单。推荐Javascript的原因是,网页编程的前端(用户能看到的部分)基本都是用Javascript来控制的。而且现在的Node.JS也是基于Javascript的语法来做的后端程序(也就是用户看不到的服务器部分)。也就是说,只要会Javascript前端后端都能写。


  如果目标是做数据分析,首推的是Python语言。Python语言里有大量关于数据处理的公共库可以使用。让我们可以站在巨人的肩膀上继续深入研究,而不是重造车轮。


  综合各种因素,如果是针对7-12岁的孩子学习编程,语言的推荐顺序为Scratch>Python>Javascript>C。