一.嵌入式开发中为什么选择C语言(C语言久盛不衰的主要原因)?
操作系统内核都是用C语言实现的。
那为什么操作系统内核都是用C语言实现呢?
1. C语言特点
*C语言有出色的移植性,能在不同体系结构的软/硬件平台上运行。(修改的地方越少移植性越好)
什么是代码移植性?如何提高代码移植性?
可移植性并不是指所写的程序不作修改就可以在任何计算机上运行,而是指当条件有变化时,程序无需作很多修改就可运行。
要使程序可移植:
1)使用标准库函数,并且把它们和ANSI/ISO C标准中定义的头文件放在一起使用;
2)尽可能使所写的程序适用于所有的编译程序,而不是仅仅适用于你现在所使用的编译程序;
3)把其中不可移植的代码分离到一些独立的“.c”文件中。
*C语言简介紧凑,能直接访问硬件。
(汇编语言也能直接访问硬件,两者区别:汇编语言直接生成机器码控制硬件,效率高,但汇编语言是低级语言,不适用与内核中复杂功能的实现,对硬件的初始化时使用汇编语言;C语言经过预处理、编译、汇编生成机器码,效率低,但C语言属于高级语言,对硬件做复杂操作使用C语言)
*C语言有较高的运行效率。(解释性语言(Java、python)效率低,但适用于不同语言)
2. 嵌入式开发中的地位-开发工具
嵌入式Linux应用软件开发工程师
嵌入式Linux驱动开发工程师
嵌入式BSP开发工程师
嵌入式kernel开发工程师
3. 高级语言中的低级语言
C语言VS汇编语言:
汇编:效率高,对硬件的可操控性强,体积小,不易维护,可移植性很差;
C语言:效率比较低,硬件可操控性比较差,目标代码体积大,容易维护,可移植性很好。
汇编语言直接生成机器码控制硬件,效率高,但汇编语言是低级语言,不适用与内核中复杂功能的实现,对硬件的初始化时使用汇编语言;C语言经过预处理、编译、汇编生成机器码,效率低,但C语言属于高级语言,对硬件做复杂操作使用C语言。
C语言VS其他高级语言:
C语言有较高的运行效率。(解释性语言(Java、python)效率低,但适用于不同语言)
二.精通C语言考核标准
1.企业笔试题
2.累计代码量
3.良好的编码规范(华为的编码规范要求)
4.行业应用的项目经验
三.如何学习C语言?
推荐教材:《C和指针》、《C语言专家编程》、《高质量C/C++编程》、《编程之美》、《C程序设计》、《程序员的自我修养》
四.C语言相关基础知识点
1. 机器语言à汇编语言àC语言
汇编语言应该是我们现在学的最“低级”的语言了,因为现在不会再有人去学机器语言了。而汇编语言还在一些硬件或者嵌入式设备上使用并开发着。
汇编语言和机器语言一一对应。
汇编程序就是用来把由用户编制的汇编程序翻译成机器语言程序的一种系统程序。
高级语言的翻译程序有两种:
一种是先把高级语言程序翻译成机器语言,(或先翻译成汇编语言,然后又汇编程序再次翻译成机器语言)然后才能在机器上执行。——编译程序
直接把高级语言程序在机器上运行,一边解释一边执行。——解释程序
翻译程序包括汇编程序、解释程序、编译程序。
2. C语言之父是谁?
丹尼斯·里奇
有无A语言,B语言,C语言?
(1).A语言
C语言的原型ALGOL 60语言。(也称为A语言)
1963年,剑桥大学将ALGOL60语言发展成为CPL(Combined Programming Language)语言。
1967年,剑桥大学的Matin Richards对CPL语言进行了简化,于是产生了BCPL语言。
(2).B语言
1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统。
(3).C语言
在1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BGPL的第二个字母作为这种语言的名字,这就是C语言。
为了使UNIX操作系统推广,1977年Dennis M.Ritchie 发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。
3. C语言的标准有哪些?
ANSI C和ISO C、C89、C99、C11