Scratch这个编程工具,它是一种简易图形化编程工具,这个软件的开发团队来自于麻省理工大学称为“终身幼儿园团队”(Lifelong Kindergarten Group)。
官方网址:https://scratch.mit.edu/,不过国内已经不能直接使用了。(想知道如何访问官网,感兴趣的朋友可以看回历史文章《手把手教你访问 scratch.mit.edu 官网》)
使用这个工具,当时我是为了教孩子们,在使用了一段时间之后,一些想法不自主的就萌生出来了。
Scratch可使大学教学更有互动性
我记得当年读大学的时候,老师都是用C在一个黑色或蓝色背景的编辑框中,敲入或输出一些非常无趣的字符。
我只想说老师,其实我就想知道游戏是怎么做出来的,怎么就出来一架飞机,它就能移动且发射子弹了。
那么这个在Scratch工具中很容易实现,可以加入一个Sprite,然后图片切换来实现物体的运动。
当时老师如果能先用Scratch来实现一个东西,然后分析一下原理,然后再代码来一通,这知识点不就联系起来了?
Scratch对面向对象的理解有帮助
Scratch绝对是面向对象编程入门的神器。因为代码都是写给每个对象的。
这样能很好的使你在思考程序实现的时候,只考虑当前对象应该有的行为,而不是老想着在某一个对象里去直接控制其它对象行为。
在Scratch里对象的行为都是靠“事件”来驱动的,这样你能很好的理解事件的概念。
在Scratch中对象都是独立的,松耦合的,那么对象直接的协作主要是通过“消息”来控制,这样你也能很好的理解消息的概念和工作方式。
Scratch是个很好理解程序语言的工具
在scratch中你会经常需要用到变量,循环,判断,和方法定义来实现一些功能。
扩展模块,其实就是用来定义函数,这样能使你更好的理解函数的使用方法,使用场景和使用函数的好处。
用来理解递归也比java等代码来得直观。
Scratch是个很好的建模工具,使你关注于编程逻辑而非语言本身
有时候为了解决某个问题,你有个很好的算法。
但是为了验证这个算法,你需要将其用C,C++或java等其中某一种语言来实现。
由于你不太熟悉编程语言语法以及它提供的方法,使得你花很多时间来编写程序,有时甚至运行不起来。
你原本目的是验证算法,然而大部分时间都花在了熟悉编程语言,以及debug上面。是不是很得不偿失?
Scratch使用模块拖拽,你不再需要关注语言,语法,而更多的是算法,建模。
如下图的:冒泡排序
思考用Scratch将逻辑可视化
其它的编程类工具,要实现解释一个算法或原理,一般都很晦涩,学生很难理解。
如果能用图形化界面,编程之后,让它动态的显示出来,那就生动得多了。
还是上面排序的例子,如果将上面的数字,转化成图片,然后图片根据算法动态的一轮一轮交换位置,最后排出想要的结果。
这个能让学生更直观的掌握排序或其它算法。
“搜索算法”和一些“贪心算法”,“动态规划”等都出现在了我的脑海中。
我深深的觉得,Scratch这种形式的可视化编程工具,会让更多的人进入编程行业,编程语言将不再是障碍,也许未来编程就是这样。
想想可视化的代码和数据库建模工具吧,是不是就是在朝这个方向发展啊。
最后(思考一下):“N.Wirth(沃斯)提出,程序=数据结构+算法.数据结构指的是数据与数据之间的逻辑关系.算法指的是解决特定问题的步骤和方法.”
上面提到了数据结构和算法,并没有提到编程语言,编程语言只是实现程序的一种工具,
所以“程序员,程序员,要会数据结构和算法的才能算得上程序员,只会敲代码的那就是码农,不是程序员!”