学习linux/unix编程方法的建议

    看了这篇文章,看来自己的路还很长,想成为一个合格的程序员,并不是一件简单的事情。努力吧,呆娃!下面是原文,转过来,作为我程序员之路的一个参考!

------------------------------------------------------------------------------------------------------------------------------------

       首先先学学编辑器,vim, emacs什么的都行。 然后学make file文件,只要知道一点就行,这样就可以准备编程序了。  

  然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。  
  如果想学习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设备驱动程序》第二版,第一版,第二版的译者我都有很深的接触,不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超出了一大截。要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工作过程有一些了解。

------------------------------------------------------------------------------------------------------------------------------------

学习linux/unix编程方法的建议,学习Linux的四个步骤:

    假设你是计算机科班出身,计算机系的基本课程如数据结构、操作系统、体系结构、编译原理、计算机网络你全修过。
    我想大概可以分为4个阶段,水平从低到高:从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码 
    其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数 ,安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式。系统编程推荐《高级unix环境编程》,黑话叫APUE,还有《unix网络编程》。这时候大概还需要看资料理解elf文件格式,连接器和加载器,cmu的一本教材中文名为《深入理解计算机系统》比较好。内核开发阅读内核源码阶段,从写驱动入手逐渐深入linux内核开发,
参考书如下《linux device drivers》,黑话叫ldd,《linux kernel development》,黑话叫lkd,《understading the linux kernel》,黑话叫utlk,《linux源码情景分析》。这四本书为搞内核的必读书籍。
    最后,第三阶段和第四阶段最重动手,空言无益,光看书也不罩,不动手那些东西理解不了。

------------------------------------------------------------------------------------------------------------------------------------
linux后台开发必看书 

程序设计类
    《C++ PRIMER》
系统编程类
    《UNIX环境高级编程》W.Richard Stevens:非常经典的书。虽然初学者就可以看,但是事实上它是《Unix Network Programing》的一本辅助资料。国内的翻译的《UNIX环境高级编程》的水平不怎么样,现在有影印版,直接读英文比读中文来得容易。
    《Unix网络编程卷二》Unix网络编程卷第二卷没有涉及网络的东西,主要讲进程间通讯和Posix线程。
网络编程类
    《Unix网络编程》第一卷讲BSD Socket网络编程接口和另外一种网络编程接口的,不过现在一般都用BSD Socket,所以这本书只要看大约一半多就可以了。
    《TCP/IP详解》一共三卷,卷一讲协议,卷二讲实现,卷三讲编程应用,也很经典的。
    《用TCP/IP进行网际互连》一共三卷,内容讲解十分精彩。卷一讲原理,卷二讲实现,卷三讲高级协议。感觉上这一套要比Stevens的那一套要好,就连Stevens也不得不承认它的第一卷非常经典。事实上,第一卷即使你没有一点网络的知识,看完以后也会对网络的来龙去脉了如指掌。第一卷中还有很多习题也设计得经典和实用,因为作者本身就是一位教师,并且卷一是国外研究生的教材。习题并没有答案,留给读者思考,因为问题得答案可以让你成为一个中级的Hacker,这些问题的答案可以象Douglus索取,不过只有他只给教师卷二我没有怎么看,卷三可以作为参考手册,其中地例子也很经典。
Linux系统管理类
    《linux系统管理手册》《LINUX与UNIX SHELL编程指南》《Advanced Bash Scripting Guide》
系统内核类
    《Linux内核代码情景分析》《深入Linux内核源码》
面向对象设计类
    《设计模式》《敏捷软件开发:原则、模式与实践》《敏捷项目管理》
内功修炼类
    《操作系统:设计与实现(第二版)》《操作系统概念》《数据结构与算法-面向对象的C++设计模式》《编译原理》国防陈火旺
    《离散数学及其应用》《计算机组织与体系结构?性能分析》
《深入理解计算机系统》【美】Randal E. Bryant David O'Hallaron著v.


初级:熟练使用命令、熟悉Shell编程、能配置简单的服务,清楚各类服务相关的配置文件的位置,能看懂并可修改系统提供的配置脚本(/etc/*.*)
推荐书籍:
《鸟哥的私房菜基础篇、高级篇》
《Advanced Bash Shell》


中级:熟悉TCP/IP原理、OS原理、熟练使用C语言、Linux系统编程、网络编程。
推荐书籍:
《The C Programming Language》
《Unix环境高级编程》
《Linux程序设计》
《TCP/IP协议详解卷一》
《Unix网络高级编程》


高级:
《Linux Device Driver》
《深入理解Linux内核》
《深入理解计算机系统》
《深入理解LINUX网络内幕》

-----------------------------------------------------------

Linux系统和内核编程学习路线

系统编程学习路线 
这里推荐几本书,关于学习Linux或其他Unix系统编程,按照由浅入深的顺序:


1 入门篇
《Linux程序设计》,英文名《 Beginning Linux Programming 》
《Linux C编程一站式学习》,国内一老师写的,从C语言到系统编程,非常适合入门,强烈推荐:http://learn.akae.cn/media/

2 提高篇
《UNIX环境高级编程》,Unix系统编程的圣经,没有比这本书更经典的了,网友称呼这书为APUE
《Unix系统编程》,英文名《UNIX Systems Programming: Communication, Concurrency and Threads》,虽然名声没有APUE那么大,但是这本书侧重的并发和通信正好是APUE介绍的比较少的,非Stevens书不读的人要看完APUE之后在《Unix网络编程》第二卷中才能系统的学习到进程间通信。

3 进阶篇
《UNIX网络编程》卷一和卷二,学习到这一步建议就看英文原版了,卷一介绍Socket套接字,卷二介绍进程间通信:

4 高手篇(内核编程)
到这一步就该深人系统内核了,掌握内核可以帮助你更深入透彻的理解计算机系统,写出更好的系统程序。
内核编程从驱动入手不错的选择
1) Linux kernel design and implement Robert love
2) Understanding the Linux kernel
3) Understanding the Linux memory management system
4) Professional Linux kernel architecture
5) Linux device driver

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值