-
Notifications
You must be signed in to change notification settings - Fork 1
7月13日学习笔记
Rust 张汉东
编程语言中的变革者
Rust想要解决什么问题,如何解决这些问题,在实际生产领域中的应用,如何让你成为更好开发者
1、Rust想要解决的问题
机器码 -> 汇编-> C语言(Unix、Linux、互联网诞生)-> C++、Java(企业发展)-> Ruby (互联网、创业浪潮)—> Go (云原生、服务)
C++ 缺乏可移植安全性、分布程序设计和多线程功能,垃圾回收等
Java 伴随浏览器发展而发展
C/C++构建了互联网世界的基础,追求性能,牺牲安全性,造就了不安全的世界
Java为了突破C/C++的桎梏,进一步引入了GC。牺牲了性能,追求安全性
摩尔定律导致,硬件成本下降,以及互联网创业潮,以至于动态语言盛行。高速发展,积累了很多技术债务,工程性遭到挑战
容器化推动了云原生的发展。操作系统瓶颈出现,尝试突破
下一步发展:
5G、万物互联、数字金融、人工智能
需求越来越复杂,软件与人的关系越来越密切,程序的正确性越来越重要
Rust
默认内存安全
媲美C/C++的性能
默认线程安全
安全和性能兼备
vs.python : 性能更快、零成本抽象、更少的内存占用、真正的多线程支持、代数数据类型、模式匹配、静态类型、几乎没有运行时崩溃
vs.Java: 无GC开销,性能更快;更少的内存占用;零成本抽象;无ConcurrentModificationException;模式匹配;一致的构建系统和依赖管理
vs.C/C++:无段错误、无缓存区溢出、无空指针、无数据竞争、强大的、类型安全的类型系统;统一的构建系统和依赖管理
vs.GO:无GC暂停,更少的内存占用,无空指针,更优雅的错误处理,安全并发,更健壮的类型系统,零成本抽象,统一的依赖管理
特点:无GC内存安全;默认线程安全;零成本抽象能力;工程鲁棒性更强;性能媲美C/C++;现代化语言特性;强调实用性;开源社区是语言的一部分
设计哲学:内存安全、零成本抽象、语言一致性、实用性
编程范式:OOP FP
语义:所有权 借用
类型系统:泛型、一切皆类型、trait
半自动内存管理:栈、RAII、堆
通过类型系统识别语义
trait是对类型的行为抽象:1)接口;2)泛型限定;3)类型标签(Copy、Size);4)抽象类型(trait Object)
Fuchsia 网络层面使用Rust,代码不到50%