无法确定的未来
来源:互联网 发布:时间旅行者的妻子 知乎 编辑:程序博客网 时间:2024/04/30 14:58
时至两年之前,我尤然对C++在游戏开发中的绝对地位感到深信不疑,然而,这两年来,突然感觉到一股寒意……或者我还能保持自信,告诉自己那是冬天带来的寒冷,但潜意识中,却开始相信,传统C++的地位已经开始受到挑战,或者用一种乐观的语调说:
有更多的空间,可以让我们放开去探索了!
带来这个疑问的第一个因素是.net平台。.net是一个更好的COM(野猪语),COM是一个更好的C++(Don Box语),那么,按照传递原则,其实.net是一个更好的C++。
既然如此,为何要那么排斥.net呢?这是去年开始接触.net后的唯一感受。.net比C++好的地方并不简单是因为GC,而是因为编译期可以做更多的事情,这比起写一堆C++宏的可读性要好很多。本来嘛,编译期明明就知道的事情,为什么一定要让我们用宏和模板去偷取?这让人很~不爽!.net由于其特点,因此也可以在编译期做更多的事情了,这样对于一些特殊的要求(譬如自解析的Property Grid),就很容易了。
带来这个疑问的第二个因素就是C++0X自身,添加GC的方式是多种关键字的引入,这个首先就有点让人望而却步,因为这引入了一个跨版本的问题。其次,跨平台的硬伤还是没有解决,CWrapper还是得做,C++Wrapper还是浮云,再次,新C++究竟能在多大程度上,引入相当于.net或者Java的类库,这还是一个问题,Boost再强大,也还不过是一个Boost,而.net的扩展性也开始慢慢显现出来,那么,传统C++的优势还能够体现在哪里?
另外的,最近所作的几个工程,全部都是使用了多语言相互配合编程,纯C++ 配合CLI,纯C++配合CLI配合C#配合Python,这些都很有趣,而且只需要经过很短的培训,就能确实地提高编码效率。
C++并非没有优势,她的优势是效率,C++并非没有劣势,她的劣势在于标准和库,这是C++之父无数次提到的悲剧。在效率可以不那么作为第一因素的前提下,很多事情确实可以绕个近路办理。
当然,如往常一样,本文并不想引起什么纷争,C/C++还是我最为钟爱的语言,因为她纯粹。甚至我自己如果写程序,首先考虑到的决不会是CLI Wrapper和COM Wrapper,而一定是把我自己的程序做成C Wrapper,因为这样能支持更多的语言(理论上)。
但是,这并不意味着一切就可以就此止步,引擎中20%的代码是为了效率,但还有80%的代码是为了方便,这20%的致命一层,目前仍然必须借助C/C++进行呵护,而那80%的工具、编辑器、框架,或许我们更应该为用户考虑,用户方便,那就是方便,用户痛苦,那就是痛苦。有时候,在这个层次上,C++的表现确实是一场灾难。那么,如果有更灵活的语言,为什么不去尝试呢?
灵活的空间大了,或许是好事,或许是坏事,但总而言之还是好事——对于历史的前进而言。
生于语言范式的征途,死于语言范式的沙场,谁让这就是程序员的宿命呢?而谁会没有自己的宿命呢?更多的空间,也有更多的责任。
期待着一个最终解决方案的来临,然在那之前,还需要继续前进。
- 无法确定的未来...
- 无法确定的未来
- 确定未来的目标
- 无法预计的未来
- 确定未来关注领域
- 谁的青春不苦逼,谁的未来是确定?
- span无法确定宽度的解决方案
- JNI 无法确定Bitmap的签名
- 错误: 无法确定AssetManager的签名
- 【Vegas】无法确定错误的原因
- 无法确定Bitmap签名
- 行转列时,无法确定要转为列的行时,怎么办
- c# 三元表达式 无法确定条件表达式的类型
- iOS UIWebView 无法确定web页面的真实高度
- iOS UIWebView 无法确定web页面的真实高度
- JNI生成.h文件无法确定类的签名
- 未来的未来-梁咏琪
- 未来的未来
- CListCtrl 使用技巧
- 推荐一款SVN客户端:pysvn
- Mapx 属性数据文件用oledb方式访问的问题
- 需求调研中有效沟通系列--如何提问?
- 在winform里怎么调用WebBrowser控件里的脚本
- 无法确定的未来
- POJO----名词解释
- 信产部解冻固定电话资费 难抵移动业务分流影响(fm:中国经营报)
- JS里面增加事件
- 我国电信业市场秩序现状分析(转)
- POJO 与 PO的 概念
- Get-Date 帮助信息
- .net/c# 从0开始 (1)引用与注释
- 淮海战役(徐蚌会战)中的几张国军照片