首先,编程是实践课,打算像学数学等理论课一样学习编程是不科学的,之所以很多人数学学不下去,是因为不能学以致用,即使有很多学得好的,也很难说清楚数学到底是做什么的,无非是做题,应付考试。编程就不一样了,我们学习的目的是解决实际问题,当然考试和竞赛也是很多人的方向。
其次,编程是一类语言,那么我们就想想人类是怎么学习语言的。以我们的母语为例,对于一个刚出生不久的娃娃,是从拼音、字词和语法开始教学,还是不管孩子理不理解,就进行日常对话呢?如果是前者,想必最终90%以上的孩子都是哑巴,英语就是一个例子,学了十几年,还是个哑巴,就是因为它的学习过于理论化,不能学以致用,其实也是可以通过创造语境做到的,这也是一些国际学校的学生英语好的原因。
有人说,在实践中学习比从语法开始学效果更好,道理大家都知道,但是生活中没有编程语言的语境啊,难道还能让人日常用C语言交流么?其实,大家都没有意识到,当今的我们,每天都浸泡在程序的海洋中!
无论是手机,还是电脑,还是满大街的广告屏;写个文档,发个消息,点个外卖,打个游戏,那个操作不是在和程序打交道,只不过这些程序都是别人写的。我们每天都和程序打交道,却不知道程序为何物,不知道学编程能做什么,更不知道这些程序是如何做出来的。
这不是初学者的错,这是大学教育的滞后造成的,多数大学的编程教学都只讲讲语法和算法,和实际结合的内容是少之又少,让学生感觉在学校学的编程似乎和我们平日里用的软件没什么关联,又或者觉得能做出实用性软件是高不可及的能耐。
事实并非如此,计算机技术发展很快,但印刷出来的教材更新很慢,从未进入过现代化软件公司的大学老师更新更慢。学编程完全可以是做个小软件,写个有趣的小程序,边做边学,边学边做,实践和理论相互补充,让每一个关键词和语法都能体现它的价值,而不是靠死记硬背达到似懂非懂的结果。
我教编程向来是从图形化的内容开始,画一条直线,这需要4个整数,然后通过复制并改变这些整数实现画多条直线。做完之后我再告诉你,可以用循环的语法来精简我们的重复代码。“哦!原来还能这么简单,你怎么不早说,害我写了这么多!”有学生埋怨我。但我要是先给你讲各种Loop的语法,你知道那是做什么用的吗?你非但尝不到语法的甜头,还会把它当成一种无聊的负担。
会画直线,那么我们就可以画一个棋盘,3x3和15x15的棋盘,代码量竟然是相同的。然后怎么画棋子呢?我来教你怎么在指定位置显示一个圆,然后通过改变填充色来充当双方的棋子。那怎么让鼠标点击的时候棋子出来呢?这个也简单,这叫鼠标响应……
一步一步的,你会发现编程没有那么难,我们学习每一个语法,都是因为我们要用到它,而不是不管不顾的用ppt给你介绍一堆枯燥的语法让你去记忆。也许你很聪明,记得住,也能理解一些,但你有作品吗?
上来就写,先关注急需关注的问题,逐步了解整个的体系,这就是我所推崇的自上而下的编程学习方法。反观先学语法,然后自己去应用的自下而上的哑巴英语式学习方法,我觉得能坚持下来的人不多,因为它做不到每一行代码的效果都能看见,每一步努力都有收获,学习纯粹为了考试,考完也就丢了,谈不上什么爱好和兴趣。
想跟我学编程或需要编程辅导的可以加我微信 ittutor或QQ 14061936,欢迎咨询!