目前阶段的任务及计划
现状:在某公司打酱油
曾经幻想的工作方向:嵌入式Linux软件开发
任务:虽然目前木草山人只是一个小混混,但正在努力向合格的程序员进发,为了做一名合格的程序员,必须不断地学习、不断巩固基础。因为我相信,基础非常重要。
目前主要有三条主线:
1、编程,主要是指linux平台下的程序,这个是必须坚持但不能急的事情,作为程序员,不时地写程序就像运动员不断地锻炼一样。
2、原理,包括计算机底层的原理,程序的链接、加载、运行,当然,像进程地址空间分布、内存映射等等也包括在内。
3、高层次抽象的方法论,现在能想到的是软件工程方面的书,其它的以后可能会想到。
下面再详解写一下。
1、当年很久时候曾习惯于vc的IDE,喜欢按F7、Ctrl+F5、F10、F11,不过后来慢慢转向linux,更喜欢linux的环境,特别是emacs,所以基本上对win不感冒了。所以目前主要研究与linux相关的一些领域。
1、1 linux基本编程,其实linux下的编程不外乎那么几个方面,比如I/O编程、进程、线程、进程通信、网络……,不过这些还可以继续深入学习,此外不谈。这方面的书籍很多,那些包括了LinuxC语言应用程序设计、linux高级程序设计……等等的书都有相关的介绍。
1、2 linux内核编程,或者说linux驱动程序,这个是我的梦想,说给别人、同行们听的,其实说白了就是撑门面用的,我现在的水平就是写个hello world模块,外加一个led点灯驱动,不过对Makefile研究了一点而已。这方面的书籍有ldd3、设备驱动程序详解之类的,当然还有网上牛人写的博客、笔记,等等,都可以拿来学习。
1、3 u-boot代码研究,这个纯粹是个人兴趣,因为网上、教程、书籍都是简单介绍一下u-boot,再讲移植到某个芯片的步骤,有些原理讲得比较深一点,不过此方面的资料不多,其实也没必要研究那么深。所以说,这个纯粹是个人兴趣。不过我始终相信,研究u-boot对于我的功力的提高是有十分重要的作用的。现在虽然还没有体现出来,但将来某一天,一定会的。
1、4 linux早期版本代码的研究,这方面赵博士就研究得比较深入了,他出了好几本书,网上也有他的共享资料,比如《linux内核完全注释》,以前在学校时候曾经立志学习的,但是由于很多不可避免的原因,终于不得不放弃了,但我一直没有忘记。
2、底层原理,这方面比较广泛,也不好描述,主要是指程序的链接、加载、运行、内存分布、可执行程序结构……,很多很多,现在的电子书如下:
Making plain binary files using a C compiler:中文、英文均有,中文由coly li翻译,他的翻译水平很高,很佩服他的共享精神,在这里向他致敬!
Hacking HelloWorld:台湾的牛人写的,能将一个Hello World写得出神入化,除了佩服,找不到别的词了。
程序员的自我修养—链接、装载与库:这是一本好书,可惜还是学生时候,在图书馆里找不到,不过已经在网上已经有扫描版本可以下载了,这样又省了一些钱。
Linker and Loader:英文、中文都有,中文也是由coly li翻译的。不过内容有些难懂。
3 其它的
linux性能详解:这也是一本好书,幸运的是,在学校时候已经看了大半了(因为后面的内容实在看不懂——那时的功力比现在浅一点),现在下载一个作者出书前写好的电子版,在作者的CU博客上有下载。
跟C语言有关的,比如经典的那些,C指针啊,C陷阱啊,C专家编程啊,什么的,基本上都有了,也看了一点。
跟设计模式相关的书籍。
山人始终相信,上述各个内容都是有相关的、有联系的。这个山人还不能用语言描述,但多学点东西,学会融会贯通是一件好事。