⼀、认识各种编程语言的共性
计算机编程语言千差万别,但是基本的共性无外以下几种:
1. 数据部分,怎么去描述定义程序中的数据,包括定义变量,定义数据的类型;
2. 运算成分,数学运算、逻辑预算等,怎么在程序中描述这些运算;
3. 控制成分,程序的控制构造,包括判断、选择、循环等;
4. 传输成分,怎么样在程序中来表达数据的传输。
此外,更高级的,编程思想:面向对象(封装、继承、多态)、面向过程和函数式编程等。
上述的编程共性,在scratch里面都是具备的,虽然它是拖拖拽拽完成的,看上去不像一门正式的编程语言。
不同的编程语⾔,像Java、C/C++、Python等,就上述的共性特征,是一致的,差异主要是各自语言依赖的资源库不同,基本语法形式会有不同,命令的名称不同而已,举例说明:
比如:C++和Java对于代码块的分割,用大括号“{ }”,Python就是Tab缩进,P我爱学编程ascal就是“Begin 和End”;
再比如,在控制台打印一句话“我爱学编程!”
C++里面是这样的:cout << “我爱学编程!” << endl;
C语言是这样的:printf("我爱学编程!");
Java这样:System.out.println("我爱领学科创!");
Python又是这样:print "我爱学编程!"
由此可见,只是形式不同,隐藏在后面的编程共性是一样的,scratch会让小孩子抛开对于表象的那些复杂枯燥的命令的记忆,直接通过图文并茂的方式掌握编程思想,熟悉编程最底层,最核心的内容。这对于他们以后到了初中或者高中,掌握新的语言,打下了非常好的基础。
二、众多的编程语言,哪一个真正适合你的孩子?
先不说语⾔的发展是很快的,每隔五年⼗年就会有新的语⾔产⽣,就当前,编程语言多如牛毛,流行度排行榜也是上上下下,每年都有不同的变化。下表是2020年世界编程语言排行榜:
我们的小朋友要学习哪种语言作为启蒙语言,或者作为一个适合入手的语言?你可不要跟我说什么Python或者C++,甚至Java,如果你家小孩在幼小阶段能够从这种语言入手作为启蒙,通过这些语言学习到上述语言的基本特性。他绝对是百万分之一的天才,未来的技术大师,图灵奖的潜在竞争者…..好了,我们还是说下绝大多数普通正常的孩子:
在scratch出现之前,是Basic语言(不是上表中的Visual Basic),曾经几何时,在小霸王学习机上,我们通过一行行Basic的指令,控制电视中小人、小动物的前进后退,跳上跳下,构成了很多人对于计算机编程的第一印象。
但是,Basic太弱了,他完全不具备一个高级语言的特性,他的结构类似汇编语言,是顺序执行的,学习他,虽然可以窥探一下编程的启蒙,但是比起scratch的特性,特别是现代高级语言的特性,还是非常不足的。
很幸运现在的小孩子能够这么好的编程语言,能够非常低门槛低掌握编程之“道”。这样,等他到了高年级,初中高中,如果对某类开发技术感兴趣,比如,要学c语⾔,那转换起来就⼗分快,只需要了解c语⾔的特性,很快就能掌握。
如果没有幼小阶段的基础,直接学c,可能三分之⼆的时间都在学基本的思路,和学过scratch的孩子相比,接受程度会慢很多。
三,目标驱动是最有效的学习方式!对于学编程更是如此
编程是为了用来解决问题的,或者完成任务的:
在目前的技术领域,通过学习python方便做数量统计,java可以开发软件系统,运行在开源免费的Linux操作系统上,要是开发游戏,那就得用C++,如果我要开发一款基于Win10的桌面软件,最好用C#......
我们在幼儿园阶段和初小阶段的小朋友,能让他们有什么样的目标和任务去完成?从而驱动他们对于编程能够持续不断的学习下去?是数量统计吗?这么专业。还是励志开发一款游戏出来?
学习一定要由目标驱动,在目标驱动起作用后,我们还可以采用问题驱动方式进行学习,即在学习过程中多问问题。这是学习的最佳方式。
对于孩⼦⽽⾔,最可行的目标就是他们能够认知的,可感知、简单有趣的东⻄,比如一辆模型⻋在跑,前进后退;一个机器⼈或者⽆⼈机上升下降,控制这些简单⽽直观的东⻄,才是是⼩孩⼦的兴趣所在。⽽这些设备基本都支持scratch形式的编程。孩⼦在使⽤scratch的过程中,只要通过拖拽的形式就能实现,就能知道计算机语⾔的运行结果作⽤。⼩孩⼦写了⼀段程序,就能知道程序能给带来怎么样的反馈和结果,这些才是吸引孩⼦有兴趣学习的关键点。
我们家长小时候, 学编程语⾔就只知道在屏幕上打印⼀个三⾓形、星号、矩形出来,这种学习的过程是很枯燥的,这样⼦的过程很容易失去对计算机语⾔的兴趣。难道学习编程语⾔就是为了在屏幕上画个图出来么?画个椭圆、画个圆出来么?不是的,我们其实可以程序 “控制”的很多东西,按照我的事先编排的要求,其实计算机语⾔本⾝就是对机器硬件的控制,⼩孩⼦通过scratch语⾔可以做到这⼀点,从而确定对于学编程的目标。
最后,我们面对于未来快速变化的世界,我们的小孩子从事什么样的行业,做什么工作,其实是不确定的,但是,有三样东西是基础,不管他学习什么专业,身处什么行业,做什么工作都是必须的,那就是三种和外界交互的能力:
1. 语言的能力,至少掌握一门外语,扩大自己认知更多资讯的能力;
2. 数学的能力,我们对这个自然世界认知的工具,也是许多学科的基础;
3. 编程的能力,我们和计算机,和互联网沟通的能力,AI时代了,一个不懂编程的人,几乎就是文盲。
上述三种能力,只有在幼小阶段打下基础,对孩子的一生,都是一次非常值得的投入!