本回答为作者(鹏鸟)原创,欢迎转发!
我是品机小屋的屋主“鹏鸟”,热衷回答有关C语言领域和家庭视听娱乐领域的问题。
C语言是一门编程语言。从C语言入门,到在某个领域使用它解决问题,这个过程需要付出很多的努力。而且,学习C语言,并不是语法学好就行OK,还要用它来解决实际的问题,需要学习很多的其他知识。
正好有很多小伙伴在问,学习C语言有没有一个路线呢?在本回答我就来说说C语言的学习路线。当然了这也只是我的看法,小伙伴们有不同的看法可以在评论区留言讨论。
C语言学习路线图如下图所示:
下面我来一个一个地解释每个阶段,希望对你有所启示。
一、C语言基础
这个阶段就是入C语言的门,学习C语言的历史、发展过程以及C语言的语法。语法也就那些个东西,像基本数据类型、程序控制结构、运算符、数组、指针、结构体、链表、文件、函数等等。比较有困惑的可能是指针、链表等。
我认为这个阶段的难点不在于学习这些语法知识点,而在于耐心。是的,你没看错,是你的耐心,这绝对是个难点。学习C语言的语法是一个非常冗长、枯燥、无味的过程;而且你还会受到周围环境影响,你的基友们在玩游戏、打牌、泡妞儿,你会不受他们的影响?谁信!这个时候就看你有没有较好的心理素质,看你能不能扛过来,在该学习的时候仍然能耐心地坐着学习。所以耐心这个东东,靠你自己了!
这个阶段还需要了解C语言常用的标准函数库。比如字符串函数库的常用函数,数学函数库的常用函数等。这些函数库会在代码中经常用到。
二、深入C语言
经过第一阶段的C语言基础学习,你可能只是获取了表面上的认识,也许你还需要进一步提升自己,加深自己对C语言的认识。举个例子吧,学到赋值运算符“=”时,你知道了这是个用来给变量赋值的运算符,在if语句中,你可能会这样写:
if ( 变量a == 1)….
但是有经验的程序员却会这样写:
if ( 1 == 变量a)….
所以需要在进阶的阶段,多了解一些C语言更为本质的东西。
这个阶段你可以选择性地看一些C语言提高的书籍,来帮你更为深入地认识与理解C语言,帮你纠正你在基础阶段的一些错误的认识。
三、平台选择
在C语言基础阶段和C语言深入阶段,你仅仅是在学习C语言这个工具,无关乎在哪个操作平台。现在这个阶段,你就需要决定你未来在哪个操作系统平台上使用C语言编码。
如今主流的两个平台一个是Windows,一个是Linux。就目前来看,商用的平台以Linux居多,你工作之后很有可能是在Linux上做项目。而在学校里,可能在Windows上做项目的居多。
一旦你选择了一个平台,那么你就需要学习在这个平台下的编码知识。
如果你选择的是Linux,那么你也许需要知道:
Linux现在有很多的免费的发行版,比如Ubuntu、openSUSE等,你可以下载你喜欢的,自己先上手玩玩。
Linux下的C语言编译工具,gcc、make等。
Linux下的调试工具,比如gdb。还有一些内存工具等。
代码编辑工具。比如Vim,Emac等。你需要学习Vim的一些命令。
如果你对图像化开发环境比较感兴趣,你可以找一些免费的IDE,比如有Linux版本的Eclipse等。
Linux环境下如何组织多个源文件,并且编译它们、运行它们。
如果你选择了windows平台,那么你需要了解常用的开发IDE等。目前比较流行的IDE是微软的Visual Studio家族。至于Visual C++ 6.0,建议别用了,实在是太老了!
四、编码
在上述三个阶段中,每个阶段都需要上机练习敲代码。遵循由简到难的原则,慢慢来,不要急,刚开始写的代码我觉得能运行出来就行。后面随着时间的延长,慢慢地就要注意代码的风格、代码的规范,还要开始学习一些数据结构、算法的基础知识了。
现在网上有很多的刷题网站,比如著名的OJ题库就很不错,经常上去练练手,把自己目前学到的所有知识,包括C语言语法知识、C函数标准库、调试方法、跟踪方法、数据结构、算法等都用上去,就这样慢慢地去提高自己的水平。
五、领域选择
如果说上述四个阶段还属于自娱自乐的话,那么从这个阶段开始,你就要开始严肃一点了。
经过之前的四个阶段,也许你的编程技术有了很大的提高,基础也打的很牢固了,但是不能解决生活、工作中的实际问题有个鸟用!所以,现在到了你为自己选择一个研究领域的时候了,说不定也是你未来工作的研究领域。
C语言可应用的领域很多,我想到的大概有如下几方面:
计算机网络;
图像处理;
音视频处理;
嵌入式开发;
DVB数字电视;
硬件驱动;
……….
你选择了某个领域,你就要去学习这个领域的知识。这个时候,你之前学习的所有的编程技术都只是工具而已,工具只是用来解决问题的。举个例子,你选择了在计算机网络领域使用C语言解决问题,今后想从事网络方面的编程,开发聊天软件、文件传送软件等,那么你就需要好好学习计算机网络领域的知识,包括OSI七层模型、TCP/IP协议族、路由器、交换机等等。如果你选择了音视频处理,今后想从事音视频应用开发,那么你就需要学习编码、解码、封装、流媒体等概念;如果你选择了DVB数字电视,那么你就需要学习PSI/SI标准、解扰、解调、复用等概念。
六、继续编码
在你选择你研究的领域后,选择你使用的平台,那么你就要开始在这个OS平台上,使用C语言解决你这个领域内的问题了。如果说在第四阶段,你写的代码叫“练手代码”,那么现在你写的代码就是“业务代码”了。如果说在第四阶段,你写代码的目的还只是磨炼自己的技术,那么现在你写代码的目的纯粹就是在解决问题,帮助你的公司创造价值。
七、编程磨炼
在第六阶段的编码中,你对自己的技术需要“深入”。你的编程意识要深入,编程思想要深入,你选择的OS平台要深入,你的算法设计要深入,你的代码管理要深入…….总之,一切都要“深入”!
八、代码管理
代码管理在整个项目管理中非常重要。常用的代码管理工具有SVN、Git等等,这也是你必须要学习的工具。
上面是我总结的C语言学习的路线。这八个步骤并不是严格的顺序关系,因人而异。
这个路线图还有许多东西需要补充,小伙伴们有什么好的建议可以给我留言,一起来完善这个路线图。
小编从事嵌入式C语言编程十余年,从三个层次谈谈如何学好C语言,贻笑大方。
1.初级阶段,目标是了解C语言,会用C语言。这个入门的初级阶段,很重要,它是技术大厦的根基,不应也不该随便完事。此阶段应注意:C语言,编码风格。
小编强烈推荐一本书:C primer plus。该书畅销30余年,知识覆盖面全,讲解简单,通俗易懂。
编码风格,可以参考一些大公司,如谷歌,华为等一些编码规范,亦可参考一些行业标准。
2.进阶阶段,
目标是熟悉C语言,用好C语言。这个阶段是拉开距离的阶段,务必把握好方向,踏实地努力学习。此阶段应注意:向经典学习,以C语言为中心扩散学习。
小编推荐一本书《程序员的自我修养-链接、装载和库》,主要介绍系统软件的运行机制和原理,涉及在Windows和Linux两个系统平台上,一个应用程序在编译、链接和运行时刻所发生的各种事项。
小编建议至少研读一款嵌入式操作系统,推荐uC/OS-II(最新是ⅠⅠl版),uC/OS II(Micro Control Operation System Two)是一个可以基于ROM运行的、可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,适合很多商业操作系统性能相当的实时操作系统(RTOS)。
3.高级阶段,目标是精通C语言,认识C语言。此阶段应回归基本,深挖基础,在语法,语义,语句,都有独到的见解,阅读一切代码,尤其是复杂的大型的代码无障碍,例如Linux。理解代码作者意图和思想,通俗来讲,增删修改代码时,应和作者一脉相承,就像同一个人写的那样。此阶段完成的好,就练就了举一反三的本领,其他编程语言,也会很容易上手掌握。
以上每一个阶段,看书,阅代码,写代码,这三步曲都应反复实践,多思考多总结,量变提升到质变,自然水到渠成。
谢谢大家。
原创文章,作者:普尔小编,如若转载,请注明出处:http://www.puerpx.cn/pxwd/4735.html