精彩牛耳,用心缔造
您的位置:主页 > 牛耳资讯中心 > 行业资讯 >

论c语言的竞争优势

作者:牛耳教育 编辑:陈老师 来源:未知 发布日期:2022年01月16日
信息摘要:
没有什么技术可以应用长达50年之久,除非它真的比大多数其他东西都要好用——对于一种计算机行业的技术来说尤其如此。自1972年诞生以来,C语言一直保持生龙活虎的状态,时至今日...

没有什么技术可以应用长达50年之久,除非它真的比大多数其他东西都要好用——对于一种计算机行业的技术来说尤其如此。自1972年诞生以来,C语言一直保持生龙活虎的状态,时至今日它仍然是我们用来搭建软件世界的基础建筑材料之一。

但有时一种技术能够长期存在,只是因为人们还没有来得及发明新的东西来取代它而已。在过去的几十年里,出现了许多其他语言——其中一些明确地被设计用于挑战C的主导地位,有些语言试图凭借自己的人气慢慢瓦解C语言的统治地位。

为C需要被替换掉的观点争辩是简单的。编程语言研究和软件开发实践都暗示了如何比C更好地去做事。但历经数十年的研究和开发,C语言的地位却依旧稳固。很少有其他语言能够在性能、裸机兼容性或通用性等方面击败它。不过,2018年C是如何与那些明星编程语言竞争的呢,其中细节仍值得一看。

选C而不选C++对您——以及任何将会维护你代码的开发人员——来说都是可行的,通过采用强制简约主义来避免与C ++的复杂性纠缠。当然,C ++拥有丰富的高级功能,这是有它自己的道理的。但如果极简主义更适合当前和未来的项目——以及负责项目的团队——那么还是选C更明智一些。

Java输给C的地方是一个Java从未打算竞争的领域:靠近底层结构运行,或直接与硬件打交道。C代码被编译成机器代码,由进程直接执行。Java被编译成字节码,这是一种随后会被JVM解释器转换为机器代码的中间代码。此外,尽管Java的自动内存管理在大多数情况下都是个优点,但C更适合于必须充分利用有限内存资源的情况。

也就是说,在某些方面,Java在速度方面可以接近于C。JVM的JIT引擎在运行时根据程序行为优化例程,允许进行许多类型的优化,而这些优化是在未提前编译的C中无法实现的。虽然Java运行时自动执行内存管理,但一些较新的应用程序可以解决这个问题。例如,Apache Spark部分地通过使用绕过JVM的自定义内存管理代码来优化内存中处理。

与C一样,C#和.Net提供各种直接访问内存的机制。堆,栈和非托管系统内存都可以通过.Net API和对象访问。开发人员可以使用.Net中的unsafe模式来实现更高的性能。

但这些都不是没有代价的。托管对象和unsafe对象不能被任意交换,并且它们之间的编组会降低性能。因此,要最大化.Net应用程序的性能需要将托管和非托管对象之间的变动保持在最低限度。

如果您无法承担托管与非托管内存之间变动造成的性能损失,或者.Net运行时对于目标环境(例如,内核空间)来说是一个糟糕的选择,或者可能根本不可用,那么C就是你所需要的。与C#和.Net不同,C被默认可以解锁对内存的访问权。

牛耳推荐资讯
湖南工程学院计算科学与

湖南工程学院计算科学与

【产教融合育人才校企合作谋发展】湖南工程学院计算科学与电子学院与牛耳科教集团签约共建实习基地...
2022年11月30日
嵌入式学习路线怎么规划

嵌入式学习路线怎么规划

随着人工智能领域的兴起和发展,嵌入式开发技术也随之受到关注。近几年,学习嵌入式开发的学生越来越多,有的选择自学,有的选择去培训班。不管做...
2022年11月30日
Web前端框架有哪些?哪个

Web前端框架有哪些?哪个

Web前端框架是前端开发中一个非常重要的开发工具。功能强大的框架可以让前端人员更加清晰的看见现有代码的结构,也能快速检查一些代码错误,极大的...
2022年11月30日
软件测试培训多少钱?学

软件测试培训多少钱?学

目前市面上软件测试培训的费用大概在0.8-2.3万之间,为什么费用差别会这么大?影响因素有很多,主要是课程内容、上课方式、地理位置等。...
2022年11月28日
为什么要学习软件开发?

为什么要学习软件开发?

随着时代的进步,国家的发达,信息时代的到来,对于软件开发的需求也越来越大了!普遍性的需要,那么什么是软件开发?...
2022年11月25日
 牛耳教育的教学模式是怎

牛耳教育的教学模式是怎

牛耳教育采取独特的“企业化管理”的教学模式,从专业技能、项目能力和职业素质三方面帮助学生全面提升职业竞争力,完善的软件人才培养体系基础上,同时拥有完善的软件人才考...
2022年11月22日

咨询热线

400-0731-162