建议学习路径: 首先先学学编辑器,vim, emacs什么的都行。 而后学make file文件,只要知道一点就行,这样就能够准备编程序了。编程 而后看看《C程序设计语言》K&R,这样呢,基本上就能够进行通常的编程了,顺便找本数据结构的书来看。vim 若是想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就能够掌握了。网络 而后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不只学习网络编程,并且对系统编程的一些经常使用的技巧就很熟悉了,若是继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有不少关于应用协议telnet、ftp等协议的编程。 若是想写设备驱动程序,首先您的系统编程的接口好比文件、IPC等必需要熟知了,再学习《LDD》2。
对于几本经典教材的评价: 《The C Programing Language》K&R 经典的C语言程序设计教材,做者是C语言的发明者,教材内容深刻浅出。虽然有点老,可是必备的一本手册,如今有时候 我还常翻翻。篇幅比较小,可是每看一遍,就有一遍的收获。另外也可用谭浩强的《C语言程序设计》代替。
《Advanced Programing in Unix Envirement》 W.Richard Stevens:也是很是经典的书(废话,Stevens的书哪有不经典的!),虽然初学者就能够看,可是事实上它是《Unix Network Programing》的一本辅助资料。国内的翻译的《UNIX环境高级编程》的水平不怎么样,如今有影印版,直接读英文比读中文来 得容易。
《Unix Network Programing》W.Richard Stevens:第一卷讲BSD Socket网络编程接口和另一种网络编程接口的,不过如今通常都用BSD Socket,因此这本书 只要看大约一半多就能够了。第二卷没有设计到网络的东西,主要讲进程间通信和Posix线程。因此看了《APUE》之后,就能够看它了,基本上系统的东西就由 《APUE》和《UNP》vol2归纳了。看过《UNP》之后,您就会知道系统编程的绝大部分编程技巧,即便卷一是讲网络编程的。国内是清华翻译得《Unix网络编程》 ,翻译者得功底也比较高,翻译地比较好。因此建议仍是看中文版。
《TCP/IP祥解》一共三卷,卷一讲协议,卷二讲实现,卷三讲编程应用。我没有怎么看过。,可是听说也很经典的,由于我没有时间看卷二,因此不便评价。
《用TCP/IP进行网际互连》Douglus.E.Comer 一共三卷,卷一讲原理,卷二讲实现,卷三讲高级协议。感受上这一套要比Stevens的那一套要好,就连Stevens也不得不认可它的第一卷很是经典。事实上,第一卷即便你没有一点网络的知识,看完之后也会对网络的前因后果了如指掌。第一卷中还有不少习题也设计得经典和实用,由于做者自己就是一位教师,而且卷一是国外研究生的教材。习题并无答案,留给读者思考,由于问题得答案可让你成为一个中级的Hacker,这些问题的答案能够象Douglus索取,不过只有他只给教师卷二我没有怎么看,卷三能够做为参考手册,其中地例子也很经典。若是您看过Qterm的源代码,就会知道Qterm的telnet实现部分大多数就是从这本书的源代码过来的。对于网络原理的书,我推荐它,而不是Stevens的《TCP/IP祥解》。
《Operating System - Design and Implement》这个是讲操做系统的书,用Minix作的例子。做者母语不是英文,因此英文看起来比较晦涩。国内翻译的是 《操做系统 设计与实现》,我没看过中文版,由于翻译者是尤晋元,他翻译的《APUE》已经让我失望头顶了。读了这本书,对操做系统的底层怎么工做的就会 有一个清晰的认识。
《Linux Device Driver》2e ,为数很少的关于Linux设备驱动程序的好书。不过内容有些杂乱,若是您没有一些写驱动的经验,初次看会有些摸不着南北。国内翻译的是《Linux设备驱动程序》第二版,初版,第二版的译者我都有很深的接触,不过整体上来讲,虽然第二版翻译的有些不尽人意,可是相比初版来讲已经超出了一大截。要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工做过程有一些了解。数据结构 |