因为c++被骂惨了
c++曾经有过一段辉煌的时期
那个年代,几乎所有人都在用c++,而且普遍认为c++是c的继承者
结果导致了软件大灾难,引发了第二次软件危机
这里先说一下第一次软件危机,第一次是汇编带来的非人性化开发,汇编说到底就是硬件指令集嘛
压根不是个语言,人要用机器的思维方式去思考问题,就导致开发非常慢,那怎么办呢?
将其封装,用接近人类的语言将其表述出来,执行的时候再将其翻译成指令
c就应运而生了,解决了第一次软件危机
第二次软件危机则是c带来的,因为人们发现,随着软件规模的扩大
复杂度呈级数级别上升,你今天去维护c的大型项目,都是非常困难的一件事
随后发明的c++不仅没有解决c的问题,反而引入了更多问题,它把语法进一步复杂化了,++嘛
就导致到后面千人千面,每个人写的都特么不一样,互相之间很容易引发争吵
你到底要怎么样嘛?当你去维护别人代码的时候,你就开始各种重构
多重构几次,项目还做个屁啊,直接失败了,第二次软件危机期间,项目失败率飙升到90%+
基本上可以说是,只要是大型项目,就会失败,90%基本上跟100%没什么本质上的差别
这一时期的著名著作就是人月神话,没有银弹这些,然后人们开始寻找银弹
有问题要解决问题,于是java应运而生
java最大的意义在于对c做了减法,当然也做了加法,但是更重要的是,它做了减法
java原名c++++--,最后两个符号--就说明了java对c以及c++做的减法
将一些容易错的东西,给封装起来,比如内存管理,并提出了著名的不要重复造轮子的口号
从而大幅降低软件工程失败率,从以前90+降低到50%-,是的,不完美,但是很多项目因此可以运转得起来了
书里把这段历史写得很清楚
并催生了一系列的工程方法,形成了软件工程这个专业,其中最重要的理论就是面向对象oop了
而且oop的理论还拿了一次图灵奖,2001年,图灵奖发给了面向对象它爹alan key
alan key就是smalltalk的发明者,后来sun做java的那批人,包括后来做出了hotspot,v8,dart这些牛逼东西的lars bak早期都是做smalltalk的
所以回答你的问题,c++对比c好不好,看你怎么看这个问题
一般认为是不好的,后期很多语言,之所以提出来,目标都是要解决c++
比如java,go,d,rust……基本上是一个语言的提出,就要先把c++给骂一顿
当年教主选择obj c的时候,也看不上c++
因为这货不解决问题,一个笑话就是,当你面对一个c++写的大型项目该怎么办?
衫裤跑路啊,还做个屁啊,c++根本就不应该做成一个大型项目,尤其是应用的项目
一般就是把c++拿来用一下,封装起来,然后暴露api给ffi或者nfi调用,也就这样了
就是在有限的范围内使用该语言,就像夜壶,里面的东西谁都不想看,赶紧封装起来了事
就像flutter和java的图形引擎skia和prism,这两个的确是c++写的,但是很快就被封装起来了
对于用户来说,这些都是透明的,用的时候谁在乎你用什么写的
当然因为历史的原因,还有一些工程,是用c++写的,比如一些数据库,oracle之类的
去维护这些翔山……嗯,也稳定
就像现在其实也还有用cobol写mainframe的
但是数量大幅减少了,我估计银行里面那些做主机的互相之间都认识,就那么几个人
很多语言都这样,包括以前的delphi,还是有公司在用,但是维护为主,delphi后来就发展成了c#
以前c++对比其他语言最大的优势在于兼容c,但是现在随着各种语言runtime对于nfi(native function api)的成熟,这个优势就越来越不明显了,java和dart都在强化这一领域的工作
9102年了,多睁开眼睛看看这个世界上在发生什么
现在各种语言真的不少,dart/flutter,swift(ui),这两个是最近几年诞生的语言和工具,在设计上都挺像是java++,java和javascript也在逐步靠拢,js最搞笑,越做越像是java,低配版的java,不过从名字上看,js的确是这一个目的,java的script
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有