浅谈c++未来

C++(C++培训 )++当年从应用开发的王座上跌落,不是因为它有模板,而是因为它缺少更强的动态能力。基本上C++就是一种静态语言,其所谓动态性都是就编译时而言的。一旦编译完成就成为铁板一块。这个问题在单机时代还可以将就,到了网络时代就是不可容忍的问题。因此,按照毛主席的矛盾论思想说,实际上C++在90年代中期面临的主要矛盾是落后的静态执行模型与应用程序动态化之间的矛盾。但是C++当时并没有着力解决这个矛盾(到现在连个统一的ABI都没有),反而在次要矛盾(开发效率)上下功夫,花了极大的精力去完善模板设施。再加上其他固有的问题(GC, debug, pointer, 复杂性),C++就从王座上跌下来了。

  这也可以解释,为什么Windows/MFC/COM仍然是目前C++应用的单一最大场合——因为COM是微软为C++提供的一个动态运行环境。遗憾的是,COM设计得太复杂,而且犯了一些错误(读读这篇文章http://www.relisoft.com/win32/olerant.html),所以跟后来的那些什么Java、.NET相比就相形见绌了。

  总之,C++仍然是目前制造单块系统最好的语言(效率高,抽象机制丰富,可移植性好),但用于构造整个应用,特别是网络应用,就很不合适了,至少是不经济。

  因此,C++未来的位置只能是不断完善自己作为系统级部件语言的位置。从这个角度看:

  1. Ice:用C++开发了完整的网络中间件,解决了动态性问题,并且可以跨语言。这是我认为3年以来C++开发中最令人激动的项目。

  2. 陈榕的Elastos:陈榕对于这个问题的认识是很深刻的。几年以前他给我讲得其实就是这个道理,只不过我最近才想明白。他认为在构造单个部件方面,C++由于C#、VB、Java,特别是在嵌入式平台上优势明显。而主要的缺陷是C++部件的动态性能极度匮乏,这里的关键因素又是因为C++部件中的metadata匮乏。因此陈榕给C++部件添加完整的metadata,并开发运行时来支持。陈榕的思想实际上与Ice是一致的,只不过两者一个是从CORBA出来的,一个是从COM出来的,殊途同归而已。我非常认同陈榕的发展方向,唯一的担忧是,陈榕的C++部件metadata是与.NET兼容的,而目前企业应用中的主流是Java。这个矛盾应该得到解决。如果陈榕的Elastos能够同时兼容Java的metadata和.NET的metadata,我相信他会取得成功。

  3. 微软的C++/CLI,这个东西被骂得很惨,其实放在大背景下考虑,它是有意义的。实际上它的出现是同样基于我上面提到的一个观点,即做零件的话,你们谁也不如C++。所以C++是有优势的,只不过要把C++作出来的零件跟其他的零件自如拼装。C++/CLI致力于在.NET体系内部解决这个问题,不能说这个想法是不对的,我认为这个技术将会得到一定程度的应用。

  4. 相比之下,像ACE/MFC/Qt这类大型的框架,虽然已经非常成熟,但是未来将局限在一个比较小的领域里,局面会比较尴尬。因为它们是用来开发整个应用程序的,而未来大家不太会用C++来开发整个应用。那么用它们来开发部件如何呢?不好,因为它们开发出来的部件不能与外界交互。不过ACE还是有一定空间的,因为它的可移植性超好,可以往嵌入时平台上挤,而且在上面还有TAO和CIAO。

  5. ATL怎样呢?那完全取决于COM的命运。只要COM在Windows中还处于核心的地位,ATL就还是很重要的技术。

  6. Boost对于C++来说,只是一个补充性质的事件,无关乎大局。

  7. 我一直坚信未来会出现高低搭配的局面,像Java/C#这样的半动不静的中级语言会逐渐“沦为”JVM和CLR上的系统语言,应用开发的任务必将由更加动态的脚本语言承担。目前的Python, Ruby和Lua都有可能。如果从我的角度讲,我希望最后胜出的是Lua,因为Python思维有些混乱,Ruby虽然很纯,但是语言设计过于复杂,只有Lua是符合我的美学观——简单而又强大,这一点跟云风意见一致。

时间: 2024-10-18 18:23:30

浅谈c++未来的相关文章

浅谈未来网站的构建

前言: 话说"合久必分,分久必合",从过去的几年来看我们现在正处于一个资源.信息技术和服务等整合的时代,从行业到技术,从电子商务到企业资源,那么对于现存的网站如何进行整合,未来的网站将以什么形式展现在人们面前,与现在相比又给人们带来哪些不同的用户体验呢,本文作者站在个人角度,结合近年来出现的技术,对于未来的网站发表下个人见解. 随着各行业信息化进程的加快,各种功能的网站应运而生,工作.购物.学习.娱乐.医疗.金融和社交等网站都层出不穷,由于这些网站的出现,给人们生活带来很大的方面, 人

[nRF51822] 14、浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构(科普类干货)

蓝牙在短距离无线通信领域占据举足轻重的地位—— 从手机.平板.PC到车载设备, 到耳机.游戏手柄.音响.电视, 再到手环.电子秤.智能医疗器械(血糖仪.数字血压计.血气计.数字脉搏/心率监视器.数字体温计.耳温枪.皮肤水分计等), 再到智能家居等领域均占有一席之地. 而蓝牙低功耗(BLE)是在蓝牙4.0协议上修改以适用低功耗应用场景的一种蓝牙协议. 随着上一股智能消费类电子大潮的到来,BLE的各种应用也像雨后春笋般在市场上铺开. 如果想 紧跟蓝牙协议的最新动态 ,可以在https://www.b

图标字体化浅谈[转]

在做手机端Web App项目中,经常会遇到小图标在手机上显示比较模糊的问题,经过实践发现了一种比较好的解决方案,图标字体化.在微社区项目中,有很多小的Icon(图标),如分享.回复.赞.返回.话题.访问.箭头等,这些Icon(图标)一般都是纯色的.开始制作时考虑用双倍大小的Sprite图,通过CSS样式设置只显示二分之一尺寸,这样在Retina屏上显示的大小是正常的,一旦放大屏幕后图标又变得模糊不清,测试的效果不是很理想,后来又考虑多套图标适配方案.SVG矢量图等,都因为种种原因放弃掉了(如多套

浅谈人的精神思想层面与本性

今晚和一朋友说起自己思想上很积极,但是行为却总是迟迟不肯迈步.她说这是人的精神层面和本性,仔细想想也确实是如此. 大部分人在内心或潜意识中对未来都是充满信心,永远都保持相信自己的心态:人在自己的思想中是最强大的,想怎么想就怎么想,因此,下一步都会开始做出计划,自己也认为自己的计划完美无缺.定完计划后,真的的困难就出来了,那就是很难按照自己的计划行事,总是有各种各样的借口来慰藉自己那虚伪而又脆弱的心,努力让自己从虚度的梦靥中挣扎出来,脱离这个计划后,又开始找借口摆脱下一个计划,仿佛此时计划不如当初

浅谈数据库框架,见笑,请多指正

浅谈数据库框架,见笑,请多指正 http://weibo.com/p/1001603724746155003486 一友说"插件式存储又割裂了SQL引擎的完整逻辑...总体而言在现有框架下MySQL的优化器没有多大改进的价值". 我们且做个技术分析: 1 插件式框架,可以静态/动态加载组件,方便在同类不同属家的模块间切换,这种设计是良好的. 很多软件的设计都采用了"微内核+插件"这样的方式构筑了强大的应用.如Ecplise生态圈. 2 数据库范围内, MySQL的属

浅谈 产品经理、研发、测试,三个冤家如何高效沟通

浅谈 产品经理.研发.测试,三个冤家的那点事(1) 算上实习时间,参加工作已经五年了,一直在从事软件开发和测试的工作,期间也兼职干过一部分产品经理的事情,对这三者之间的微妙关系,颇有感悟. 1. 先来解读一下这三个岗位的"痛点" 聚会的时候,经常碰到以下几种情况,事后想起来,经常会有逗乐的感脚. 做开发的GG们是这样的: 一聊到自己的项目,两眼开始冒光,同时开启了狂喷模式,blabla一堆高大上的专业术语,一方面骂测试人员不懂技术,提的bug根本就不是关键问题,高级的bug他们根本就发

浅谈领导和领导力

按:公司基层主管培训,安排我做关于领导力的讲座,效果尚可.我把PPT的内容总结成一篇文章,在这里与大家共享. 如今,市面上关于"领导"和"领导力"的文章.书籍已经数不胜数,大家似乎并没有厌烦的感觉,新的资料仍然层出不穷:另一方面,对相当一部分人来说,"领导"和"领导力"又确实难以捉摸,看书似乎明白了,做起来却全然不对劲.为什么会出现这种情况呢?据我的观察和思考,主要的原因是:领导和领导力,都是主要与人有关的学问,一旦与人有关,

浅谈程序员的行业选择---程序人生

引言 本篇博文接着许久之前的一篇博文<浅谈程序猿的职业规划,看你如何决定自己的未来吧.>,继续探讨一下程序员行业相关的内容. 行业的选择不仅对于程序员来说非常重要,对任何一个人来说都是一样的.只不过对于程序员来说,行业更容易被忽略.从程序员每天热议的话题就能看出来,大部分的热议话题都是C#和Java哪个更牛B,或者IOS和Android哪个挣得钱多,很少看到程序员去讨论两个行业谁更有发展前景. 鉴于此,今天我们就来着重讨论一下程序员行业的选择,行业和语言一样,没有谁优谁劣,只是一种选择罢了.

浅谈大数据技术

忽如一夜春风来,无人不谈大数据.大数据就像前两年的云计算一样,是一个时下被炒得很火的概念.那么什么是大数据,大数据是如何定义的,大数据处理技术有哪些,大数据能给我们带来什么益处?虽然我不知道现在这些概念是如何被炒作的,但是作为一名互联网行业的从业者,作为一个大数据技术的实践者,根据自己的理解和经验发表一点浅显的认识,理解肯定有不到位之处请大家批评指正. 无论是大数据技术还是云计算技术,其实这些技术都不是突然冒出来的,而是随着互联网技术的发展,人们把现有的技术加以整合,总结,概括出来并冠一个新名字