提到编程,固然要知道编程思想的进化史,而半路出家又特别是自学编程的人每每没有通过系统专业培养,这部分每每会被忽视,但“是思惟习惯指导着行动”,了解程序编写的发展历史才能了解进化思路。
做为我入手的VB6并非完美的面向对象的高级语言,但已算是比较合适学习的优秀的面向过程的高级语言了,初学之,从归提炼代码,养成面向过程——造成养成写可重复使用的块的好习惯,也是编程路上必不可少的阶段。
我本身做为一名小学老师深知:思惟习惯的造成很是缓慢,绝非说今天想到今天就能够作到,是不断在反复的反馈刺激后才能固定下来的思惟回路,最终才能够在不经主观强化约束的状况下默认执行。刚开始必须反复纠正之,反复重构之。
一开始写代码,举个例子,链接ACCESS数据库,按钮一的点击代码中须要打开数据库的某个表进行操做,而后关闭它;按钮二的点击代码中也须要打开这个数据库的另外一个表进行另外一些操做,而后再关闭它(这儿只是简单举例,初学者可关注,高手请绕道)。那么查阅本身过往做品,特别是能找到的初期做品,就发现一个问题:两个按钮的点击事件中的代码都是按照以下流程走的:
两个按钮中加粗显示的部分能够发现是重复的,若是在两个按钮的点击事件中都写这些代码,将形成重复劳动,固然事实上是复制粘贴,但又形成另外一个问题,出了错,将要修改两处,若是找不到错误在哪儿就更惨——这种事在个人过往经历中常常发生,每每花个通宵甚至都没法找到到底错在哪儿。
其实咱们能够将上面加粗显示部分的操做,分别放到两个可调用 的 程序 块中,称之为 函数的东西里,使用时直接调用之就能够了。
而事实上上面两个按钮的单击事件中,斜体显示的部分,虽然操做的是两个不一样的表,但基础操做是同样的:都是打开某一张表,则也能够放到一个程序块中,只是在调用块时,须要告诉这个程序块,你给我打开哪张表就好了。
可是,日后过了将近一年,这种不是面向过程的思惟习惯才被慢慢改正过来,可见一个思惟习惯的造成是多么艰难。日后查看一些做品源代码,就可见如上例中的程序流程就变成了这样:
程序块一_我是负责链接那个ACCESS数据库文件的()
程序块二_我是负责断开与那个ACESS数据库文件的()
程序块三_我是负责打开想要打开的表(这儿告诉我要打开哪一个表)
程序块四_我是负责关闭想要关闭的表(这儿告诉我要关闭哪一个表)
正是保证学习的思惟天天都有进步和改变,也正是坚持天天都改变本身一点点,这种面向过程的编程思惟就造成了一种习惯思惟,每次开始写具体控件(如按钮就是一种控件)时,都会先自发地想到是否 些代码能够单独放到一个 程序 块中?独立的程序 块(就是专门供别人笑呼叫使唤的程序 块)多了,是否是能够专门创建 一个模块文件保存起来?
经过这样天天进步一点点,天天改变一点点,终于完成了编程思惟彻底的完成面向过程编程的转变。
后来,当学习JAVA等时,又天然地养成了面向对象的思惟习惯的转变,一下手,就会自觉地习惯地想到:把这些要反复和到的功能看成一个独立的类吧,让它本身作什么,有什么特色,有什么可自上继承的等等,这样,思惟一到,代码竟活了起来,编程竟天然有趣起来。
由于日子天天在改变,世界天天在改变,只有让本身天天都有新的改变与进步,才可能适应这个变化 的世界,那就是天天进步一点点,一年,十年,变化 就至关惊人了。转变思惟,跟上时代的思惟才能让本身永远走在时代的前列。
记得读书时代,教我画国画的老师讲过一个小事,他说他有个邻居很喜欢画国画,但好多年来,每次下笔画小鸡等,笔法顺序基本同样,只只小鸡都差很少,虽然确实是特别爱画画,但多年来画做几乎数年如一日,没有二致,还处处卖弄本身的做品——旁人不语,但实在可悲。
这个故事当时给我巨大的触动,这些年来,给愿意向我学习的徒弟们,我多数并不会教他们具体要怎么去写代码,要作些什么,我只告诉他们要达到什么目标,其他让他们本身去探索,只是上面那个故事是要常常做为鞭子鞭策他们的。不少徒弟们进步仍是很是之大,迅速实现了自个人不断蜕变,这即是从心培养思惟,由心里思惟的转变而驱动外在行动变化 的力量。
若是说编程学习除了改变了我粗心大意的行动习惯以外还给我带来了什么的话,最大的收获即是——改变了人思惟的习惯,使思惟能够如水般随时适应时代这个容器的任何变化 。