我为什么选择rust

简介: 本文关键字:allinone编程语言,个人是否真的可能学好多门编程语言

本文关键字:allinone编程语言,个人是否真的可能学好多门编程语言

我们在前面《编程语言选型通史:快速整合产生的断层》提到,我们需要一门"简单,oneforall"显得不那么“断层”的语言来工作和学习,以积累自己的codebase和开发经验而无需推倒重来或切换,---- 这个问题之所以重要和紧迫,如上文所讲,是因为编程语言一直处在开发和学习的中心,占据一个程序员的大部分时间和心智精力,语言选型必须先于其它进行。而现实情况是,技术总在演变,而融合正处在初级阶段,人们在学习和工作中总涉及到使用多门语言的情景,产生的断层和学习成本巨大(见《qtcling - 一种更好的C++和标准库》和《编程语言选型之技法融合,与领域融合的那些套路》)

"程序员总是需要不停学习",。这个时候,我们希望获得一种简单,但allinone的语言和一劳永逸的开发领域研究对象。对于出现的新开发,也可以以自然不虐心的方式融入,共享同一套生态,---- 俗语,用一种语言解决所有问题。这个问题放在10年前是不可能讨论的,但现在可以了。

“任何编程语言都一样麻烦”,软件无银弹,排除这些同质部分。来设想一下,对这种语言最基本的要求,首先是要保证简单,避免CPP那种越做越复杂带来的坑。不要求它有对低阶语言有很好的源码兼容性,但至少要能接上现今二大生态(naitve/web)。语言写法上的限制和自由是一对矛盾,这个时候我们宁愿入门前曲线陡峭,入门后一马平川,除此之外,它还应绝对安全(非必要不写unsafe),是运行期免错的语言。

对于符合上述要求,现今为止能很好作到“allinone”写法的语言和跨embeded/native/web/mobile(甚至web前端)开发的语言。Dlang/go/rust是唯三的选型对象,这其中,rust是最全面的。从语言演变历史中那些坑中综合排查,这点上,因为rust出现得晚,取长补短,rust没有任何包袱。它是最不虐心的。rust源于cyclone的部分概念,虽然说这些cpp的新版本也能做到,但cpp应该改无可改面目全非了,不如一门新语言来得更让人易接受。

具体来看rust的优缺点:

它有:

1,它涵盖toolchain即appdev领域,是真正的通用语言,着眼现在面向未来

它支持跨embeded/native/web/mobile(甚至web前端)开发,而其它不少语言也宣称它们通用,但总是存在大量的坑(比如人们不常用php-cli,仅用php-cgi)。rust没有这些包袱,是真正的通用语言,即又具备动态和脚本语言的写法和效率,而且又以一种自然科学不虐心的方式进行。而且它的微运行时能嵌入browser,着眼未来wasm技术。它也能被很好用于未来的AI,因为安全和效率比py高。

2,它涵盖现在的主要语言体系,聪明地定位于安全的编译型语言。

如在静态语言中谋求动态,如let,又将以前仅运行期能做的。用模板和泛型可以完全弄到编译期,如整套的编译期内省。达到了现在流行的静态/动态/语言脚本语言都能拥有的效果,支持脚本语言的逻辑热更。上面谈到,它是强编译期安全性的,能保证运行期免错(解决了c增强系如CPP的痛点:内存泄漏和数据竞态)。
其实运行期与编译期只有二个期的不同(对导致语言灵活和动态性差别没有本质联系)。不一定语言的动态性就一定要体现在运行期。编译期可以让语言达到足够的动态性,这就是动态编译。

3,它涵盖了所有语言技术,建立了所有语言的多范式超集,具备了流行的开发支持,

见《编程语言选型之技法融合,与领域融合的那些套路》,现在所有的语言,基本不是函数式(这类语言的代表就是lisp,haskell)就是过程和OO式(cpp,java)或者它们的综合(py,js,go,rust),都可归为这二种流派。其实现都是对他们的简化与修正。而rust对这二种流派都有全面吸收和支持。

4,它不复杂,为了融合和发展,它另辟创新,解决了C增强系的痛点,而没有提出过多的新概念,甚至没有GC

拿cpp与rust这些“增强C系语言”对比,我们要忽略cpp对c的源码兼容是c的增强(严格来说,cpp应该向它的祖先cfront靠拢以增强C。)这层极具混淆性的意义来说,把cpp与c看成是一高阶一低阶的不同语言,这样我们就能方便地拿出两者都提出一门高于c的新语言的起点性工作开始对比:它们都保留指针和控制底层的能力,但rust有引用和借用,类型所有权,,极其聪明地(虽然有些强制和面向契约)规避了cpp的坑,同样没有GC,同样用raii却避免了CPP的内存不安全。

与dlang/go这样的“简化C系/cpp语言类”比较,达到同样的效果却而避免给语言增加gc这样的乱入式大部头。一门语言集不集成GC,这是影响到语言本质的问题,比如go集成GC,其运行时会比rust大好几个数量级,rust极小运行时。这对嵌入硬件平台和嵌入WEB浏览器极为关键。它对glibc这样的东西几乎无依赖。。

对语言的学习,从对比它们的类型系统,作用域,支持的高级数据结构,异常,。。。。这些层面,基本一个认真学过几门流行语言的人都可以在10小时之内了解完。(引用,借用,其实并没有给rust新增加多少东西,其它都是向简集成)

5,它兼顾了现在,也能接入既有多种生态和未来扩展方向:

它能生成对c的转译结果(接上了系统实现和系统开发生态),以及对js的转译结果(接上了web前后端生态),而现在转译式开发是很流行的。place rust on top of c and js(比如 c,js作为低阶语言仅具备基本的过程和函数,oo和高级函数语法放在高阶语言rust层),这是很well arranged的。

对于未来,它也有考虑,如wasm,如virtual appliance,见《云APP,virtual appliance:unikernel与微运行时的绝配,统一本地/分布式语言与开发设想》,未来应该是libos,unikernel,Fuchsia os这类可编程可devops可嵌入可物联的内核的天下。

它没有下面这些,但不重要

(一个事物的优点的这个说法,正是它缺点的某些方面,在一定的可讨论范围内,任何选型都是一对矛盾):

它没有对C的源码兼容支持它没有GC。这刚好成全4,5

它没有过于简单的语法。但其实这是个仁者见仁智者见智的问题。(引用,借用,这些是rust最本质的创新)

它没有显式的语言层DSL支持,但它内外部已集成足够可用的东西。见3,5

它没有统一后端,但有 C ABI 二进制兼容对外interoperability能力也好。,也没有类elm的interoperability to js,见5


(此处不设回复,扫码到微信参与留言,或直接点击到原文)

qrcode.png

相关文章
|
4月前
|
Rust 安全 Go
揭秘Rust语言:为何它能让你在编程江湖中,既安全驰骋又高效超车,颠覆你的编程世界观!
【8月更文挑战第31天】Rust 是一门新兴的系统级编程语言,以其卓越的安全性、高性能和强大的并发能力著称。它通过独特的所有权和借用检查机制解决了内存安全问题,使开发者既能享受 C/C++ 的性能,又能避免常见的内存错误。Rust 支持零成本抽象,确保高级抽象不牺牲性能,同时提供模块化和并发编程支持,适用于系统应用、嵌入式设备及网络服务等多种场景。从简单的 “Hello World” 程序到复杂的系统开发,Rust 正逐渐成为现代软件开发的热门选择。
72 1
|
20天前
|
Rust 安全 Java
探索Rust语言的并发编程模型
探索Rust语言的并发编程模型
|
27天前
|
Rust 安全 区块链
探索Rust语言:系统编程的新选择
【10月更文挑战第27天】Rust语言以其安全性、性能和并发性在系统编程领域受到广泛关注。本文介绍了Rust的核心特性,如内存安全、高性能和强大的并发模型,以及开发技巧和实用工具,展示了Rust如何改变系统编程的面貌,并展望了其在WebAssembly、区块链和嵌入式系统等领域的未来应用。
|
28天前
|
Rust 安全 Java
编程语言新宠:Rust语言的特性、优势与实战入门
【10月更文挑战第27天】Rust语言以其独特的特性和优势在编程领域迅速崛起。本文介绍Rust的核心特性,如所有权系统和强大的并发处理能力,以及其性能和安全性优势。通过实战示例,如“Hello, World!”和线程编程,帮助读者快速入门Rust。
52 1
|
29天前
|
Rust 安全 编译器
编程语言新宠:Rust语言的特性、优势与实战入门
【10月更文挑战第26天】Rust语言诞生于2006年,由Mozilla公司的Graydon Hoare发起。作为一门系统编程语言,Rust专注于安全和高性能。通过所有权系统和生命周期管理,Rust在编译期就能消除内存泄漏等问题,适用于操作系统、嵌入式系统等高可靠性场景。
44 2
|
14天前
|
Rust 安全
深入理解Rust语言的所有权系统
深入理解Rust语言的所有权系统
26 0
|
20天前
|
Rust 安全 前端开发
探索Rust语言的异步编程模型
探索Rust语言的异步编程模型
|
1月前
|
Rust 安全 云计算
Rust语言入门:安全性与并发性的完美结合
【10月更文挑战第25天】Rust 是一种系统级编程语言,以其独特的安全性和并发性保障而著称。它提供了与 C 和 C++ 相当的性能,同时确保内存安全,避免了常见的安全问题。Rust 的所有权系统通过编译时检查保证内存安全,其零成本抽象设计使得抽象不会带来额外的性能开销。Rust 还提供了强大的并发编程工具,如线程、消息传递和原子操作,确保了数据竞争的编译时检测。这些特性使 Rust 成为编写高效、安全并发代码的理想选择。
20 0
|
2月前
|
Rust 安全 网络安全
在 Rust 语言中,寻找企业上网行为管理软件的突破
在数字化企业环境中,上网行为管理软件对于保障网络安全和提升工作效率至关重要。Rust 语言凭借其安全性、高性能和并发性,为开发此类软件提供了新机遇。本文通过几个 Rust 代码示例,展示了如何实现网址检查、访问频率统计及访问控制等功能,旨在探索 Rust 在企业上网行为管理中的应用潜力。
36 0
|
4月前
|
Rust 安全 编译器
初探 Rust 语言与环境搭建
Rust 是一门始于2006年的系统编程语言,由Mozilla研究员Graydon Hoare发起,旨在确保内存安全而不牺牲性能。通过所有权、借用和生命周期机制,Rust避免了空指针和数据竞争等问题,简化了并发编程。相较于C/C++,Rust在编译时预防内存错误,提供类似C++的语法和更高的安全性。Rust适用于系统编程、WebAssembly、嵌入式系统和工具开发等领域。其生态系统包括Cargo包管理器和活跃社区。学习资源如"The Book"和"Rust by Example"帮助新手入门。安装Rust可通过Rustup进行,支持跨平台操作。
155 2
初探 Rust 语言与环境搭建