在互联网后端服务场景,因为他不像移动客户端研发。移动客户端的研发,在 iOS 上是 Objective-C 和 Swift ,在 Android 上是 Java 和 Kotlin 。整体语言是以官方支持的语言为主,也有其他的第三方研发方式,但相对于官方支持的方式,并不主流。
在 web 后端服务场景,其实可以选择的语言很多,因为他是通过 http 协议方式与客户端进行对接,或者是公司的内部服务例如 dubbo 微服务。这时可以选择的语言就要多的多,Java 与 C++、Python 与 PHP,PHP 在很多程序员心中是最好的语言。
拿 Java 与 C++ 来说,两种都是最流行的编程语言,两种语言各有优劣势,需要根据实际的业务需求,去选择进行使用。
从运行角度来说,Java 语言需要运行在虚拟机上,在虚拟机上运行编译出来的字节码。C++ 语言是编译运行,运行的是编译出来的二进制文件,在 Windows 上是著名的 exe ,对于使用过 Windows XP、Windows 7 等系统的用户来说,应该是不熟悉的,哦不应该是相当熟悉的。
从学习的角度来说,Java 语言是相比于 C++ 语言是简单的,从语言的语法的层面,到标准库的设计,到开源生态,Java 在 Web 后端开发领域都是有很完善的生态。C++ 语言相对来说语法众多,学习曲线很高,喜欢进行复杂度挑战的人,会更喜欢 C++。

从编程范式角度说,Java 语言主要支持面向对象的研发方式,这种研发方式是主流。C++ 语言继承自 C 语言,支持过程式、面向对象、模版范型编程、函数式编程等多种编程模式,能力更加强大,但复杂度也更高。
从语言的语法上来说,Java 在 C++ 基础上做了大幅简化,从构造方法来说,C++ 有很多的构造方法,基础的构造方法、拷贝构造方法、复制构造方法等一系列的构造方法,还有析构函数,复杂度是相当之高。用的时候,稍有不慎可能就会引发 Core Dump,除非是语言高手,不然相当容易用出生产环境问题。
从实现业务角度来说,Java 语言与 C++ 语言,均能实现相同的功能,因为他们都是图灵完备的通用编程语言,理论上可以实现任意的功能,可以实现一个 Web 服务器也可以实现一个存储。
Java 实现的 Web 服务器,著名的 Tomcat 和 JBoss 很多 Web 应用都是在部署在其中,C++ 实现的 Web 服务器,有 Apache 和 Nginx 很多静态的网站和负载均衡能力都是通过这两个 Web 服务器进行实现的。Java 的 Web 应用动态性更强,基于 C++ 的 Web 服务器在静态性 Web 站点和高性能负载均衡上更强大。
在存储领域,像 MySql Oracle 等数据库均是 C++ 语言进行实现,因为数据库本身需要有很好的性能,并且需要对文件系统有很多的操作,这时 C++ 语言是更合适的。Java 语言有 HBase 存储,因为虚拟机的 GC 和Java 语言的性能,使用场景相对没有那么广泛。
互联网公司的诞生时间,也会有相应的语言偏好,腾讯和百度诞生的更早,他们用 C++ 的场景就很多,像 JD 和美团等公司用的更多的就是 Java ,像更后的字节和滴滴 Go 语言在他们那里用的很多。
在一个大的互联网公司,语言的选择需要公司内的监控体系,告警体系,运维体系有很好的支持,以及内部中间件生态有很好的支持才可以,如果公司生态支持的最好的是 Java ,那么你最好是用这种语言,不然想做个业务监控,调用下 Redis 都是很困难的事情。
语言对于程序员很关键,因为语言代表着一种思维方式,我们在争执一个语言好坏的时候,也要结合公司的语言生态情况,与业务特点去进行技术选型。毕竟我们只嘴说某某语言是最好的,它是枯燥的,要言之有物,有的放矢。
学习 C++ 语言确实能开拓我们的视野,让我们能够理解一种纵横性的设计哲学。