嵌入式开发交流网论坛
标题:
为何要学习C语言,以及如何学习C语言
[打印本页]
作者:
hjkkjh110
时间:
2019-1-26 21:53
标题:
为何要学习C语言,以及如何学习C语言
有关为何要学习
C
语言以及如何学习
C
语言这个话题,可以说和“一千个读者就有一千个哈姆雷特”一样,每个人都有每个人的见解和学习方式。回想起
10
年前的那个暑假,自己跟着某天翔七天学会单片机的视频教程一步一步学习
C
语言、单片机的日子,不由得感慨万千,想起自己在开发路上走过的路,坎坎坷坷。。。
废话说多了,,,有关本文的主题,个人感觉,这个首先该看自己的定位在哪,不同的目的会有不同的过程,一般学习
C
语言分为以下几种情况:
1.
学校开设这门课程,学习
C
语言仅仅是为了应付考试
。如果是这种情况,跟着老师步子走,把课后题多做一些,多上机练一练,考个高分还是不成问题的。
[attach]24461[/attach]
2.
业余编程,把
C
语言当成一种爱好
。如果是这种情况,可以较为深入的学习一下
C
语言,多看一些源码,看看别人怎么用
的,然后多多将自己的实际问题转化成
C
代码实现一下就
OK
了。
[attach]24462[/attach]
3.
要从事其它语言开发,把
C
语言当成一种敲门砖
。这种情况比较复杂,因为我曾经走过这条路子,
14
年曾经尝试着转纯软件开发,后来感觉那种日子不如搞软硬结合来的爽快、成就感强,就放弃了。抱这种目的的,也分情况,如果是从事
web
开发这个方向,学不学
C
语言作用都不是很大,尤其是从事前端开发,有没有
C
基础,几乎对前端的学习没有一点帮助。如果是从事后端开发,有
C
基础肯定比没有好点,但是这种付出不成比例,
C
指针那块太耗时、耗力,建议直接上后端开发语言(比如
Java
、
php
等)即可。
[attach]24463[/attach]
4.
嵌入式开发
。这种情况,如果纯裸机开发,就掌握了
C
基础以后,多看别人的代码,多学编程思路,多使用结构体封装,多使用模块化编程,便于代码移植、复用,多从项目整个框架的层面考虑就可以了。如果是开发比较轻量级的系统,比如
FreeRTOS
、
uCOS
等,可以掌握
C
基础以后,直接上源码即可,多研究下这些系统的功能是如何实现的,掌握指针与数组、函数的关系,然后多加分析、练习就差不多了。这种情况,建议当你感觉到没什么进步的时候,找一个固定平台学习一下汇编,推荐
ARM
平台的汇编,因为
ARM
汇编标准化比较高,而且将来一定是
ARM
的天下,现在
Cortex-M0
核的
MCU
已经
2
块钱以下了,低端到高端产品线超级丰富,选择性太好了,还犹豫啥呢?!对照着指令手册,慢慢分析下自己的
C
源码产生的汇编是什么样子、该如何优化,看下自己的
C
代码的变量、函数等内容的地址是怎么分布的、字节对齐有什么效果等等,调试的时候多借助下映射、链接文件,会极大提高调试效率。这个阶段,需要熟练掌握、随意应用指针与结构体、数组、函数的转化的时候,就说明已经可以结束了。
[attach]24464[/attach]
5.
安全、内核、驱动开发
。这种情况,就需要深入学习一下
C
语言了,不仅要对
C
语言的语言特性了如指掌,也要对
C
代码转化为汇编以后的行为、特性进行分析,这种能力越熟练越好。我本人也是一直在内核、驱动两方面折腾,这方面还算比较了解,可以多说一点我的学习过程。首先我们要做好长期吃苦的准备,但是这种苦是值得的,我们要明白,不吃学习的苦就得吃生活的苦,而生活的苦比学习的苦苦太多,在该吃苦的年纪,就应该多吃点苦,既然这样,那我们为何不多吃点学习的苦,少吃点生活的苦呢。这个阶段是建立在第
4
阶段之上的,要想从事这类开发,不仅要熟练掌握操作系统原理这种宏观、原理层面的技术,也要对
C
语言、汇编、工具链都有所了解,而且,这些内容掌握越多越好、越深入越好,我们要掌握控制工具链对自己源码(可能不仅仅有
C
程序)“加工”的过程,还要考虑这种
C
源码会产生何种汇编代码,会导致机器做出什么样的行为。这个阶段,当你可以使用工具链将程序的各个段按自己意愿进行分布、排列;当给你一段可执行程序代码,你可以使用工具链导出反汇编文件,进而分析出它的功能的时候,就差不多可以了
~
[attach]24465[/attach]
总之,学习是一个反复的过程,嵌入式开发知识面广、体系杂,要想成为高手,就需要时刻保持一颗学习的心。本号接下来会连载《随时随地学习
C
语言》系列,将本人在嵌入式、内核及驱动开发路上的经验、感悟及心得与你分享,绝对干货满满,赶紧上车吧
~
欢迎光临 嵌入式开发交流网论坛 (http://www.dianzixuexi.com/bbs/)
Powered by Discuz! X3.2