C++最大的敌人是它的过去

在过去的几年里,我们谈到了关于“C++的复兴”。我们不得不承认微软是这项运动中主要参与者,我记得在Craig Symonds和Mohsen Agsen在视频中提到了这件事。

在2011年,微软写了许多文章来宣布C++的回归,并且众多微软专家如Herb Sutter在很多会议上解释了为什么C++会重新崛起,主要原因是现代C++的推广使用。而同一时间。C++11标准的认可使我们重新把C++作为一门新的语言来讨论。

然而,截至到2011年,C++已经有超过30年的历史了。因此,让开发人员相信关于新的C++已经简化了过去许多令人失望的用法,而是使用了一种改进了C++代码的全新方法不是一件容易的事情。

让我们以内存管理为例,这也许是C++中最受争议的地方。多年来,对象的分配是通过new这个关键字来完成,开发者必须牢牢记住在代码中某些地方调用delete。“现代的C++”解决了这个问题并推进了共享指针的使用。

但是,关于现代C++的推广光靠活跃的C++社区和知名专家是不够的。有一句谚语是:“习惯成自然。”当你努力向某些人推介某个语言或者工具,他有可能觉得你有道理但是却不会照着你想的做。

这就是在C++上发生的事情,我们中的许多人仍然坚持使用new和delete,而这种影响还要持续很多年,而且许多非C++的开发者也会一直通过调用复杂的内存分配方式来使用这门语言。

C++的过去影响了很多东西甚至从项目的创建之初,许许多多的开发者仍然认为这门语言非常复杂。

C++的过去是如何在影响着它?

为了发现这点,我们来做一个测试,我们在网上搜索“C++对象分配”,查找第一个链接便是“C++中是怎样分配堆对象的?唯一的方法就是用new…”。这很令人吃惊,而搜索页前面谈论共享指针、智能指针的文章几乎没有。

另一个有趣的测试是到到任何大学的图书馆去找一本关于C++的书,去阅读关于对象分配的那一章节,你基本上不会找到关于“共享指针、智能指针”的介绍。

而C++开发者想要了解它们,马牌娱乐城一般查找的资源是来自于“C类”而不是现代C++。

如何预防C++的过去所带来的影响?

这里并没有特别有效的解决方案。我们可以希望C++编译器通过发出一些关于最新更新的启用和弃用警告,就象过去的字符串操作一样(strcpy、strcat…),但这个解决方案也不是根本的解决之道。现代C++新技术的推动需要学习和实践。

另外一个解决方案是将“C++”更名为“现代C++”,这个解决方案很简单也很有趣。在网络上搜索“现代C++”,那么在我们谈论的现代C++的对象分配问题上,第一个链接就谈论了“智能指针”。

因此,在未来的C++推广之路上,我们可以提醒新的C++开发者,在网络上查找关于C++的资料时,“现代C++”和“C++”会是两个非常不同的搜索结果,前者代表C++的最新用法,而后者只代表过去。

推荐阅读http://www.snstele.com/space.php?uid=5242677&do=blog&id=527982

http://www.yupoo.com/photos/summo2/93898659/

时间: 2024-08-30 02:56:35

C++最大的敌人是它的过去的相关文章

不使用物理引擎实现防止群聚行为敌人扎堆

转自:http://www.gameres.com/thread_256279_1_1.html GameRes发布,文/paladin_t,转载请注明GameRes和作者 追击.群聚是极常用到的敌人行为模式.靠拢玩家位置的移动叫追击:群聚指一批敌人集体采用统一的行动,就像一群群沙丁鱼一样.群聚敌人往往配合追击来对玩家施加压力,因此本文隐含用追击配合做群聚示例.如果群聚行为的敌人没有对群体内其他敌人的感知能力,将造成一种很奇葩的现象:扎堆.我见过很多游戏可以控制主角兜来兜去让群聚敌人集中到一堆,

Unity 遍历敌人——使用四叉树空间分区

最近看了<游戏编程模式>这本书,里面有一篇空间分区的文章,看了心里痒痒,决定去尝试实现一下.文章后面会给出整个学习参考的链接. 实现的效果如下,我们有一个很大的场景,场景有许许多多的敌人.红色的点代表是玩家,黑色的点代表是敌人.在这样的一个大量敌人的情景下,我们不可能在玩家或敌人寻找身边的攻击对象时穷尽所有的对象.因为我们要建立空间分区,只遍历某个对应区的对象.在图下中,红点中遍历红框中的黑点对象,其他一律不遍历. 接下来我直接放代码了,主要采用了四叉树,如果对于一些不懂的地方断点调试下就可以

粒子特效追踪敌人

using System; using System.Collections; using System.Collections.Generic; using UnityEngine;using UnityEngine.AI; /// <summary> /// 特效追踪,挂靠在特效物体上面的 /// </summary> public class EffectTracks : MonoBehaviour {         /// <summary>     /// 

Unity3D 敌人AI 和 动画( Animator )系统的实例讲解

在这个实例中,我们要做一些敌人AI的简单实现,其中自动跟随和动画是重点,我们要达到的目标如下: 1.敌人能够自动跟随主角 2.敌人模型一共有四个动作:Idle(空闲) Run(奔跑) Attack(攻击) Death(死亡). 3.要求敌人在合适的时机能够做出合适动作 (一)自动跟随的实现 1)首先,新建一个场景  如图,场景里至少有两个角色:  有一个敌人(刀骷髅兵) 还有一个主角(没错,就是那个胶囊体) 2)先选择场景模型,然后在 Inspector 窗口选项 Static旁边的小三角显示出

其实成功最大的敌人就是自己

成功最大的敌人是自己,不能清楚正确地认识自己,对于自身的弱点也是一知半解,那么,我们的成功又能有几成的把握?兵家常讲“知己知彼,百战不殆”,老子也说“知人者智,自知者明”,由此可见,认识自己是多么重要.只有认识到自身的弱点,我们才能有针对性地去对付它,主动减少它给我们前进路途带来的危害性. 弱点之所以称之为弱点,大多数时候会给人带来痛苦与磨难,因此,识别它并不是很难.可是很多人在弱点现身的时候,却紧闭双眼,为自己开脱,而这又是人更大的弱点. 一位著名哲学家曾经问自己的学生:假如你同时养了猫和鱼,

企业发展最大的敌人---内耗

中国应该算是一个比较奇怪的国家,人口众多,地大物博,高校林立,人才济济,但除去那些有国家背景的企业,我的记忆中我们是极少有世界五百强企业的,这相当的可悲,许许多多的政客与专家也都长年不停地分析.思考.考察.汇总与汇报,但就好象中国足球一样,大家都知道原因,可就是无法解决与超越,因此无论如何折腾都还是那个样,阿蒙曾经大胆地以为那是民族的个性问题,也就是说是中国历史遗留的道德问题与习惯问题在残酷无情地制约着中国足球或中国企业的发展与进步,这种观点可能很不受欢迎,很多人马上跳出来开骂我是什么东西凭什么

(转)不使用物理引擎实现防止群聚行为敌人扎堆

转自:http://www.gameres.com/thread_256279_1_1.html GameRes发布,文/paladin_t,转载请注明GameRes和作者 追击.群聚是极常用到的敌人行为模式.靠拢玩家位置的移动叫追击:群聚指一批敌人集体采用统一的行动,就像一群群沙丁鱼一样.群聚敌人往往配合追击来对玩家施加压力,因此本文隐含用追击配合做群聚示例. 如果群聚行为的敌人没有对群体内其他敌人的感知能力,将造成一种很奇葩的现象:扎堆.我见过很多游戏可以控制主角兜来兜去让群聚敌人集中到一堆

周围都是敌人,方法总比问题多

今天网上最火的句子:"朝=鲜的导弹不需要精度,能射出去就行了,反正周围到处都是它的敌人." 哥们儿来问我:"我看上一个姑娘,但是不了解她都有什么缺点." 我说:"好办!找她闺密聊天,使劲儿夸她有多完美,然后你就会知道了." 常吃一家外卖. 我:"老板,我数了一下你这水饺大份和小分一样多啊!" 老板:"这你就不懂了,我们的大份是指餐盒大. 一位中年男士来看心理医生,他对医生说,曾经有一段完美的恋情,也是初恋,经过三年的

[Unity插件]Behavior Designer:制作敌人AI

一个简单的敌人AI: 当处于监视范围内,跑向玩家:当处于攻击范围内,攻击玩家:否则呆在原地.用行为树表示就是: 其中当前行为树的变量与全局变量为: 效果图: 制作简单的AI确实不需要写代码,不过配置起来确实有点麻烦了.可以根据需求,编写自定义的节点来组成复杂的AI. 当游戏需要大量的AI时,Behavior Designer确实是一个不错的选择,因为自定义的节点可以不断被重用了.

【Java_项目篇&lt;1&gt;】--JAVA实现坦克大战游戏--赋予敌人行动和攻击(五)

前期相关文章 [Java_项目篇<1>]–JAVA实现坦克大战游戏–画出坦克(一) [Java_项目篇<1>]–JAVA实现坦克大战游戏–坦克移动+添加敌方坦克(二) [Java_项目篇<1>]–JAVA实现坦克大战游戏–坦克发射子弹(三) [Java_项目篇<1>]–JAVA实现坦克大战游戏–子弹连发+爆炸效果(四) 一.任务需求 赋予敌人行动和攻击. 二.思路 - 敌人行动 1.需要把EnemyTank做成线程类实现Runnable接口. run方法中,