为什么C语言能长盛不衰?

这个问题不好正向回答。

正向逻辑是“因为C语言好,所以长盛不衰”。但是大家都知道好东西未必就不可替代,甚至还有“劣币驱逐良币”的情况。C语言本身的好或坏,并不是长盛不衰的充分条件。

所以我想试着反向分析一下:当我们去试着替换C语言的时候,会发现什么。

1、Perl、Python、Lua等语言发明的动机

我们先看看其它容易被替代的语言,比如Perl、Python等。

Perl于1988年首次推出,目标是代替功能较弱的命令行工具。它的设计思路借鉴了Unix命令行工具如awk、sed。Perl作为完善的语言显然功能强大的多,可以胜任通用的编程任务。

Python于1991年推出,差不多是同时期的语言,目标也是做一种易学易用的、能够代替命令行编程的通用语言。它受早期ABC语言启发较多,同样也是受到Unix shell的影响。(显然那个年代的解释型语言都受shell影响很大,毕竟那时候写正经程序用C语言,写日常脚本用shell是默认选择。)

为什么C语言能长盛不衰?_第1张图片 左:Perl之父 右:Python之父

 

Lua大约在1994年推出,它的最初设计动机是为了搞研究写论文,主要目标是实现一种高性能堆栈式虚拟机,结果出乎意料的好,后来逐渐发展成一门通用语言。

2、这些语言凭什么立足

语言出现只是第一步,这些语言在众多语言之中能够立足、被大家所喜爱,主要凭借的是“在日常编程时的独特优势”,因为好用所以吸引很多人来用。一旦不好用就会丧失生命力。Python现在发展得这么好,离不开从1.x到2.x、从2.x到3.x的蜕变,也离不开每一次IT发展的风口。Python至少占对了几次风口:快速网站开发(Web框架),爬虫、大数据和AI等等。

如果某种语言在广泛比较中优势不大,还可以退一步,进入某个特殊领域立足。例如立足数据分析的R语言,立足寄生于其它系统的Lua等等。不管它们广义上是不是好语言,至少在特定领域它们非常能打。

大体来看,很多语言都是靠自身优势吸引大量用户,然后再靠用户积累出成熟的类库/技术栈,从而逐步立足的。

3、C语言立足的基础

相比其他语言,C语言并不是靠易学易用、或者在特定领域的独特性立足的。

C语言当下的地位不是在竞争中胜利而获得的,而是根本就没遇到过什么挑战。它和C++还不一样,C++还经常遇到争议,但是C语言很少有争论,或者说很难争论起来。

回归C语言的具体语法。如果不考虑虚拟机,直接用底层功能编程,我们实在想不出整数类型除了用按字节数归类为char、short、int、long,还能怎么分类。

人们也想不出一种比指针更好的,表示引用的方案;人们想不出数组还能怎么写;人们也想不出结构体struct里除了变量,还要加点什么才能锦上添花而不是画蛇添足。

人们想出了无数种内存管理方法,但是基本的malloc和free依然没被代替;函数调用和递归还是用调用栈实现,连C#也是一样。

总之,我觉得确实如其它答主所说,C语言与现代计算机架构密切结合,代表着人们对于计算机系统的认识水平。

从某个角度看,“C语言长盛不衰”是一件坏事。代表着人类的智慧因为各种原因暂时被锁定在这个圈子里。虽然更高层的技术有快速发展,但在C语言活跃的底层,暂时没有突破。

不排除未来遇到某种契机,C语言被另一种技术取代,那可能代表着人们对习以为常的计算机系统有了突破性的认知进步。

你可能感兴趣的:(java,服务器,c++)