zoukankan      html  css  js  c++  java
  • Linux下C语言高手成长路线(转载)

    建议学习路径: 

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

      然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。 

      如果想学习UNIX/LINUX的编程,《Advanced Programing in Unix Envirement》绝对经典的教材,加深一下功底,学习《Unix Network Programing》的第二卷。这样基本上系统方面的就可以掌握了。

      然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技巧就很熟悉了,如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用协议telnet、ftp等协议的编程。
    如果想写设备驱动程序,首先您的系统编程的接口比如文件、IPC等必须要熟知了,再学习《LDD》2。 

      对于几本经典教材的评价: 

      《The C Programing Language》K&R 经典的C语言程序设计教材,作者是C语言的发明者,教材内容深入浅出。虽然有点老,但是必备的一本手册,现在有时候我还常翻翻。篇幅比较小,但是每看一遍,就有一遍的收获。另外也可用谭浩强的《C语言程序设计》代替。

      《Advanced Programing inUnix Envirement》 W.RichardStevens:也是非常经典的书(废话,Stevens的书哪有不经典的!),虽然初学者就可以看,但是事实上它是《Unix NetworkPrograming》的一本辅助资料。国内的翻译的《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 - Designand Implement》这个是讲操作系统的书,用Minix做的例子。作者母语不是英文,所以英文看起来比较晦涩。国内翻译的是《操作系统 设计与实现》,我没看过中文版,因为翻译者是尤晋元,他翻译的《APUE》已经让我失望头顶了。读了这本书,对操作系统的底层怎么工作的就会
    有一个清晰的认识。 

      《Linux Device Driver》2e ,为数不多的关于Linux设备驱动程序的好书。不过内容有些杂乱,如果您没有一些写驱动的经验,初次看会有些摸不着南北。国内翻译的是《Linux设备驱动程序》第二版,第一版,第二版的译者我都有很深的接触,http://blog.csdn.net/shanzhizi不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超出了一大截。要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工作过程有一些了解。


    推荐《unix环境高级编程》 
    《linux kernel development》(中文名忘了) 
    《linux内核剖析》 
    《linux设备驱动》 
    《深入理解linux内核》

    初级:熟练使用命令、熟悉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基础http://blog.csdn.net/shanzhizi 
    1、《Linux与UnixShell 编程指南》 
    C语言基础 
    1、《C Primer Plus,5thEdition》【美】Stephen Prata着 
    2、《The CProgramming Language, 2nd Edition》【美】Brian W.Kernighan David M. Rithie(K & R)着 
    3、《AdvancedProgramming in the UNIX Environment,2nd Edition》(APUE) 
    4、《嵌入式Linux应用程序开发详解》 
    Linux内核 
    1、《深入理解Linux内核》(第三版) 
    2、《Linux内核源代码情景分析》毛德操 胡希明著 
       研发方向 
    1、《UNIX NetworkProgramming》(UNP) 
    2、《TCP/IP详解》 
    3、《Linux内核编程》 
    4、《Linux设备驱动开发》(LDD)  
    5、《Linux高级程序设计》 杨宗德著
       硬件基础 
    1、《ARM体系结构与编程》杜春雷着 
    2、S3C2410Datasheet 
       英语基础 
    1、《计算机与通信专业英语》 
       系统教程 
    1、《嵌入式系统――体系结构、编程与设计》 
    2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着 
    3、《BuildingEmbedded Linux Systems》   
    4、《嵌入式ARM系统原理与实例开发》 杨宗德著
       理论基础 
    1、《算法导论》 
    2、《数据结构(C语言版)》 
    3、《计算机组织与体系结构?性能分析》 
    4、《深入理解计算机系统》【美】RandalE. Bryant David O''Hallaron着 
    5、《操作系统:精髓与设计原理》 
    6、《编译原理》 
    7、《数据通信与计算机网络》 
    8、《数据压缩原理与应用》 

    C语言书籍推荐 
    1. The C programming language 《C程序设计语言》 
    2. Pointers on C 《C和指针》 
    3. C traps and pitfalls 《C陷阱与缺陷》 
    4. Expert C Lanuage 《专家C编程》 
    5. Writing Clean Code -----MicrosoftTechiniques for Developing Bug-free C Programs 
       《编程精粹--Microsoft 编写优质无错C程序秘诀》 
    6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》 
    7.《C语言嵌入式系统编程修炼》 
    8.《高质量C++/C编程指南》林锐 
       尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。

  • 相关阅读:
    对象池使用时要注意几点
    Flash3D学习计划(一)——3D渲染的一般管线流程
    714. Best Time to Buy and Sell Stock with Transaction Fee
    712. Minimum ASCII Delete Sum for Two Strings
    647. Palindromic Substrings(马拉车算法)
    413. Arithmetic Slices
    877. Stone Game
    338. Counting Bits
    303. Range Sum Query
    198. House Robber
  • 原文地址:https://www.cnblogs.com/wangtao1993/p/5904279.html
Copyright © 2011-2022 走看看