名称:我是电子爱好者,后来爱上单片机、编程,也来说说我的看法:
我觉得看程序和看硬件电路图一样:分层分块
一、首先就象TCPIP协议一样,进行分层,
区分开应用层、运输层、网络层、链路层、物理层等
通常开发者能接触到的只有应用层(对应于人机界面的软件开发)和物理层(对应于硬件相关的编程),毕竟这两头的东西不同人有不同的设计,不同产品间区别也就体现于此。至于中间的几层,要么是现成的规范,要么是器件特有的功能,通常会有现成的API,真正能接触到并处理好的那就不是一般水平的程序员了
二、然后,从主干看信号流向:对于程序是看流程图,对于电路是看方框图,看出程序和电路有哪些功能模块,模块之间是怎样耦合的
一个正规且完整的项目文档,不管是程序的还是电路的,必然会有流程图和框图的,就算没有,熟手也能把他们理出来。对于程序我们可以看主程序包涵了哪些模块的头文件、依次调用了那些函数、分别是什么作用,看完后心里也就大致有数了:原来这个东东是这样的,也不是很复杂嘛!
呵呵,这时,我们对那个“大”项目的畏难情绪就明显减弱了,这时,我们就可以顺藤摸瓜的一个个模块来看了,那就开始下一步
三、接着,从模块细分到语句:既然知道每个模块的作用和他们的耦合关系了,是不是很多东西都会有“我都写的出”的感觉呢?不是的,因为协议或器件不是你自己制定或生产的啊,这时最多会用罢了,要用好它当然得慢慢消化了,这时我们仍旧采取继续细分得方法,理解每一个函数,直到每一个语句。。。这样看下来还有什么程序不能理解得呢?
终于,这个大项目的程序每个语句都看完了,但我们前面的也忘了很多,这时穿插起来再看一遍会觉得很容易了。也就没什么难以理解的了。
四、学为己用:要看完一个“大”项目真的不是一件容易的事,我们为什么要花这么大的精力呢?当然是为了学为己用了,为了从中学到东西,毕竟人的知识和精力是有限的。
真正理解透了一个程序,会有就算什么也没有了也能自己写出来的感觉,庖丁所说的“始臣之解牛之时,所?无非全牛者。三年之后,未偿见全牛也”也就是这种境界了,那时你就是那一方面的专家了。
现在的社会节奏越来越快,新技术层出不穷,一个程序能看到API层应用起来就不错的,真要成为专家可不是容易得事哦
PS:我最初爱好的是电子,投入了大量精力和时间,对于电路可以说没有看不懂的了,后来爱上单片机、编程,半路出家的,对于编程真的不敢自夸,觉得还有好多需要学习的,在此随便发表一下自己的想法,希望行家别见笑哦
这段时间好迷惘,感觉自己就像茶壶煮饺子,所学从未用到地方,只想找个有实力的单位好好做做开发,希望能有人看的上才好啊:-)
呵呵