百科问答小站 logo
百科问答小站 font logo



为什么大学讲授 C 语言比讲授 C++ 的更多? 第1页

  

user avatar   zhao-ce-33 网友的相关建议: 
      

因为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


user avatar   0xD09E 网友的相关建议: 
      

这两个游戏都有自己的问题。但严重程度完全不一样。

赛博朋克最大的问题是人力不够,没有人手把愿景在限期内做出来,导致后期狂砍。但从已有的成品来看,CDPR是完全有人才有能力把东西做出来的,只不过没时间做。光影效果,已有的垂直城市设计,以及主线和很多支线任务的演出都有毫不输巫师3的气质,尤其是日本城浮空平台那关,无论是游戏流程还是画面还是音乐,都把类似银翼杀手2047的那种气氛和感受做到了极致。有人说CDPR的人才都跑了,或者CDPR傲娇了开始放水,这并不客观。2077确实是个半成品,主机优化的问题尤其严重,但你关注已经完成的部分,用高配置PC玩,其质量并未令人失望,依然是巫师3的水准。

2077就像是一个优等生忘了做背后的几题的考卷,开天窗导致不及格,但已经做了的题目还是正确率极高的。

谈到E3的demo,单从画面上讲你很难说它缩水了。只不过CDPR没告诉你想要E3画面,就得上3080+光线追踪。。。

我猜想没有光追的话,游戏在大多数情况下也是可以达到光追的效果的,只不过人工工作量会很大,有些地方需要离线烘培,而有些地方需要人工设置虚拟光源。CDPR可能发现项目后期工作量太大搂不住了,就上了光追这个大杀器。。。


至于无人深空,现在口碑很好,但我要不客气地讲,这个游戏到了今天依然是垃圾,只配卖$19.95,打折的时候卖2.95的那种。

Hello工作室自始自终都没有把初始愿景实现的技术能力。

你可以看无人深空进入大气层的技术实现。先是一段飞船进入大气层摩擦发红的特效,然后可以看见地形通过一种非常粗糙、视距很近的情况下刷新出来,并且刷出来的地貌和太空中看到的地貌完全不同。所以从头到尾,hello工作室都没有类似精英危险和星际公民的无缝行星登陆技术。

无人深空更新了十几次,并没有触动这个游戏除了机械刷就没有任何深度的本质。这是一个极其无聊的游戏。但它刷了两年的DLC,玩家也就给他点面子,没功劳有苦劳。它每次更新我都会进游戏看看,但玩不了半小时就会放弃。一是实在无聊,二是它美术设计和渲染水平有限,色彩及其刺眼。比如在母船机库里,到处都是亮瞎狗眼的点状光源,但这些光源不会照亮周围的任何东西,看的时间长了有种不带护目镜看焊接的流泪效果。你说更新了那么久,这么简单的问题都不解决,有什么用呢。游戏中随处可见低级设计的痕迹,比如说有很多行星上有一种可以卖钱的球,这种球没有任何贴图,只有亮瞎眼的纯白色材质,在HDR效果下极其刺眼,但它又不是个光源,放在地上不会照亮周围任何东西。这种打开Blender就存盘的建模初手垃圾素材居然也能放在游戏里,真是活久见。

所以无人深空就像是一个学渣冒充学霸,把期望提得无限高,却每题都答错结果接近0分,被骂,然后花了漫长的时间在那里订正,一题一题的改,最后终于接近30分了,然后获得了大家的赞赏,全然忘记了它改了那么久依然是不及格。

无人深空的贴图我就不贴了,首发的时候真是纯垃圾,基本上是2008年魔兽世界首发的那个水准。现在也依然是垃圾,开个HDR看着眼睛都疼。




  

相关话题

  既然谭浩强的c语言教材那么烂,那么应该选择什么书作为c语言教材? 
  为什么世界上大多数地方的人习惯用逗号表示小数点,而C++却用圆点表示小数点,而不是按照大多数地方习惯? 
  C 语言执行 a=a++; 后,a 的值应该加一还是不变? 
  Tiny C Compiler是个怎样的编译器?有人更新吗? 
  C 语言如何判断等差数列? 
  就节省编译时间来说,Precompiled Header和Pimpl范式哪个更好? 
  如何用 C 语言画「心形」? 
  写代码没激情怎么办? 
  C++中this指针什么情况下是必须要用的? 
  这个如此诡异的C语言「怪事」是怎么回事? 

前一个讨论
综合目前情况来看,疫情什么时候才能结束?
下一个讨论
学python在老师全用mac的情况下有必要换成mac吗?





© 2024-06-23 - tinynew.org. All Rights Reserved.
© 2024-06-23 - tinynew.org. 保留所有权利