说说我的C语言学习经历
算起来从我真正学习C开始到现在也就半年时间。
2009年6月多,在当了半年多的计算机启蒙老师后,觉得实在没什么前途,毅然离职,参加了软件园的一家嵌入式培训机构学习,交了1W多块钱,学了4个多月,至于具体哪家不说了,免得说是广告贴。在刚上课之前有C预科班10天,我从基本的#include <stdio.h>练起,别笑话,刚开始我真的连最基本的这个头文件都需要看着书写。培训期间所有的课程和坐火箭一样的推进,速度很快,课程很多,可是每门课程也就几天时间,算起来一周上的课可以比得上大学一学期的,当然,尽管自己努力的学,记,忘掉的依然很多很多,我记得给我们发的C语言的书是《C语言程序设计》,也就是当参考书看,而不是每天翻着书看,写程序,不理解,看书,还不理解,写程序测试,曾经卡在指针上卡了很久,可是这个必须得会,晚上回家就看书看书,白天上课写程序,很怕指针,但是必须得用,用着用着就理解了,爱上了。
算下来,我看的C语言方面的书很少,也没太多时间让我去看书。4个多月,写的代码应该有1W多行吧,看起来挺多,每天算下来也就100多行,不过通过这么个熟手过程,很多东西都不会发生,比如malloc怎么写,参数是什么,写多了自然就记住了。
原本以为,学了C语言就是学了乾坤大挪移,很无敌,就什么都能做了,实际上也是这样的,但是还需要很多东西。比如各种各样的库,对硬件的了解(比如各个接口地址等),编程思想(比如算法),这些又是作为具体工作来说进行升华的东西。
前几天在论坛发帖子说过我那破程序的效率问题,也就是AES算法那个,同样是C语言写的,可是和OPENSSL等库对比起来,效率相差几十倍,去看了SSL里边的实现,许多操作都是用位进行实现的,>>,<<,&,| 就这些些操作代替了复杂的加减乘除,看来对C的功底和人家还是相差太大。
裁剪kernel内核的时候,看到的是复杂的、优美的、近乎于看不懂的代码,goto更是随地大小便,可是还是得看,看多了就习惯了。
现在,对C仍然有很多不了解,但是不妨碍我工作,函数不会了,查C标准库,查GG。做越来越多的算法效率问题,越发觉数学知识在编程中的重要,当然,如果比较浅层的不需要。
个人碎语……