学习编程语言没有捷径,就是多学多练。针对C和C++语言, 推荐是看书+实战的组合。针对这两方面分别讲一下:

C语言书籍推荐

关于C语言首先帮大家排除一本书,那就是谭浩强的C语言。这本书可能现在还是各大学校的教材,但是这本书对于初学者来说简直是灾难。因为这本书里讲的基本上都是C语言的各种无用的技巧,很多原理根本没有讲明白。谭老师作为早期国内编程语言的启蒙者这一点值得尊敬,但是时代变了,现在有更好的入门教材,这本书应该作为历史的见证进入博物馆了。

哈佛CS50 建议你先看看这门公开课,对计算机有个初步的了解,搭配里面简单的C语言入门,让你知道C语言的威力。

C语言程序设计现代方法 然后可以看一下这本书,巩固一下C语言基础。

C程序设计语言 然后看这一本。C语言的作者Dennis M. Ritchie和计算机科学家Brian W. Kernighan一起写的书。由于是作者亲自写的,一些概念给你讲的非常清楚。

C++书籍推荐

C++ Primer 中文版(第 5 版) 学完C语言可以看这本书入门C++了。虽然很厚,但是整体章节的设置很合理,从易到难。学C++不是一件容易的事,你看其他书入门可能更难。

Effective C++ More Effective C++ 这两本书值得读十遍。但是不要一口气读十遍,而是使用一段时间的C++后再来读。所谓的常读常新,常新常读,这两本书绝对做到了。

STL源码剖析 侯捷老师的作品。用好C++,STL库必不可少,想用好STL,看这本书就行。

Boost源码分析 boost中的一些编程思想还是很值得学习的。

Linux多线程服务端编程 : 使用muduo C++网络库 这本书我虽然主要讲网络编程,但是我从书里学到了很多C++的知识,而且非常的实用。

C++程序设计语言 C++之父的书,最起码看完Effective C++之后再看吧。说实话这本书我没有看完,因为当时我看的时候,还缺乏足够的经验来领会作者的思想。这本书不像Effective C++那样把示例写的很清楚,很多东西作者可能觉得轻而易举,但是对于初学者却是难如登天。

实战

最好的方法就是模仿优秀的代码。这里推荐几个短小精悍的项目,学会了包你受益无穷。由易到难:

Tinyhttpd (https://github.com/EZLippi/Tinyhttpd): 是J. David Blackstone在1999年写的一个不到 500 行的超轻量型 Http Server,用来学习非常不错,可以帮助我们真正理解服务器程序的本质。

cJson(https://sourceforge.net/projects/cjson): 看早期的实现就好,github的后来比较复杂了。

一些c的小项目(https://github.com/rby90/project-based-tutorials-in-c):内容丰富。

tinypython(http://www.tinypy.org/): 用c语言实现一个简单的python解析器。

深入理解计算机系统(https://book.douban.com/subject/5333562/) 里面的项目都很好,但是需要一些计算机原理的知识,学编程的必看。

Linux 内核 0.12 完全注释(https://book.douban.com/subject/3229243/) 看看Linus是怎么写c语言的。

码字不易,如果觉得不错,请点击 “在看”, 感谢支持。