不看好 Rust 用于 web 服务器端编程的前景

2021-11-12 18:06

 

我不看好 Rust 用于 web 服务器端编程的前景,主要理由如下:

1. 当前用于在 web 服务器端的编程语言,主要有 java + jsp/servlet、C# + asp.net、php。其共有的特点如下:

 

1.1 内存自动回收,软件工程师无需手工释放变量内存

1.2 基本语法遵循历史习惯,类似与 c/c++, 包括且不限于:变量定义、函数定义、for/while 循环等。

 

2. 一般来说,新的编程语言要流行,需要有特殊亮点。否则无法击败已有的编程语言,流行不开来。

2.1 C 语言之后的 C++, 增加了 namespace, class 封装, 继承等,增加了 ANSI/ISO C++ 类库,string/io/stl 等,方便用于大型项目。

虽然在 Linux 内核开发方面,C++ 进展不大,但在单机版应用程序开发方面,C++ 进展神速,KDE/Gnome 等 Linux 桌面,均采用 C++ 开发。

C++ 的缺点也很明显:标准类库不够庞大,缺乏网络、GUI、数据库等方面的内容。

开发者往往需要搭建来自不同组织的多个库那样折腾(比如,HP STL 库 + wxWidgets GUI 库 + xxx 数据库访问库),容易遭受各类问题。

 

2.2 C++ 之后的 java, 增加了内存自动回收机制,增加了庞大的类库,比如网络、加密/解密、GUI、数据库等。

起初在 web 客户端发力(java applet),以提高网页的动态性、交互性,后在 web 服务器端进展神速,快速替换了 c/c++ 所写的 CGI 程序。

在单机版的客户端方面,取得了较小的进展。比如,我日常使用的 SQuirreL SQL Client (java 程序, Windows/Linux 双平台)。

至于 web 客户端(java applet) ,则因 Mozilla/Firefox 在 Javascript 上的发力(持续向 Javascript 增加功能、提交到标准化组织),Java 阵营逐渐主动废弃了 java applet。

Java 相关开发工具,包括 IBM WSAD 、Borland JBuilder 、Eclipse 等,早期的开发工具有使用内存高、运行慢的毛病,近些年因开源组织参与开发而逐步改善。

 

2.3 java 之后的 C#, 语法与类库仿照 java ,又有增强:

一方面狂增各类方便编程的语法,比如 property/event ,另一方面疯狂增加 java JRE 不包含的功能: data table, web 模板引擎, crystal report 报表工具, webform(我不看好webform),工控编程OPC,办公简单编程VBA 等。

并在开发文档多语言自动翻译方面下功夫,微软官网的中文文档的机器翻译水平,业界也是一流的。

凭借功能多、开发工具强劲、入门简单的优势,C#逐步在单机版桌面程序占住一定份额,比如微软与某大学合作的 Paint.NET 在持续开发,有一定的可用性;并且借助易用性高、开发工具好的优势,逐步在蚕食 web 服务器端编程的 java 份额。

近几年又开始在跨平台、开源、标准化方面发力,发布 .net 5.0,6.0, 全力阻击 java。

java 及相关工具,有很明显的 Unix/Linux 烙印,比如,倾向于使用命令行,对初学者其实有一定的门槛。

C# 在 Linux 编程方面,.net5.0, .net6.0 目前尚不完善,有待提高。

 

2.4 php 相对于 c++, 在web 服务器端编程方面,优势也很明显:

内存自动回收;庞大的官方类库(比不了 Java/C#,但远超 C++)。

php 因为是源代码级别的解释执行,额外有一些优势:一个目录下十几个 .php 文件,如果只有一两个是写好的,也可以调试、运行。没有编译、打包时间。

缺点也很明显:缺乏 GUI 库、运行速度慢、缺乏官方的GUI开发工具等。

 

基于以上分析的 1、2 ,可以看出, Rust 用于 web 服务器端编程,已经没什么机会了。

Rust 虽然在语法上增加了内存可控的自动回收、并保持 c/c++ 的执行效率,但抛弃 c/c++ 的语法(变量定义、函数定义、for/while 循环等),增加了入门难度。

Rust 与 Java/C# 相比,无明细亮点。

且 web 服务器编程领域,执行效率降低一点点一定并非不可接受(<30%),现在多服务器集群的技术已经发展很完善、也很便宜。

服务器上运行的软件,内存要求也没那么严苛。现在台式机都有 16G 运行内存了。

web 服务器编程领域,需要的是入门容易、自动内存回收、自带数据库读写类库的编程语言。

 

综合而言,Rust 在web 服务器编程领域,完全没有机会了。

 

 

欢迎转载,转载请注明出处: https://www.zheguisoft.com/staff_blogs/jacklondon_chen/2022, 及 https://my.oschina.net/jacklondon/blog/5294827