加入收藏 | 设为首页 | 会员中心 | 我要投稿 孝感站长网 (https://www.0712zz.com.cn/)- 运营、云管理、管理运维、云计算、大数据!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

一文揭秘新基建背景下卫星互联网的新机遇

发布时间:2021-02-13 12:21:31 所属栏目:外闻 来源:互联网
导读:NET 另一个类似 Java 的优势是 JIT 优化。C#和.Net 程序可以按照 C 语言提前编译,但它们主要由.Net 运行时进行即时编译,并使用运行时信息进行优化。JIT 编译允许对无法在 C 中执行的运行着的.Net 程序进行各种就地优化。 与 C 一样,C#和.Net 提供各种直接

NET 另一个类似 Java 的优势是 JIT 优化。C#和.Net 程序可以按照 C 语言提前编译,但它们主要由.Net 运行时进行即时编译,并使用运行时信息进行优化。JIT 编译允许对无法在 C 中执行的运行着的.Net 程序进行各种就地优化。

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

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

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

C vs. Go

Go 的语法很大程度上借鉴了 C—— 花括号作为定界符,语句以分号结束,等等。精通 C 的开发人员通常可以毫不费力地直接使用 Go,甚至算上 Go 的独有功能,如命名空间和包管理,对开发人员来说也并不困难。

代码可读性是 Go 的指导设计目标之一:让开发人员可以轻松掌握任何 Go 项目,并在短时间内熟练掌握代码库。C 代码库可能很难理解,因为它们很容易聚集大量专属于某个项目或某个团队的宏和和 #ifdef。Go 的语法及其内置的代码格式以及项目管理工具旨在避免这种结构性问题。

Go 还提供了诸如 goroutine 和 channel 之类的附加功能,用于处理并发性和组件之间的消息传递的语言级别的工具。C 需要开发者手动完成或由外部库提供,但 Go 提供了开箱即用的这些功能,使得构建需要这些功能的软件变得更加容易。

Go 与 C 最深层次的不同之处在于内存管理方面。默认情况下,Go 的对象会被自动管理并自动进行回收。对于大多数编程工作来说,这非常方便。但这也意味着任何需要确定性处理内存的程序都会更难编写。

Go 确实包含了用于绕过 Go 的某些类型处理安全性的 unsafe 包,例如使用 Pointer 类型读取和写入任意内存。但 unsafe 会附带一个 warning 说用它编写的程序 “可能是不可移植的,并且不受 Go 1 兼容性指南的保护。”

Go 非常适合构建命令行实用程序和网络服务等,因为这些很少用到太过细致的操作。但是,如果是低级设备驱动程序,内核空间操作系统组件以及其他需要严格控制内存布局和管理的任务,那么就最好用 C 来创建。

C vs. Rust

在某些方面,Rust 是对 C 和 C ++ 创建的内存管理难题的回应,也是对这两种语言的许多其他缺点的回应。Rust 编译为本机机器代码,因此就性能而言,它被认为与 C 相当。但默认情况下,内存安全才是 Rust 的主要卖点。

Rust 的语法和编译规则可帮助开发人员避免常见的内存管理错误。如果程序有一个不符合 Rust 语法的内存管理问题,它就不会被编译。刚接触这种语言的新手,特别是以前用 C 语言的开发者,由于 C 语言为这类 bug 提供了充足的容错空间,所以他们接触 Rust 的第一步是学习如何安抚编译器。但 Rust 的支持者认为,这种短期的痛苦有一个长期的回报:更安全的,不会减缓速度的代码。

Rust 还通过其工具改进了 C 语言。默认情况下,项目和组件管理是 Rust 提供的工具链的一部分,与 Go 相同。有一种默认的,推荐的方法来管理包,组织项目文件夹,以及处理 C 需要单独处理的其他许多事情,每个项目和团队以不同的方式处理它们。

然而,在 Rust 中被吹捧为优势的东西对于 C 开发者来说可能并没有太大吸引力。Rust 的编译时安全功能无法禁用,因此即使是最小的 Rust 程序也必须符合 Rust 的内存安全限制。默认情况下,C 可能不太安全,但在必要时它更灵活,更宽容。

另一个可能的缺点是 Rust 语言的大小。即使考虑到标准库,C 的功能也相对较少。Rust 功能集非常庞大并且还在不断增长。与 C ++ 一样,较大的 Rust 功能集意味着更强大的功能,但也意味着更高的复杂度。C 是一种较小的语言,但更容易在头脑中进行建模,因此可能更适合那些对 Rust 来说太小,不值得大动干戈的项目。


(编辑:孝感站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读