现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

学习探讨:后C++时代的一些感慨

2012-08-26 18:05 工业·编程 ⁄ 共 5998字 ⁄ 字号 暂无评论

引子

    从五月开始,就一直在进行新平台的架构工作,这也是首次独立的去架构一个平台,算是一个赤裸裸的纯新人吧。新平台是基于COM的,无他,在平台建设的初期,BOSS就指明了方向,要考虑可移植性,二次开发,以及着重强调对web的支持,让人不得不感慨真的是进入web的时代了(顺便感慨下,终于知道为什么优秀的架构师万金难求,在你还在为适应需求而绞尽脑汁时,别人已经能看到未来的变化,并对应的做出一系列的措施了)。

    早在听联邦快递架构师胡博士讲座时,其讲到为了加快效率,底层用了C,为了适应平台多样化,用java,他还着重强调了两点,python和nosql,说python简直是天生为了云而存在,而近几年火起来的nosql更是为分布式架构而生。但是,讲了这么多,唯独却没有C++。

    早期C++的诞生或许是为了开发速度与运行效率的兼顾(纯属个人猜测),在过去的那些年中,它的确做的非常出色。但是随着硬件的日新月异以及成本的降低,许多时候,其他一些语言相对他的运行效率已经在可以容忍的范围内了,甚至在特定的环境中犹有过之。而C++面对相对更底层的语言时,运行效率也不是那么尽如人意。另外随着分布式架构的大行其道,C++的优势还会存在吗?
说是后C++时代,其实个人认为即使按照现状没有任何改变,它依然可以坚持个若干年,但是影响力会逐渐式微。该做出一些变革了,或者等慢慢被蚕食,最终只能在一些爱好者以及少数人的手中了,哎

    以上,只是一些个人的感慨,希望有识之士能不吝拍砖,给出自己的观点。

》》》学习C++从入门到精通的经典书籍(修正版)

众说纷纭

1、可以参考google、facebook等公司对c++的重视。

2、我们公司也有点要走这样的趋势,今年年初刚上的项目,做到一半被吹了。boss要改成bs的,害的我们这些搞MFC(会点js)的学起了extjs。不过用bs只是做表示,核心还是c++。可能楼主说的c++用的少会在更的领域出现,但是我觉得在业务核心上还是c/c++多,效率主面c++应该不比c慢多少吧。

3、C++的缺点恰是他的优点所在,不针对某个方向或范畴。估计 java解释器,python解释器,.net解释器,虚拟机,还得用C/C++来开发。C本就是C++的子集。要效率就是把C++的部分特性去掉就是了。

4、两年前我就说过,未来数年无敌的编程语言组合是: Python+C。C是软件工业语言,用来实现软件基础,或者是后台服务。Python在前台用胶水语言。或者是解释脚本语言的便利适应变化。
C++的地位会变的越来越尴尬。但是对于不需要很多跨平台或者不需变化的场合,C++还是有其一席之地的。此时可以用C++结合一种脚本语言来实现。

5、等你百年之后,c++都不会过时。c++也许慢慢退出它不太擅长的领域,但在它自身的领域上,它依然是王者。所以,即使没了java,没了.net没了微软。c++依然还是存在的。

6、在硬件极其便宜的今天,说穿了,大部分情况下其实语言效率相差几乎可以忽略了,除非对于海量数据的即时处理。而在这种情况下,效率哪怕是一丁半点也是争取的对象,大部分人可能会选择纯C,甚至偏执的还会用到汇编,C++的尴尬也正来源于此吧。

7、我刚跳槽四个多月,原来是做c++的,做了四年电信c++开发。去年时我们对原boss系统做升级,原来该系统用的是80%的c++和20%的java。升级后是90%的java和10%的c++。c++渐渐没落是事实,电信业这种对性能要求比较高的都可以改用java,其它行业就更不说了。

8、说句实话!我们为什么要盯着C++的弱势呢。C++已经不适合表现层了。底层还是有C++的用武之地。C++如果除去多态应该不会比C效率低。而且大家也不要光看执行效率,也要看开发效率,就算C++多态被定义为蹩脚的函数指针,但是毕竟给人们带来了很多的方便。

9、你要关注JAVA与C++各做什么。就像操作系统源代码里面,汇编占有量很少,10%估计都不到。其他都是C。但是汇编所作的事情都是对操作系统运行至关重要的。例如线程切换这种核心任务。

10、用c++别考虑架构,我觉得c++是用在变化小、开发周期长、要求性能相对较高的产品上。每个语言都在各自领域有特长,和java比架构,这不是扯么。

11、C++用到底层有个前提条件,需要效率的地方。但是需要效率是否一定就会选择C++了呢,就OS来说,往往是C+核心业务汇编,c++是加快了开发进度,但是大型企业不见得就缺人手,如您所见,我参加了大约数场关于海量数据的讲座,讲起架构时,基本底层都是纯C,可见C++仍然不是首选,或许也就只能是中国国情这种中小型企业的首选。

12、从效率上来讲C++和C是没差别的,区别在于写的人。首先必须要承认的是C++远比C复杂。一个勤奋好学的人1年足够能够从 C新手 到 C专家。 但 C++ 没个三五年,根本到不了C++专家的地步。没深入理解的话非常容易写的比C效率低,造成了C++成为一门专家语言。能够把程序写的既漂亮有效率高。但培养这种人需要大量的时间。。。。这么可以得出结论:C简单,程序员容易培养
C++复杂,程序员难培养。所以不少企业用C很正常。

13、C++仍然很适用,只不过用C++在电脑上编程,该有的程序差不多都有了,没必要再编了,而且编了也不赚钱,另外的编程方式都是比较合适赚钱的。但,这并不代码C++语言没有用,而是不赚钱。试想我们电脑上的程序,全部不用了,全都用BS结构的,或者在Android上的,那是多么不爽的一件事情啊。只不过它离我们太亲近了,我们体会不到没有它的痛苦。

14、本来双核时代,并行算法,应该是C++大行其道,可惜现在VC的越来越少了,都是微软造的孽,打压其他厂商的C++,比如波兰...结果自己又不发展,大搞C#.结果.net又不行。。但是移动开发中,C++还是有其存在的意义的,至少未来5年,在移动处理器还不够快的时候,手机上的电源管理,和相关的硬件,嵌入式设备还是要C++的。

15、首先,轻易地断定C++效率比C低,个人感觉是不科学的。你得在了解为什么会有额外开销的基础上,才能有理有据。再者,对C++的投资向来不会是肉包子打狗,你所掌握的各种概念都会有用武之地,在做C++的时候,你更容易接触到系统的内部机制、函数调用协定、堆栈的分析等等很多对于其他语言虽然很少提及但是却是一个优秀程序员必须掌握的知识。最后,其实C++的应用领域只是从一些不擅长的领域退下来而已,很多开发包依然是以C++为主啊:DirectX,ObjectARX……游戏工作岗位并没有明显减少。

16、去看看百度,腾讯,网易的招聘广告。你就知道该学啥,该搞啥了。》》》新手必看:从大公司职位要求获得成长路径

17对很多人来说,在windows平台使用C++开发客户端,更多的时候只能使用MFC这个框架,或者直接封装Win32 API。其他的一些公开框架,像Qt,gtk++,好像也没那么好用。像你说的那种有自己的框架的公司,比例太小。至少在windows平台做客户端,除了C++加MFC,我是没想出有什么好的选择。或者java来写,以现在的硬件条件来说,java写的客户端,运行起来也还不错。但如果使用java,写个串口程序,用java就太麻烦了。

18、我们是开发机顶盒的,一直以来,主要语言还是C++,不过随着处理器升级,有越来越淡化的趋势。最明显的,以前得用C++写GUI,现在基本不用了,webkit 做底层,应用都是基于webkit来写,UI用网页做(html+jquery)比c++做的漂亮。呵呵,所以我现在也得学js,jquery,jqueryUI。。。

19、事实上我觉得:分析问题、解决问题的能力,在使用C++开发的过程中已得到提高。既有传统的分解问题(C),又有现代的抽象问题(++)。既面向了计算机,也面向了对象。很少看到有其他语言可以实现,但C++不能实现的需求。把DESING PATTERNS在C++的项目中优雅的使用,是一种享受。

20、列举些适合使用C/C++的开发领域:协议栈、驱动、图形图像分析、高并发、海量数据分析、嵌入式平台(IOS、WinCE、BREW、Symbian、PalmOS、uCos(II)、ucLinux...)开发、逆向工程、音视频分析。。。

21、个人感觉c++还是很好的,先把c++学好,在学习别的语言就容易多了,相对于c++,感觉c#的逻辑体系没有c++严谨,在底层,c++还是无可取代,坚持下去吧,总会有收获的!

22、c++可能在很多民用领域市场萎缩了。但在工业控制、监控这些领域还是一枝独秀的(比如OPC)。c++和java也是不好比较的。java是商业语言,c++的出现是没有任何商业目的的。c++是一种标准,ISO和ANSI在维护这个标准。你可以自己做c++编译器,将这种标准按照你的意识实现。比如Qt,在上层表现为c++,底层不用管他。不过听说诺基亚把Qt贱卖了,可惜了。因为我本身是从事电力领域软件开发的。打个比方吧,C++就好比火力发电,虽然在萎缩,但是依然是发电的绝对主力。不能因为市场的一点点变动就否定他的价值。楼主写的是不错,居安思危,值得思考。
能把c++吃透的人,干什么都不会差

23、工业,医疗,航空,航天的大部分软件或核心模块貌似都是C/C++做的,我接触的几个,好像用C++的居多。

24、我正在学C++, 也学了linux ,过一段时间,还会熟悉一下IOS,我觉得C++还是很强的一门语言,java做界面,做网站确实好用简单,但是java的重要化 是跟着安卓手机的推广才起来的, 如果那一天windows phone,iphone 等在手机领域的发展强过安卓 , 那java以后的发展趋势还很难说,但是c++就不同了 ,至少现在在linux平台, 游戏开发还有服务器方面的优势很强, 而且连c++都能学好, 其它的语言不就更好上手了吗,主要是思想, 语言只是工具。

25、你们不用c++不代表别人也不用c++。。。整个图形学就是建立在c++之上的。现在几乎所有能用的ray   tracer全是用c++写的,几乎所有的3D游戏和实时应用(maya,autocad,3dsmax,premier,photoshop)也是用c++写的。所以可以说整个电影产业大半个游戏产业是c++的坚固城池,你觉得c++重要吗?市场份额大么?项目越是复杂,性能要求越高,越是要用,而且几乎没有语言选择余地。手机因为需要省电和高图形性能,c++也非常适合。所以能不能攻下移动领域就要看win8能否发力了。
别看现在手机游戏都用java,objective-c写,你要知道c++可是写游戏的主要语言,用c++重写只快不慢。

26、如果让我重新选择一次,对于现在的产品是否使用C++来构建我会再慎重的考虑一次。很多项目使用C++并非是因为其效率——相对于今天的硬件水平来说,大多数项目其实无所谓语言——而是因为公司里的程序员都只熟悉C++。当项目规模上了千万行级别后,用C++的问题就暴露出来了。资源管理,指针,C++固有的复杂性和各种类库的交叉使用,各种链接问题。光是各类不定期的,不定行为的崩溃都能让项目组花上很多精力去解决和预防。要防止这些问题只能寄望于开发人员本身的技术以及对C++的理解等。相比起来,用java之类的语言构建的项目则要好管理得多。
当然,我个人还是更喜欢C++,只是对于大型项目真的要慎重考虑,特别是在开发人员素质良莠不齐的情况下。

27、C++被诟病的地方,如果能够想办法解决或避免,C++一样简单易用。假设按照以下原则:1) OO部分,参照Java或C#倡导的理念来做,禁止多重继承,可实现多个接口;2) 除了标准库现成提供之外,不使用模板元编程;3) 除了调用现有的,不使用宏定义;4) 界面采用Direct UI设计理念,不使用MFC、gdk等UI库;5) 需要灵活动态性的地方,采用LUA脚本扩展;基本上用起来就舒服多了。一个有C#或Java经验的程序员,可以很快上手编写这样的C++程序。刨除C++的奇技淫巧的那部分,C++跟大多数OO语言的学习曲线相差不算太大。如果一个团队,坚持OO的编程理念,有自己的DirectUI框架,远程调用框架,则拿C++进行上层应用程序开发,开发效率并不比C#、Java差多少。比C#、Java少了对虚拟机的需求,运行效率和安装部署上的优势反倒凸显了。

28、1)在体验至上的趋势下,界面的美观、用户友好度要求越来越高,拥有自己的DirectUI框架并不是过分的要求;2)在分布式、云计算蒸蒸日上的趋势下,拥有自己的远程调用框架,甚而加入对象生命周期管理、对象同步机制,演变为云的雏形,也不是很过分的要求。私以为将来应用开发领域,C++的复兴之路,正在于此。

29、新手,MFC出身,工作做了一年的JAVA,个人感觉是这样的。在架构上,C++和JAVA是没得比,开发起来简单得多,也容易的多。尤其是对一个WEB服务项目。。。但是追查其最终的数据来源,JAVA项目跟踪数据的最终来源最终都会追到框架上去。到这里就无法再深入下去了。因为框架本身是别人做的,内部实现你是不知道的。。。这样做的好处,简单而且节约成本。以此为例,从公司层次来说,对于这些表现层的项目,选择JAVA肯定要简单很多。成本和利益永远是企业公司优先考虑的东西。当然C++在一些方面具有其无可替代的作用。如图像,图形的处理上。OPENCV,OPENGL配合C++处理起图像来非常好。

    做C++时,虽然做个界面比起其他语言来说痛苦很多,但是每一个参数,每一个属性值的来源我都能清楚。对于程序员来说,如果真的能掌握C++的语言基础,理解MFC的消息映射,事件驱动机制,我觉得再去看其他的变成语言真的不会有什么问题。对于C++的前途,在这个时代,追求表现层的开发越来越多的时候,或许看上去前景不明朗。但是这样说吧,真正懂C++的本来就不多。对于这部分人来说,不需要担忧什么前景。半懂不懂的,或许学一门相对简单的语言能减小点压力吧。。。

30、国产办公软件WPS Office的2012版也改用C++来开发了(基于Qt),OpenCV则是从2.0版开始由纯C移植到C++。C++做界面开发并不困难,不要老把眼光放在MFC身上,多看看Qt和wxWidgets,这两大框架都有很强大界面设计工具,一点不比Java/.net差。一些老牌的大公司是背负了太多“前C++时代”的遗产,动弹不得,新兴的大公司谁会去推崇纯C。C++做并行计算也不差,可选的解决方案有OpenMP,Intel的TBB,Microsoft的PPL和Visual C++ 2012中的GPU计算框架AMP等

来源:CSDN

给我留言

留言无头像?