Skip to content

7月13日学习笔记

lirui edited this page Jul 13, 2020 · 2 revisions

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%

Clone this wiki locally