一、嵌入式开发中为什么选择C语言?

1. C语言具有出色的可移植性,能在多种不同体系结构的软/硬件平台上运行。

什么是移植性呢?移植性就是把一个平台上的代码放到另一个平台上。在把代码从一个平台换到另一个平台的时候,修改的东西越少,就说明移植性越好。

2. C语言具有简洁紧凑、使用灵活的语法机制,并能直接访问硬件。

操作系统的主要作用是管理硬件资源和软件资源,而嵌入式开发模式是软件通过操作系统,由操作系统直接管理硬件,所以我们用一款能够直接访问硬件的编程语言可以加快资源管理的速度,提高效率。

那么在这里又有一个问题,可以直接访问硬件的编程语言有两种:C语言和汇编语言。那我们在用语言访问硬件时该如何选择呢?

首先,我们要知道C语言和汇编语言都可以直接访问硬件;再者,C语言在使用时需要编译,而汇编语言是机器语言,在使用时不需要编译,所以在访问硬件的时候效率最高。但这些都无法让我们判断该在什么时候用C语言,什么时候用汇编语言。

那么就要从它们的级别上看了。汇编语言是一种低级语言,没有高级语法,所以想要实现一些比较复杂的功能会很困难;但C语言是一种高级语言,有一些相对较为复杂的高级语法,所以可以实现复杂功能。从这里我们能够看出,如果要对硬件进行一些复杂的操作,那么就应该选择C语言。需要注意的是,对硬件的一些初始化一般是使用汇编语言的,但一定要是简单的初始化。

3. C语言具有很高的运行效率。

在这里我们要提到“解释性语言”这个概念。我们知道计算机不能理解任何除了机器语言之外的其他语言,所以就要把我们写的代码翻译成机器语言,这样计算机才可以执行。这种将其他语言翻译成机器语言的工具,就是编译器。

而编译器翻译的方式有两种,一种是编译,另一种就是翻译。C语言就是编译性语言,解释性语言包括java等。

通俗点来说,比如我要去一个国家玩,而我并不懂这个国家的语言,这时候我就要找一个翻译,他可以把我的语言翻译给别人,也可以把别人的语言翻译给我。这样只要我能够找到翻译,我就可以去任意一个国家玩了。或者说如果有一个人他会50种语言,我只要带着他,就可以去用这些语言的任意一个地方玩了。那么从这里就可以看出解释性语言的一大优点,就是可以适用于不同的平台,只需要我有一个比较强大的翻译器就可以。

但之前我们就讲过,C语言可以直接访问硬件,这一功能是解释性语言不具备的,那么就导致了一个问题,就是运行效率低。

就比如我们现在要去图书馆借书,我们可以直接告诉图书管理员我想要借哪本书,图书管理员去帮我们找到这本书,我们就可以直接借书了。这个时候我们需要的是什么呢?我们需要的是一个非常了解图书馆构造的图书馆管理员,这样他可以非常快地帮我们找到我们想要的书籍,如果这个图书管理员找书籍的速度很慢,那么我们就需要等很久。

在这里,书籍就相当于我们要访问的硬件资源,而图书管理员就相当于操作系统,如果我们用一种能够直接访问硬件的语言,就相当于我们找到了一个熟练的图书管理员,运行效率会很高,相反,如果我们所用的语言不能直接访问硬件,那么运行效率就会比较低。

二、面向过程处理机制 VS 面向对象处理机制

我们知道C语言是面向过程的语言,而C++是面向对象的语言,那么两者到底有什么区别呢?

首先,面向过程的语言主要是用来实现原理,操作具体事物;而面向对象的语言主要是实现效果,最终实现的效率。就比如我要从A地到B地,如果我选择面向过程,那么就需要我自己去规划路线,看到底怎么样才能从A到B;而如果我选择面向对象,那么就相当于我在A地打了一辆出租车,我告诉司机我要去B,然后就可以一直坐着最后能到目的地就可以,路线什么的就不用我管了。

三、面向对象语言的三大优点

再来说一下面向对象的语言的优点,主要有三大优点:

① 有很好的代码复用性

② 有很好的代码维护性

③ 有很好的代码扩展性

下面解释一下这些都是什么意思。

1. 代码复用性

  如果我要在一个程序中使用另一个程序的一段代码,那么我应该怎么做呢?有人说最简单的方法就是复制、粘贴,那么注意了,这并不是复用性。什么叫复用性呢?就是我写了一段代码,可以重复使用,还可以直接调用,并不需要复制、粘贴。

面向对象的语言就有很好的代码复用性。而我们在C语言中都接触过函数,函数的作用是什么呢?现在我们知道了,写函数就是为了提高C语言的复用性。

2. 代码维护性

  什么是代码的维护性?简单来讲就是如果我写的代码有一个错误,我打开我的源代码,直接就能看出哪一行代码出了错误。思考一下,如果我写了一段有好几个函数的C语言程序,然后在调用中有了一个错误,那么我就需要一段一段的去看,最终才可能确定我到底在哪里出了错误。

3. 代码扩展性

  扩展性就是我在添加一个新的功能时,不修改原来的代码,即不做任何变化,直接把功能加上去就可以。这个比较好理解,在这里不做过多的解释了。

  那么有人会问了,既然面向对象的语言有这么多的好处,为什么我们还要用面向过程的语言呢?我们在上面也讲过了,每一种语言都有每一种语言的优点,文章的最开始我们讲到的C语言的特点就是很多面向对象的语言不具备的。而如果我们使用的语言是C语言,又想尽量避免缺点,提高我们的代码的质量,那么我们就要从其他语言的优点上下功夫,看怎么样才可以让我们写出来的代码也具有这样的优点,就比如我们会在C语言里用到函数,就是为了提高C语言的复用性。

【C语言】C语言概述相关推荐

  1. 山西农业大学c语言答案,第一章C语言及程序设计概述-东北农业大学教务处.doc...

    全国高等农林院校"十一五"规划教材 C语言程序设计 孙力 主编 中国农业出版社 内容简介 本书是全国高等农林院校"十一五"规划教材之一. 全书共11章,分别介绍 ...

  2. 1.Java之路(Java语言发展和概述以及特点)

    1.Java语言概述   1.1 什么是Java语言 Java语言是美国Sun公司(StanfordUniversityNetwork),在1995年推出的高级的编程语言.所谓编程语言,是计算机的语言 ...

  3. 《C语言程序设计与实践(第2版)》——第1章 C语言与程序设计概述 1.1初见C语言程序...

    本节书摘来自华章出版社<C语言程序设计与实践(第2版)>一书中的第1章,第1.1节,作者:凌云等著,更多章节内容可以访问云栖社区"华章计算机"公众号查看 第1章 C语言 ...

  4. 语言 {软件开发概述}

    语言 {软件开发概述}; {编辑期,编译期,运行期} 定义 程序的3个阶段: . 编辑期: 在IDE里 写源代码; . 编译期: 源代码通过编译器变成了exe可执行文件 (二进制的); . 运行期: ...

  5. c语言程序设计林小茶,C语言第一篇概述林小茶

    <C语言第一篇概述林小茶>由会员分享,可在线阅读,更多相关<C语言第一篇概述林小茶(8页珍藏版)>请在人人文库网上搜索. 1.第一章,C,语言概述,1.1,程序与程序设计语言, ...

  6. c语言程序设计论文总结,大学工科C语言程序设计教学概述论文

    大学工科C语言程序设计教学概述论文 1教学内容 在教学过程中不能以是否将C语言所有知识点都讲授完为教学目标,而应该转向以培养学生"分析问题和解决问题"的能力为核心,淡化语法细节,让 ...

  7. 程序设计语言python语言概述

    程序设计语言 什么是程序设计语言 程序设计语言是人类与计算机交流和沟通的语言.人们通过使用程序语言,来书写计算机程序,以达到设计的程序满足需求的目的. 程序语言的发展历史 程序语言经历了从低级语言到高 ...

  8. linux 在指定区域分配内存 c语言,C语言动态内存分配:(一)malloc/free的实现及malloc实际分配/释放的内存...

    一.malloc/free概述 malloc是在C语言中用于在程序运行时在堆中进行动态内存分配的库函数.free是进行内存释放的库函数. 1.函数原型 #include void *malloc( s ...

  9. python语言是哪种语言_python语言是哪种语言

    python的三种选择语句_电子/电路_工程科技_专业资料.本文将详细介绍 Python 语言中的三种选择语句:if 语句,if/else 语句和 if/elif/else 语句.对 于每种语句,.. ...

  10. 为什么我们需要一门新语言——Go语言

    编程语言已经非常多,偏性能敏感的编译型语言有 C.C++.Java.C#.Delphi和Objective-C等,偏快速业务开发的动态解析型语言有 PHP.Python.Perl.Ruby.JavaS ...

最新文章

  1. android studio使用问题——instant run
  2. 为什么你应该停止阅读新闻?
  3. jmeter 逻辑控制器
  4. [转] 前端中的MVC
  5. nodejs mysql 返回json_python向mysql中存储JSON及Nodejs取出
  6. mysql 客户端乱码_Mysql客户端中文乱码问题解决
  7. 配置web工程的过程
  8. 【pwn】记一道shellcode侧信道攻击
  9. Lowe‘s EDI 855 采购订单确认报文详解
  10. (黑)群晖系统 ds photo 相机自动备份 无法识别DICM下的Camera解决方案
  11. 苹果的名字测试软件,教你iOS12人脸识别测颜值捷径安装使用教程及iPhone XR修改AppleID姓名教程...
  12. 图片信息查看软件 ExifTool GUI
  13. QCAD dxf 扩展属性
  14. 软件工程方法论对我们开发软件有多大用?谈谈你的看法。
  15. Ipad购买和使用教程(1)
  16. CANdbc编辑器的下载和入门介绍
  17. 常见遥感卫星参数介绍nbsp;(转)
  18. (软考-软件设计师.下午)动态规划算法、回溯算法、贪心算法、分治算法的应用
  19. 利用您的内容获利:使用UMP创建会员WordPress网站
  20. matlab实习,matlab上实习指导书.doc

热门文章

  1. 我为什么放弃360千万期权,走向创业这条搬砖路?
  2. 阿里云存储价格对象存储OSS、文件存储NAS和块存储收费标准
  3. 冬战柴达木的压裂“将士”
  4. 小坤二次元导航HTML源码 很好看的引导页
  5. 《SpringCloud Alibaba 微服务架构》专题(二十一)-Seat简介与安装
  6. SWUSTOJ#616排序查找
  7. 微型计算机选择题题库,微机选择题题库
  8. 金电联行:大数据征信、大数据风险量化、大数据信用融资 | 百万人学AI评选
  9. 无人驾驶汽车的相关技术,无人驾驶相关技术知识
  10. 科技英语翻译计算机化考试,《信息科技英语翻译》期末考试 A卷参考答案