卷首语
从Rust火爆出发,聊聊开发者如何选择编程语言
近年来,随着移动互联网、云计算、大数据、人工智能、IoT领域的快速发展,计算系统、计算模式都发生了巨大的变化,编程语言的发展也进入了一个新的爆发期。新的优秀编程语言不断涌现,在各种产业场景和应用领域发挥巨大的力量,如由Mozilla于2010年推出的Rust编程语言。
自发布1.0版本后,Rust连续四年成为开发者最受欢迎的编程语言。近期,随着Rust基金会的正式成立,各个大厂上演了Rust人才争夺大战,媒体将2021年称为"Rust年”。那么,Rust是不是开发者首选编程语言呢?这里我就从Rust出发来聊聊开发者如何选择编程语言,要不要去学习新的编程语言。
人们之所以不断需要新的编程语言,或者传统编程语言需要不断演进,一方面是因为人们面临的计算问题、计算平台的不断变化和演进,相应的软件开发问题也随之不断变化,需要编程语言提供更加有效的解决方案;另一方面,商业组织在不停地定义和构建新的商业场景和技术生态,一款专门设计的编程语言往往可以跟操作系统、编译器、开发框架、开发环境和配套工具链等形成合力,提高开发体验,更好地服务于商业组织的业务目标和策略,构建差异化竞争力,使得整个软件生态对于开发者和普通用户更具粘性。因此,需要从技术和生态角度去评估编程语言的选择。
首先,编程语言是提升软件开发效率、增强软件使用体验、解决软件开发中特定问题的重要技术手段和工具。我们可以看到,Rust语言通过变量的生存周期、所有权机制等,在不引入垃圾收集器的情况下确保内存安全,被普遍认为是一种关注内存安全的系统编程语言,这也是各个科技公司使用Rust开发底层系统软件的技术出发点。在系统编程领域中,Rust可作为C/C++等传统系统编程语言的现代替代选项。但在应用编程领域,如终端应用、Web开发、AI编程等,对开发效率和编程体验要求较高,而Rust的生命周期、所有权机制等概念使得其学习曲线较高,开发者负担大,相比于Java、Kotlin、Swift、JavaScript、Python等应用编程语言就心有余而力不足了。
其次,编程语言又是软件生态的入口,直面开发者,在打造和控制软件生态方面发挥着无可替代的关键作用。对于Rust,目前已有数百家公司在软件生产中使用,如Dropbox、Yelp、Cloudflare等,谷歌也在提供资金号召开发者使用Rust重构各类核心开源软件,新的服务器端JavaScript运行时Deno、AWS的Firecracker虚拟机等也采用Rust构建。随着Rust基金会的成立,相信其软件生态构建速度将会加快。
但需要注意的是,Rust还未出现杀手级的典型应用/框架,相较于C/C++的系统软件生态仍有漫长的路要走。在应用编程领域,科技公司和社区通过编程语言与框架等的配合已构建了成熟、繁荣的软件生态,如苹果通过Swift语言和iOS操作系统、LLVM编译器、XCode开发环境、SwiftUI编程框架等配合,给苹果应用开发者带来了更安全、易用、高效的开发体验。谷歌开发的Dart编程语言,通过结合Flutter跨平台UI开发框架,让终端应用开发者可以在安卓、iOS、Web端甚至PC端进行UI开发,实现一次开发、多平台运行,可降低终端应用多平台开发成本。
总之,编程语言的选择需要从技术和生态两个维度考虑,开发者需要根据面临的业务场景和应用领域选择合适的编程语言,因为没有一种编程语言可以包打天下。