首先对于初学者,不能盲目追热点,语言是用于解决实际问题的,因此每个语言都有其用武之地,如果非要回答这个问题,我们来逐一分析:
1.C/C++
优点:现代编程语言的鼻祖,在嵌入式,游戏开发等需要很高执行效率的场合具有无可替代性,包括大数据人工智能的大部分基础算法库都是由这两门语言开发。在这些领域不可替代。
缺点:开发学习难度大,非资深程序员极易编写出内存不安全的代码,如悬垂指针,数据竞争等。windows下的c++和linux下c++,基础库并不兼容,迁移和适配难度大,进一步加大了学习难度。
2.java,c#,go
之所以把这几门语言放在一起,是因为他们有相似性,如都具有垃圾收集器(GC)。其中java和c#更为相似,具有相似的语法,都是半编译半解释型语言,都具有虚拟机,jvm和CLR,都能跨平台,都适合进行web开发。其中在语言层面,c#比java更加具有创新性,也更好用,但java因为反射性能强悍,诞生了spring等一系列解放生产力的web框架,尤其近年来spring cloud微服务架构,在解决高并发、模块化方面走在前列。例如淘宝双十一等节日,阿里借助这一套微服务架构抵御了极高的并发量。
再说说go。相对于前两位,是后起之秀,具有很多先进性,如高并发,实现java、c#相同的功能,占用更少的系统内存等资源。性能方面三者在同一级别。可以进行系统层级的开发。再说说他们共同的GC,带来安全性,便捷性的同时,也使得GC运行时抢占系统资源,造成短暂性能下降。
3.Python,JavaScript
都是解释性语言,具有便捷性,但也具有性能瓶颈。Python在大数据、人工智能等领域发展迅速,但注意他调用的是c、c++编写的基础库,仅仅是胶水语言,大量的运算是在运行库中进行的。并不适合用在嵌入式、大型游戏、甚至是web开发。
4.下面我们再来对比另一位后起之秀Rust
Rust是一门系统编程语言 ,专注于安全 ,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。Rust在语法上和C++类似 ,但是设计者想要在保证性能的同时提供更好的内存安全。 Rust最初是由Mozilla研究院的Graydon Hoare设计创造,然后在Dave Herman, Brendan Eich以及很多其他人的贡献下逐步完善的。 Rust的设计者们通过在研发Servo网站浏览器布局引擎过程中积累的经验优化了Rust语言和Rust编译器。
通过所有权、生命周期等在其他编程语言中从未出现的新概念,解决了c、c++的安全性问题。没有GC,直接编译成机器语言,因此具有极高的运行性能,同一套代码能在windows、Linux和mac下编译,跨平台。因此我个人认为,未来将会是类似的这样一门编程语言被广泛使用,就算不是rust也可能类似rust。
缺点:相比于除C,C++外的其他语言,学习难度较大。
此回答转自乐字节。