企业宣传,产品推广,广告招商,广告投放联系seowdb

关于Rust 你想知道的都在这里了

对Rust的一些值得一看的评论“对 Rust 语言的分析”:1、rust 的开发推进非常有节奏,说每三个月发布一个版本,基本上都非常准时地做到了,road map 里定好的东西,都按时按质按量出现了,体现了良好的工程管理;从这一点上,这几年出现的新语言鲜有管理得这么好的,有充分的理由让大家相信 rust 的前景:一切都会有的。2、rust 原是一个 servo 的子项目,它的发展是 servo 推进的,而新的特性也第一时间用在了身上 servo 的开发上,它们相互依存、相辅相成。可以说,rust 推出时,已经经受了一个巨大的、复杂的工程考验,而 servo 推出,也意味着 rust 真正可用。这个意义在于用户不是小白鼠,目前没有其它新语言的东家是“如此有诚意”的。随着三星的加入,大量三星员工已经提交许多代码,未来的发展 rust 会在发布之前就经受过更多的商用大项目考验,工程成熟度会非常高。3、rust 定位非常明确,所以在 0.1 版本出来的时候,内存模型、并发模型、网络库(使用libuv)、类型推断、自举、编译(编译到 llvm,而不是直接生成机器码),这几个现代工程语言最重要的东西都已经定了下来,而且选择的都是最佳方案。相对地,另一个号称并发的新语言做好这些都不知道是第几个大版本了,而多核支持现在还是个笑话。4、rust 没有想着跟别的新语言竞争,它的目标是什么 c++,所以它的许多特性都搔到了 c++ 程序员的痒处,比如自动类型推断、内置高级数据类型、函数式编程、泛型编程等等,除了指针类型有点多,还有 c++ 程序员觉得比 c++ 还复杂外,其它都是一眼望去就是“业界最佳解决方案”。5、rust 的进化一直非常大胆,几乎每一个版本出来都是不兼容之前的版本的,而且有些东西之前觉得很棒的(比如 typestate),一旦发现有更好的方案,就马上采用,这样它的进化非常快速,如果不是一直在跟,过上半年(两个版本),就会觉得“哇,好大变化!”。当然,这一点也让人觉得它长期不向“成熟”收敛,其实这是一种错觉,rust 采用的每一个新特性都很快稳定下来了,真正关心它的人都会认同这一点。6、得益于 rust 优秀的并发模型,在软实时系统上有着卓越的表现,rust 已经受到原来的最忠实的一群 c++ 用户的关注、喜爱和追捧,这群人就是 game developers,这些开发主机游戏的家伙,极端注重性能,所以长期在沉浸在 c++ 之中,但接触到 rust 后面,已经有许多人开始尝试使用 rust 开发游戏,而且也反馈、贡献了许多东西给 rust 开发团队。7、rust 有一些不符合我的审美观的东西,比如很多缩写,比如很多符号,但考虑到我自己没有出力改变这个状况,就接受吧;当然,也有人看不惯它的其它特性,然后就喷,这很正常。Rust 有着与众不同的特征 – Memory ManagementRust 语言在 system programming 领域之所以显得特别与众不同,最重要的一点就是整个 Memory Management 环节的设计:基于 Ownership + Borrowing + Lifetime 的 compile-time 内存管理。之所以说其与众不同,是因为这与其他任何传统 system programming 语言内存管理的机制选择完全不同:C/C++:Let programmers manually manage pointers,and trust that programmers access them and free them correctly (otherwise will cause run-time errors)Java 等:Run-time GCRust:基于 Ownership + Borrowing + Lifetime,(ideally) 不存在手动管理指针,但同时又是在 compile-time 时 borrow checker 解析并插入合适的资源释放 routine 从而不存在 run-time GC而 Rust 也是在 MM 这一方面才体现出其最重要的设计理念:安全,同时快速。即能在编译时检查出几乎所有安全问题,保证得到的代码 run-time error 尽可能少(所以才有 Rust program 只要通过了编译就基本是语义正确的语言),同时又没有 GC 等等的运行时 overhead,对于编写 system-level 的项目来说是一种重大的进步。当然,这种选择也带来一些弊端,下文也会提及。嵌入式进阶教程分门别类整理好了,看的时候十分方便,由于内容较多,这里就截取一部分图吧。需要的朋友私信【内核】即可领取Rust 的优点个人认为 Rust 有如下 5 条优点,是作为最新的 system programming 语言,是参考已有语言的缺陷和自己的哲学,综合而来的:基于 Ownership、Borrowing、Lifetime 的内存管理机制,如上节所述,是 Rust 最独特的特征,是实现 compile-time 安全性、尽可能减少 run-time error,同时保证运行高效的根基基于 Option & Result 的空值和错误处理,保证了代码清晰的情况下,对空值和错误全面而安全地处理,也是 Rust 减少 run-time error 的重要保障之一基于 Traits 的简洁而强大的 Generic 范型系统,语法简洁、清晰,没有冗余(带上复杂 Lifetime 之后似乎称不上清晰了…,但还是好过很多语言),也是 Rust 减少 run-time error 的重要保障之一优秀的 Macro 宏定义机制,作为一门 system programming 语言,实现了相对比较强大的 meta-programming 能力,使代码简洁易懂,减少常用功能的代码冗余完整、易用的工具链 & 凝聚力异常高的社区,使用 Cargo 做项目依赖管理,统一管理的社区 Crates hub(),以及清晰的教程、完整而易读的文档可以说,Rust 是一个好学生,学习到已有 system language 的各种不足,如 C/C++ 自由却让人头疼的 segfaults,Java 饱受诟病的 VM 和运行时 GC 的低效等,从而创造出一种新的语言设计哲学,走出一条与众不同的个性化的路线。正因如此,Rust 虽然不简单、领域相对小众,也能长居 Stackoverflow 最受喜爱的语言调查的榜首1。Rust 的缺点同样的,好学生往往有自己的偏执的一面,不会是完美的,也有许多的缺陷。与 C 的哲学(C Primer 正如所言:完全信任 programmer,给予你充分地实现自由,但需要细心、严谨、有经验去实现,否则 segfault / memory leak 可以 de 到哭)截然相反,为了做到编译时捕捉大部分错误,给予了 programmer 很少的自由,真正触及底层的时候不得不用 unsafe / 暂时还无法有效实现,有时会令人感到束手束脚不得不引入一些复杂规则(比如 Lifetime)来 enable 它的 MM 设计,使得真正复杂 Rust 项目中的 coding 说不上很简洁,更说不上很易懂上手需要对 CA、PL、OS 的充分理解和传统 system language 的足够的经验,才能理解 Rust 的很多设计;萌新上来就学习 Rust 至少对我来说是完全不行的,反而一知半解,不理解为什么要设计成这个样子Rust 把对 programmer 的时间要求从 debugging / performance tuning 上转移到了 “学习 Rust” 的过程上,在这个语言选择和项目迭代愈发灵活快速的时代,我不是很确定这是件好事还是坏事

© 版权声明
评论 抢沙发
加载中~
每日一言
不怕万人阻挡,只怕自己投降
Not afraid of people blocking, I'm afraid their surrender