写在前面
毫无疑问,大部分资深程序员的编程生涯都是从C语言开始的。依稀还记得大一时候自学C语言时的情景,当时刚上大一,博主为了追求心仪的妹子就在完全不懂得C语言是什么的情况下报名参加下学期的计算机二级(C语言)考试。这一行为果断引来了女神关注,效果颇佳。然而在仔细了解了C语言之后,才发现比想象中的困难了一些。再加上大二的学长们各种渲染C语言有多难学,于是心中开始打鼓。
大一的寒假,我从图书馆借来了三本C语言入门的书,开始自学。其中自然有大名鼎鼎的谭浩强老人家的书。记得当时安装Turb C就花了好几天的时间,几近崩溃边缘。后来终于用一个寒假的时间把基础知识都学会了,又做了几套计算机二级的卷子,连蒙带猜的通过了第二学期的考试。从此就算是和编程结了缘。
当年的妹子如今已经杳无音信,而C语言的代码我一写就写了十年。
这十年里,IDE从最简单的Turb C到VC 6.0再到VS2005、2008、2010、2013...开发方向从嵌入式到Windows开发再到Linux服务器开发,当年学习C语言那份热情依然还在。后来又在公司担任了新员工试用期项目培训的工作,每年都要把变量的指针和指针变量这样的东西反复讲。看着他们一个个独立完成了自己的试用期项目,博主成就感爆棚。
最近几年,一直坚持利用业余时间帮助网友解决C语言学习过程中的各种疑难问题。每天至少花费2小时时间回复邮件。随着来信越来越多,越发感到力不从心。况且大部分朋友的问题都是类似的,重复回答实在无趣,于是萌生了在简书做分享的念头。希望更多的朋友与我交流。
下面进入正题
1. 教材选择
不想给大家一长串书名,那样也许就直接抹杀了你学习C语言的兴趣,这里重点推荐三本。
《C程序设计》谭浩强
很多大牛都不推荐谭浩强的《C语言程序设计》,但我不这么认为。这本书虽然讲的不那么到位但作为初学者从它入门还是挺合适的。最重要的是,网上大部分初级网友都是以它为基础进行交流的,有了它更容易融进各种论坛的讨论。
《C程序设计语言》 Brian W.Kernighan | Dennis M.Ritchie
这本书是C语言之父Dennis参与编写的,虽然不厚,但有些思想讲得比较到位。建议初学者学习。
《C Primer Plus》
这本书是非常经典的教材,每个知识点都介绍的非常到位。可以说这是入门级的选手的终结教材。如果想学好C语言并在后面有更大的发展,这本书必须要看。它能帮你打下坚固的程序设计基础。
学习好这本书之后,学校里的各种考试和小竞赛就不在话下了。接下来,你该开始自己的进阶之路了。
2. IDE选择
如今,Turb C肯定是已经永远地退出历史舞台了,但初学者还是要选择一款合适的IDE才能方便的上手。
GCC + vim
很多学校的实验室都用的Linux系统,建议大家从vim开始编写最初的代码。
编写好后执行下面代码:
$ gcc -c main.c
$ gcc -o main main.o
$ ./main
Code::Blocks
这是一个轻量级的IDE,对于初学者而言,这是不二选择。
可以从这里下载你需要的版本
VS 2013
无疑这是C语言开发最牛X的工具,然而这里不建议初学者使用。由于Microsoft自己制定了很多自己关于开发的规则,初学者会发现课本上的代码原封不动的敲在上面却报出莫名其妙的错误。
不过,当你拥有一定C语言基础的时候,VS的学习一定是必不可少的。
3. 实践
编程是一门非常注重实践的学科,如果你不去亲自敲代码的话,那你永远也学不会。而博主也更愿意在邮件中针对具体的编程问题和大家讨论。
这里推荐两个适合初学者编程练习的在线系统。
已经入门的朋友可以前去练习,有什么问题我们一起讨论。
4. C语言知识结构
这幅图来自 bkdwei的博客
今天就先到这里,最后想说一下,如果你对编程没有兴趣的话,那还是奉劝你不要在这里浪费时间了,相信这个世界上还有太多远比编程更适合你的事情等着你去体验。
我是天花板,让我们一起在软件开发中自我迭代。
如有任何问题,欢迎与我联系。