我判断这个的标准很简单——只要这个语言能让我等C语言老手接受不再写C的事实,这个语言才 “有可能” 挑战到C语言的地位—— 来看啊,这有个新编译器,能把C转换到新语言,现在你可以让他完成你的全部工作了 —— 这样C语言的老手就会开心起来。
Python以及和其类似的语言对此做的并不够好。使用Python实现 NTPsec(以此举例)可能是个灾难,最终会由于过高的运行时开销以及由于垃圾回收机制导致的延迟变化而烂尾。
如果需求是针对单个用户且只需要以人类能接受的速度运行,使用 Python 当然是很好的,但是对于以 机器的速度 运行的程序来说就不总是如此了 —— 尤其是在很高的多用户负载之下。
这不只是我自己的判断 —— 因为拿Go语言来说,它的存在主要就是因为当时作为Python语言主要支持者的Google在使用Python实现一些工程的时候也遭遇了同样的效能痛点。
Go语言就是为了解决Python搞不定的那些大多由C语言来实现的任务而设计的。
尽管没有一个全自动语言转换软件让我很是不爽,但是使用Go语言来写系统程序对我来说不算麻烦,我发现我写G写的还挺开心的。我的很多C编码技能还可以继续使用,我还收获了垃圾回收机制以及并发编程机制,这何乐而不为?
本来我想把Rust也视为 “C 语言要过时了”的例证,但是在学习并尝试使用了这门语言编程之后,我觉得这种语言现在还没有做好准备。也许5年以后,它才会成为C语言的对手。
随着2017结束,我们已经发现了一个相对成熟的语言,其和C类似,能够胜任C语言的大部分工作场景(我在下面会准确描述),在几年以后,这个语言界的新星可能就会取得成功。
这件事意义重大。如果你不长远地回顾历史,你可能看不出来这件事情的伟大性。三十年了 —— 这几乎就是我作为一个程序员的全部生涯,我们都没有等到一个C语言的继任者,也无法遥望C之后的系统编程会是什么样子的。而现在,我们面前突然有了后C时代的两种不同的展望和未来……
……另一种展望则是下面这个语言留给我们的。
我的一个朋友正在开发一个他称之为 “Cx” 的语言,这个语言在C语言上做了很少的改动,使得其能够支持类型安全;他的项目的目的就是要创建一个能够在最少人力参与的情况下把古典 C语言修改为新语言的程序。
我不会指出这位朋友的名字,免得给他太多压力,让他做出太多不切实际的保证。但是他的实现方法真的很是有意思,我会尽量给他募集资金。
现在,我们看到了可以替C语言实现系统编程的三种不同的可能的道路。而就在两年之前,我们的眼前还是一片漆黑。我重复一遍:这件事情意义重大。
我是在说C语言将要灭绝吗?不是这样的,在可预见的未来里,C语言还会是操作系统的内核编程以及设备固件编程的主流语言,在这些场景下,尽力压榨硬件性能的古老规则还在奏效,尽管它可能不是那么安全。
现在那些将要被C的继任者攻破的领域就是我之前提到的我经常涉及的领域 —— 比如 GPSD 以及 NTPsec、系统服务以及那些因为历史原因而使用 C 语言写的进程。还有就是以DNS服务器以及邮件传输代理 —— 那些需要以机器速度而不是人类的速度运行的系统程序。
现在我们可以对后C时代的未来窥见一斑,即上述这类领域的代码都可以使用那些具有强大内存安全特性的 C 语言的替代者实现。Go 、Rust 或者 Cx ,无论是哪个,都可能使C的存在被弱化。
比如,如果我现在再来重新实现一遍NTP ,我可能就会毫不犹豫的使用Go语言去完成。
|
|
||||||
|
|
||||||
|
|