点击上方蓝字关注我哦~

01

前言

初入门的我们经常听见别人说“真正的程序员用C语言编程,C是最快的语言因为它是最靠近及其底层的语言。”那么和其他语言相比C语言到底有什么特别的呢?

02

C语言为什么快

C语言没有什么特别,这就是它快速的秘诀!

新的语言支持更多的特性,比如,垃圾回收(garbage collection),动态类型(dynamic typing)等等。这些新加入的特性让初学者们更容易上手。

问题的关键就在于,这些新的功能增加了处理开销(processing overhead),也就降低了程序性能。而C语言中没有这些功能,它不需要这些额外的开销,这也意味着程序员自己要分配和释放内存,时刻注意内存泄露问题,处理静态类型的变量。

C语言的设计者权衡了利弊,把速度的需求放在了安全之上。C语言不会:

  • 检查数组索引是否越界。

  • 检查未初始化的变量。

  • 检查内存泄露。

  • 检查空的指针的解引用。

当你在JAVA中使用数组索引时,虚拟机中有一些方法调用来检查索引越界和其他的合理性问题。但在C语言中即使是再微小的事情都有安全隐患。它不是用来编写大型的商业软件的。

但这些设计上的决定并不是bugs。这些设计的初衷是为了让编译器和库的编写者可充分利用计算机每一个bit的计算能力。

即便如此,许多语言和平台,例如Java(和它的虚拟机),.NET(和它的通用语言运行库),随着即时编译(从字节码产生本地机器码)等技术的出现,这些年的运行速度也有了很大的提高。

03

C语言的精神

C语言的不可移植。尽管C语言允许程序员编写可移植的代码,委员会并没有强迫程序员编写可移植的代码,把C语言当成高级汇编语言。能够编写特定机器的语言是C语言的特征之一。

保持C语言的精神。委员会这么做的主要目的也是为了继承C语言的传统精神。这项精神有很多方面,但最根本的是C语言基本原则产生的社区情感,这种社区情感被使用C语言的人所共有。C语言的一些精神可以总结如下:

  • 信任程序员。

  • 不阻止程序员做任何必要的操作。

  • 保持语言的简洁和简单。

  • 一种操作只提供一种方法。

  • 保持速度,即使牺牲可移植性。

稍稍解释一下最后一条,产生高效代码的潜能是C语言最重要的能力。为了力求对一个简单的操作不会出现代码爆发(简单操作需要大量代码),许多操作定义为目标机器的硬件如何操作而不是一般化的抽象规则。这种与机器配合的意愿例子有很多,比如在规定表达式中字符对象的宽度时,字符对象的值是转换为有符号还是无符号类型完全取决于哪种类型在目标机器中计算起来更快。

/ The End /

免责声明:本文转载自网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。

扫码关注我们

看更多嵌入式案例

喜欢本篇内容请给我们点个在看

c语言不安全库_为什么和其他语言相比C语言是快速的语言?相关推荐

  1. c语言不安全库_为什么 C 语言仍然占据统治地位?

    作者 | Serdar Yegulalp 译者 | 王艳妮,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 以下为译文: 没有什么技术可以应用长达50年之久,除非它真的比大多数其他东西都 ...

  2. python语言的第三方库_常用的Python第三方库

    今天公司停电,没上班.跑上来更新个博客,跟大家分享一下我常用的几个第三方 Python 库.Python 语言之所以能够如此流行,除了本身内置许多程序库来保障快速开发之外,目不睱接的第三方库也是一大主 ...

  3. 信科c语言实验程序修改题_豆瓣评分 9.3,史上最好的 C 语言著作,竟然翻车了.........

    上周,在小编的各种努力下(省略一万字),Kindle 官方终于答应给我一个广告位了.虽然只是开机屏,但我还是笑出了猪叫,毕竟上一次有这待遇还是 2018 年时的<算法图解>.所以错过了上次 ...

  4. python语言编程基础视频_网络编程-5_ Python系列视频(一)——Python语言基础_Python视频-51CTO学院...

    通过学习,对Python有一定的了解,学习Python语法,可以使用Python原生语言开发项目.对于Python的应用于开发有一个系统的认知,对于未来的发展方向有清晰的认识.主要知识点包括基本语法. ...

  5. c语言制作java虚拟机_【C/C+】虚拟机实现:用C语言来写Java虚拟机

    前言:本篇文章除了能够让你了解到虚拟机的工作原理外,还可以让你了解到较低级别的编程过程. 由于我喜欢在较低级别(Low-level)的应用中(编译器,解释器,解析器,虚拟机等等)工作,所以我觉得写一篇 ...

  6. uml+oopc嵌入式c语言开发精讲_嵌入式开发中更接近底层的汇编与C语言

    分享本文,介绍下更接近硬件底层的C语言与汇编,解释 CPU 如何执行代码. 高级语言与低级语言 学习编程其实就是学习与计算机交流的语言.因为计算机不理解人类语言,通过编译器把人类写的代码转成二进制代码 ...

  7. st语言 数组的常用方法_欧姆龙cp1h常用指令学习(九)结构化语言ST

    结构化语言ST是作用于功能块编程中. 这门语言对于梯形图中不善于处理的数值运算等逻辑算法,采用类似于高级语言的语法,使其变得简单. 下面先从功能块的相关知识说起: CP1H的功能块规格: 功能块定义数 ...

  8. python语言单词接龙_[蓝桥杯][算法训练VIP]单词接龙 (C语言代码)

    解题思路: 注意事项: 参考代码: #include #include #include int long_best=0,n; int * shu_zu, * zhefuc_size; char * ...

  9. java 语言转 c 命令_求助大神!!!JAVA转换成C语言

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 //此处不要看,c++应该内置了这个函数,不需要自定义 Array.prototype.remove = function(val) { var inde ...

最新文章

  1. UE capability与 双连接相关的参数。
  2. 14. 函数返回值为引用?
  3. 机器学习笔试题精选(七)
  4. Codeforces 889C Maximum Element(DP + 计数)
  5. 从生物学的角度浅谈前端工程化
  6. linux arm9视频哪个好,谈谈ARM7与ARM9的区别
  7. 《一本书读懂24种互联网思维》读书笔记
  8. python数据转换成pdf_用python把ipynb文件转换成pdf文件过程详解
  9. 2022依旧可用的抖音无水印解析工具,免费分享
  10. 小熊的果篮 2021 CSP J2
  11. 从零开始学Snaker(一)- 官方项目运行
  12. Android集成高德地图
  13. 羊了个羊, 听说这游戏很难
  14. Oracle数据库同义词详解
  15. 选手机壳要擦亮双眼,不会遮挡激光对焦传感器的才是好壳子!
  16. harries算子特征提取与图像匹配
  17. VScode快捷键配置汇总
  18. 微信屏蔽防封跳转、域名防红系统的实现原理
  19. Arduino与Proteus仿真实例-简单红外寻迹小车控制仿真
  20. PTA乙级-1061 判断题-C语言版

热门文章

  1. 14 | 深入解析Pod对象(一):基本概念
  2. 用python给女朋友惊喜100天快乐_100天从 Python 小白到大神最良心的学习资源!
  3. 首次公开开源PolarDB的总体结构设计和企业级特性
  4. 报告!钉钉宜搭的8月总结,请查收~
  5. 快成物流科技 x mPaaS | 小程序容器加持下的技术架构“提质增效”
  6. 邀您参与 | 阿里巴巴如何扩展 K8s 调度器支持 AI 和大数据任务?
  7. 技术阻击疫情,开发者在行动
  8. oracle语句加减,oracle时间加减的语句写法
  9. 数据存储方式_详解西门子S7-200PLC的数据区
  10. Pawel wojs:《全面战争:三国》美术概览