前言
在前面的文章里我提到,要学习某项技术其中相关学习材料的选择非常重要。如果选择错误的材料则损失的不仅仅是钱财。这里,我就针对一些比较好的学习材料做一个收集和整理。希望能够给学习相关技术的人提供一点帮助。这篇文章主要针对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语言的时候看过的或者参考过的一些材料。还有很多好的书由于所知有限就没有一一列出来了。目前这些书基本上在国内都有翻译版或者影印版的。不一定要每一本书都看,根据自己的需要去适当的选择吧。好东西都在这儿了,总不至于要我来喂你吧?我可没那么好心:)
相关推荐
"《数据结构与算法分析:C语言描述》读书笔记模板.pptx" ...《数据结构与算法分析:C语言描述》读书笔记模板.pptx是一本非常有价值的参考书籍,对于计算机专业的学生和研究生来说非常适合阅读和参考。
在深入探讨C语言的知识之前,让我们先明确一下“C语言经典书籍”的读书笔记主要涵盖了哪些核心概念。这里主要讨论了变量、内存地址、指针、指针变量、指针与数组的区别、左值和右值以及`const`关键字的用法。 首先...
5. 标准I/O库:这部分内容是关于C语言中标准I/O库的使用,包括文件流的概念,标准输入输出流stdin、stdout和stderr,标准I/O的缓冲机制,文件流的打开、读写、关闭以及定位操作。还介绍了一些格式化输入输出函数以及...
- **《C陷阱与缺陷》读书笔记** - 解析了C语言中常见的陷阱和错误,并提供了避免这些错误的方法。 - **《上交大C++视频教程》读书笔记** - 介绍了C++的基础语法和面向对象编程的概念。 - **《Linux程序设计》读书...
《LINUX应用程序开发指南:使用GTK+ GNOME库》是一本深入探讨Linux环境下应用程序设计与开发的专业书籍,尤其关注使用GTK+和GNOME库这一流行工具集。GTK+(GIMP ToolKit)是用于创建图形用户界面的一个开源库,广泛...
《C程序设计题解与上级指导》第二版是由谭浩强教授编著的一本经典教材,旨在帮助读者深入理解和掌握C语言编程技能。这本书不仅包含了基础的C语言知识,还提供了大量的实例和习题,旨在提升读者的编程实践能力。 在...
在深入讨论标题“数据结构之线性表基础与实现c++”和描述“数据结构的线性表读书笔记,分别用代码实现了基于数组、malloc、链表、模板类的线性表”中涉及的知识点之前,需要先理解线性表在数据结构中的基本概念。...
Erlang是一种专门用于并发计算的高级编程语言,由瑞典爱立信公司开发。...通过阅读专业的Erlang书籍和实践,开发者可以利用这种语言的独特能力,解决当今和未来软件开发中的一些最具挑战性的问题。
你需要什么技术基础 在本书中所用到的计算机语言只有两种:汇编和 C语言。所以只要你具备汇编和 C语言的经验,就可以阅读本书。除对操作系统常识性的了解(比如知道中断、进程等概念)之外,本书不假定读者具备其他...
你需要什么技术基础 在本书中所用到的计算机语言只有两种:汇编和 C语言。所以只要你具备汇编和 C语言的经验,就可以阅读本书。除对操作系统常识性的了解(比如知道中断、进程等概念)之外,本书不假定读者具备其他...
帕普图书俱乐部 这是一个读书俱乐部,通读并研究了Paul E. McKenney的书“并行编程难,如果可以,您将如何做?(第二版)”。 一本书也可能因其替代标题而著称,“逗号,这么多,而且合而为一,奇特的标题”和“让...