`
frank-liu
  • 浏览: 1665622 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

读书和书籍选择问题的讨论:C语言篇

阅读更多

前言

    在前面的文章里我提到,要学习某项技术其中相关学习材料的选择非常重要。如果选择错误的材料则损失的不仅仅是钱财。这里,我就针对一些比较好的学习材料做一个收集和整理。希望能够给学习相关技术的人提供一点帮助。这篇文章主要针对C语言学习的相关材料。

基础篇

C programming language(2nd)

    这本书的作者是大名鼎鼎的C语言之父Dennis Ritchie和Brian Kernighan的作品,绝对的权威。只是出书的年代比较早,是1988年的。当年C语言还没有一个完整的国际标准。所以书中的代码写法和独特的风格被人们称为K&R C。C语言真是一个精巧的语言,在这本书里通过区区几十面的内容就把其中的核心内容给涵盖了。这本书作为入门学习来说很快,但是后面的习题还是有相当的难度的。由于年代的原因,新标准的内容在这里没有得到介绍。不管是初学者还是有经验的人,都值得细细品读。

 

C Programming: A Modern Approach, 2nd Edition

     这本书涵盖的内容相对要新一些,里面包含了对新的C99标准内容的讨论。相对来说这本书要厚一点,里面的内容讲的比较详细。后面也有很丰富的习题。大部分难度都不大,作为初学者来说,可以起到很好的锻炼效果。书中每一个小节中都有一系列的问答部分,这里对于一些细节的问题讨论很细致,列出了很多容易忽略或者容易出错的问题。

C Primer Plus (5th Edition) 

    也是讲的非常细致而且浅显易懂的书,作为专门的学习书籍效果不错。书比较厚,有900多面。里面涵盖的内容非常全面也非常细致,都按部就班的来讲,不怕你看不懂。

    这些材料对语言的基本要素介绍,语法、语义、典型用法和结构等都做了一个详尽的介绍。有了这么多好的学习材料,入门学习基本上不用考虑其他的了。

提高篇

 C Traps and Pitfalls

    

    贝尔实验室的牛人作品,列举了C语言编程的一些常见的问题。入门之后再来看其中的内容其实都比较轻松。看这书的时候可以不必正襟危坐,完全可以在一个休闲的时间,翻开看看。里面一个个生动的小问题,在不经意间就让人心领神会。有点像是一份饭后的甜点,美味可口。

Expert C Programming: Deep C Secrets

    想起当年在学校一个人住的时候,一个人坐在笨重的台式机旁边,一边翻读着这本书一边细细的品味里面的细节。这本书可以说是专家级的。对一些问题和细节的分析非常深入。好书如酒,醇香四溢。 

 

Pointers on C

    C语言里面最精彩的地方莫过于指针,这本书对这个最重要而且最麻烦的地方做了深入全面的介绍。当年和一个朋友讨论的时候,他还专门买了这本书和我讲他学习的体会。

C Interfaces and Implementations: Techniques for Creating Reusable Software 

   

    一般来说,当自己刚学完前面的入门篇材料时会有点手痒痒的,总想写出个什么大点的东西来。可是原来的书上讲的问题和示例都是规模比较小。而且在实际的工程中该怎么写代码,该怎么组织头文件,怎么编译和链接代码,这些东西都值得深究。如果想写出真正实用的代码,就好好看看这本书吧。强烈推荐。

 

    还有两本书也比较有意思,这里就不再详细的讨论。一个是C Programming FAQs: Frequently Asked Questions,书上列出了关于C常见的一些问题。配套的网站上还有相关问题的更新。另外一个是The C Puzzle Book。每年国际上会举行一个C语言混乱代码大赛。看谁把代码写得混乱的同时还能实现很牛的功能。如果谁想看看这些比较欢乐的东西,可以参考一下这个。

参考篇

 C: A Reference Manual (5th Edition) 

 

    C语言本身的功能比较精简,如果要实现很多复杂的功能,对一些标准库的使用肯定就必不可少。这是关于C语言标准库和各种语法的参考书。写代码的时候要查找哪些库,要用哪些特性,这里都有详细的介绍。

 

The Standard C Library

    我们在学习某种语言的时候,除了要学会基本语言用法,也要学会怎么灵活运用它。这本书是讲C语言的标准库是怎么设计和实现的。要学好语言就要学习优秀的代码。这里关于C标准库的代码就是一个优秀的学习参考。

    我们实际上用C语言做开发会受到一个平台的影响。典型的针对Windows平台和Unix平台,他们都有各自平台特定的API。针对这两个平台也都有一些优秀的书籍值得深入学习。

Windows平台

Programming Windows Fifth Edition

    当年在一家公司实习,一个哥们抱着这本厚厚的书每天都在认真的啃。Windows底层的hook,消息循环机制这些东西在这里都有详细的介绍。这些是在Windows平台用C语言开发需要理解的基础。

 

Windows via C/C++

    大牛Jeffery Richter的作品。可惜当年培训课程听课的人太多,一直没抢注上他讲的C#系列课程。在Windows平台玩C/C++,这本书是深入讲解的经典。

 

Unix平台

    Unix平台的经典书籍更是丰富。最数得上的应该是Richard Stevens的系列作品了。

Advanced Programming in the UNIX Environment (3rd Edition)

Unix Network Programming, Volume 1: The Sockets Networking API (3rd Edition)

UNIX Network Programming, Volume 2: Interprocess Communications, Second Edition

    关于他的这一系列书,可以说是Unix上面编程的必备。原来作者打算出个Unix网络编程的3卷集的。可惜没出完就英年早逝了。天妒英才啊!后面这几本书是一些专家在他原来的基础上修订和增补的新版本。

The Linux Programming Interface: A Linux and UNIX System Programming Handbook

    近几年难得一见的好书。比较厚有1500多面。把它研究透了你刷怪的威力该有多恐怖,只能说谁用谁知道啊。

    在这方面,还有几本很优秀的书。比如说Advanced UNIX Programming (2nd Edition)UNIX Systems Programming: Communication, Concurrency and Threads还有Understanding UNIX/LINUX Programming: A Guide to Theory and Practice

    其中 Advanced UNIX Programming这本书讲的内容和前面的APUE差不多,可以有选择的购买。里面的内容依然讲的很精彩。UNIX System Programming这本书在线程和并发方面讲解的很深入,可以作为补充的材料作为参考。而Understanding UNIX/LINUX Programming这本书可以作为学习Unix环境下面C语言编程的入门教材。它本身是哈佛大学的教材,国内也出了中译版。

后记

    有人说C语言就像是一把快刀,它很小巧很快。用的好,它会像小李飞刀一样的犀利,如果不小心也会割伤你的手。这是自己当年学习C语言的时候看过的或者参考过的一些材料。还有很多好的书由于所知有限就没有一一列出来了。目前这些书基本上在国内都有翻译版或者影印版的。不一定要每一本书都看,根据自己的需要去适当的选择吧。好东西都在这儿了,总不至于要我来喂你吧?我可没那么好心:)

  • 大小: 10.1 KB
  • 大小: 14.1 KB
  • 大小: 10.7 KB
  • 大小: 16.3 KB
  • 大小: 11.5 KB
  • 大小: 22.2 KB
  • 大小: 20 KB
  • 大小: 18 KB
  • 大小: 16.8 KB
  • 大小: 23.4 KB
  • 大小: 15 KB
  • 大小: 17.4 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics