- 主题:[转载]C++ 相对于其他编程语言有什么优势使其成为许多大公司的
其实根本原因是——“没得选”。
1、一个是面向对象目前仍然是解决大规模软件开发的技术,而C++在面向对象编程语言方面历史足够悠久,能解决不少实践中的实际问题,在面向对象的语言群体中,相对来说还不错。
2、如果要求一个语言在既要保证高性能,又要较高抽象表达能力方面,还要有足够成熟度,这几点筛下来就没几个了,如果再要求对软件各方面都有足够强的精细控制和定制能力,这基本就没得选了。
3、C++的生态虽然极其碎片化,到处都是轮子,但是好在历史悠久,各种犄角旮旯的轮子都有。这也意味着,只要努力找,总能找到最合适的轮子。语言生态达到这种程度的,就没几个。
4、很多遗留系统是ASM、FT、C、C++等语言写的,或者其遗留系统的软件接口采用的是C接口。此时,相对来说,而在集成这些老系统时,工作量最小、风险最小的语言是C++,毕竟就没见着那个语言能直接在顶层设计上直接宣称对C兼容。且确实经历过实践检验的就更少。
5、有一些比较优秀的特性,比如模板,这东西虽然很丑陋,但是,目前已经是唯一经历过实践检验的且足够完备的依赖类型系统了。
C++语言在诸多细节方面总是存在这样那样的问题,特别是C++的各种特性都有各种例外,这是导致C++难以做到精通的原因。但一旦到了具体实践应用方面,哪怕C++看起来好像样样不行,但是综合多个方面因素一起决策时,最后往往会发现,好像C++又样样行。所以,C++总是能很意外地出现在最终的筛选列表上。
总结来说,我觉得就一句话:C++这个语言没有明显的实践上的短板,很多时候“没得选”。
https://www.zhihu.com/question/594374093
--
FROM 124.72.110.*
不知这个问题chatgpt怎么回答?
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 其实根本原因是——“没得选”。
:
: 1、一个是面向对象目前仍然是解决大规模软件开发的技术,而C++在面向对象编程语言方面历史足够悠久,能解决不少实践中的实际问题,在面向对象的语言群体中,相对来说还不错。
:
--
FROM 183.179.53.*
性能+高度可控就已经有足够优势了,学习门槛高但也没有到夸张的地步,绝大部分项目其实并不要求精通,effective系列看起来复杂,其实常用的也就十来条
c++11之后基本可以做到90%以上的场景避免使用野指针,甚至可以写进很多公司的coding style
至于很多人诟病的面向模板编程,这部分确实很烧脑,要自研一个最小运行时开销的lib需要一定的功底,但这么些年即便在大厂,我也就见过一两个真正上规模应用在核心线上系统的纯模板lib
--
FROM 221.224.15.*
因为跟C捆绑在一起
--
FROM 119.73.232.210
兼容c,泛型编程特性是cpp的最大优势。
至少很多环境受限系统的开发
难以用高级语言的原因就是因为资源开销不可控,这一点cpp做的不错
泛型模板编程能力特别是标准模板库是cpp的另一大助力,是编程抽象能力的
一大提升,这一点也是cpp前期流行的原因,但后来功能发展的越来越复杂了,
学习成本非常大,优劣都突出。
大规模程序开发需要提高软件逻辑的复用层级,以节省开发资源。
指令层复用(汇编),语法层复用(c等函数语言),语意层复用(cpp等泛型模板语言),
概念层复用(以元模型开发等实现程序语言生成为目的的元编程语言)
【 在 hgoldfish 的大作中提到: 】
: 其实根本原因是——“没得选”。
: 1、一个是面向对象目前仍然是解决大规模软件开发的技术,而C++在面向对象编程语言方面历史足够悠久,能解决不少实践中的实际问题,在面向对象的语言群体中,相对来说还不错。
: 2、如果要求一个语言在既要保证高性能,又要较高抽象表达能力方面,还要有足够成熟度,这几点筛下来就没几个了,如果再要求对软件各方面都有足够强的精细控制和定制能力,这基本就没得选了。
: ...................
--
FROM 120.239.197.*
貌似是这个理,去某大型互联网公司不是号称要为C++后继选型,结果选来选去发现还是C++最合适,顶多自己基于它改造。
【 在 hgoldfish 的大作中提到: 】
:
: 其实根本原因是——“没得选”。
:
: 1、一个是面向对象目前仍然是解决大规模软件开发的技术,而C++在面向对象编程语言方面历史足够悠久,能解决不少实践中的实际问题,在面向对象的语言群体中,相对来说还不错。
:
#发自zSMTH-v-@钛星
--
FROM 222.129.53.*
对库的开发者确实可以很难,但其实可以做到对库的使用者很简单。比如Eigen库,花样技巧简直让看源码的人头疼,但是用起来也很简洁。
【 在 mopo 的大作中提到: 】
:
: 性能+高度可控就已经有足够优势了,学习门槛高但也没有到夸张的地步,绝大部分项目其实并不要求精通,effective系列看起来复杂,其实常用的也就十来条
: c++11之后基本可以做到90%以上的场景避免使用野指针,甚至可以写进很多公司的coding style
:
: 至于很多人诟病的面向模板编程,这部分确实很烧脑,要自研一个最小运行时开销的lib需要一定的功底,但这么些年即便在大厂,我也就见过一两个真正上规模应用在核心线上系统的纯模板lib
#发自zSMTH-v-@钛星
--
FROM 222.129.53.*
同意,这是主要的。实际上是要用C,最后用了C++。
还有就是数据库接口。许多新语音,数据库接口还是有欠缺。
【 在 hehao 的大作中提到: 】
: 兼容c,泛型编程特性是cpp的最大优势。
: 至少很多环境受限系统的开发
: 难以用高级语言的原因就是因为资源开销不可控,这一点cpp做的不错
: ...................
--
FROM 221.221.52.*
库的开发不难。被大家认可难。
【 在 ble 的大作中提到: 】
: 对库的开发者确实可以很难,但其实可以做到对库的使用者很简单。比如Eigen库,花样技巧简直让看源码的人头疼,但是用起来也很简洁。
:
: #发自zSMTH-v-@钛星
--
FROM 221.221.52.*
chatgpt
C++ 是一种流行的高级编程语言,具有许多优势,这些优势使其成为许多大公司的首选。以下是 C++ 相对于其他编程语言的一些优势:
性能:C++ 是一种编译型语言,可以生成高效的机器代码,因此具有卓越的性能。C++ 允许程序员对内存和硬件资源进行细粒度的控制,从而可以编写高效的系统级和嵌入式软件,适用于对性能要求较高的应用领域,如游戏开发、嵌入式系统和高频交易等。
控制权:C++ 提供了对计算机硬件和系统的高度控制权。它允许程序员直接访问内存,使用指针、引用等强大的底层特性,从而可以实现更高级别的内存管理、优化和系统级编程,适用于对底层硬件控制要求较高的应用。
可移植性:C++ 是一种跨平台的编程语言,可以在多个操作系统和硬件架构上运行,包括 Windows、Linux、macOS 等。这使得 C++ 成为许多大公司在开发跨平台应用程序和系统时的首选语言。
大型项目支持:C++ 提供了强大的面向对象编程(OOP)特性,如类、继承、多态等,使得它非常适合大型项目的开发。C++ 的强大的类型系统和静态类型检查可以帮助程序员在开发过程中发现并修复错误,提高代码的稳定性和可维护性。
生态系统:C++ 拥有丰富的库和工具生态系统,包括标准库(如 STL)、Boost 等第三方库,这些库提供了丰富的功能和工具,可以加速开发过程并提高代码质量。
与 C 的兼容性:C++ 是 C 语言的超集,意味着 C++ 可以使用 C 语言的大部分代码,并且 C++ 代码可以与 C 代码相互调用。这使得许多现有的 C 语言项目可以方便地迁移到 C++,并且可以充分利用 C++ 的高级特性。
综上所述,C++ 作为一种高性能、灵活且具有大型项目支持的编程语言,被许多大公司选择用于开发复杂的应用程序和系统。它的性能、控制权、可移植性以及丰富的生态系统使其在许多领域中都有显著的优势。特别是在需要对性能进行高度优化、对底层硬件进行控制、进行大型项目开发以及跨平台应用程序等方面,C++ 的优势更加明显。此外,C++ 也在游戏开发、嵌入式系统、金融科技、高频交易、科学计算等领域中广泛应用,这些应用场景对性能和控制性要求较高,因此选择了 C++ 作为首选编程语言。同时,C++ 作为一种通用编程语言,也具有广泛的社区支持和丰富的资源,这也是许多大公司选择 C++ 的原因之一。
【 在 fanci 的大作中提到: 】
: 不知这个问题chatgpt怎么回答?
--
FROM 158.140.1.*