C++0x不一定是利好,仅仅掌握C++已经不够了

《C++0x漫谈》系列之:多线程内存模型 《C++0x漫谈》系列之:多线程内存模型 By 刘未鹏(pongba)刘言|C++的罗浮宫(http://blog.youkuaiyun.com/pongba)  《C++0x漫谈》系列导言 这个系列其实早就想写了,断断续续关注C++0x也大约有两年余了,其间看着各个重要proposals一路review过来:rvalue-references、concepts、memory- 阅读详情

       最近一直在关注C++0x,看到孟岩老师的一篇blog:“C++0x草案将于年内发表,C++即将重大升级 ”(http://blog.youkuaiyun.com/myan/archive/2007/02/08/1505598.aspx),看来C++0x的进展很顺利。C++0x确定要增加垃圾收集机制了!垃圾收集是我盼望已久的特性了,但是我看到这个消息之后,并没有感到高兴,其实我很担心C++增加了垃圾收集之后会变得更复杂!说心里话,我最希望的C++的改进就是简化,但这也是最不可能的改进。C++诞生之初就背着和C兼容的包袱,C++可以再增加更高级的语言特性,但是因为历史原因,C++无法放弃旧任何特性,无论它们是好是坏。这使得C++编译器实现难度也越来越大,编译速度…,唉。我想C++0x增加这些东西的主要目的还是要增加开发效率,这并不是对每一个C++程序员都能成功。特别是对那些新人,门槛又提高了。

 
       语言孰优孰略的争论是没有意义的,一个项目选择使用什么语言,需要根据项目的需要,团队的技能,目标平台的要求等等诸多因素来确定。记得前几年国内的游戏制作论坛就针对C还是C++更合适游戏开发展开过激烈的争论。当时大家主要考虑的就是效率因素。对于游戏程序员来说效率就是生命,Michael Abrash在他的《Graphics Programming Black Book》中谈到程序优化时,精确到了计算时钟周期的程度,甚至考虑到了内存刷新周期!(Chapter 4 In the Lair of the Cycle-Eaters, Dynamic RAM Refresh: The Invisible Hand)。那个时代毕竟已经过去了,现在的PC拥有1GHZ的CPU已经是很平常的事了。大师在谈到优化时也一再强调最有效的优化是算法优化。而现在,C#,Java借助JIT能够把性能损失尽量减少,MS甚至宣称JIT产生高度优化的本机代码执行速度高于C++代码。
       除了效率,项目的风险和开发效率越来越受到大家的重视。C++在团队开发上,的确是风险最高的(推荐看一下Alistair Cockburn,《OO项目求生法则》)。我过去的7年职业生涯全部花在了两个C++项目上,单个的规模都超过20万行。我不象很多热衷于C++的人,我可以说很多时候开发这种项目是很痛苦的。即使我们建立了编程规范,很多人已经习惯了C++的某种编程模型,或者用法,经常把代码搞成各种写法的展览。更大的问题是大家对C++的掌握程度也参差不齐,很多人在基础观念上存在这样那样的错误,而且这种问题正在加剧――招聘到熟练使用C++的人越来越难了。在实际编程中,比内存泄漏更严重的问题就是内存访问越界,这种问题难以跟踪。如果经常有人范这样的错误,就会使大家士气低落。所以从风险角度,从开发效率,从团队合作角度看,C++是需要尽量避免的选择。在过去,对于游戏项目来说,这是无法避免的,现在形势已经开发变化了。
 
       回来谈C++0x,如果我想得到开发效率的大幅度提高,如果我想使用垃圾收集,如果我想要更方便更强大的库,我不会选择使用一个越来越复杂的C++,我会选择另外一个新的语言(平台),Java,C#都是很好的选择,甚至上层使用Python最近也在游戏业开始流行起来。一些成熟的游戏引擎,实现了自己的脚本语言,这种开发模式已经证明是成功的,典型的案例就是Epic的Unreal系列。所以C++可以搞它擅长的部分,例如游戏的图形引擎,AI,物理模拟,这些都对效率要求都非常高,而上层的游戏逻辑,界面我们为什么不选择一种更高级的语言呢?
 
       最近优快云上还有一个热门话题,“C语言已死”!我觉得这种说法是很可笑的。C/C++确实不如以前热门了,但是它们真的会消失吗,起码现在还看不到这种迹象,特别C,C++死了C都不会死的!你看看操作系统是用什么语言写的就知道了。至于C++,如果你真的了解C++社区,你就会知道现在有多少项目是使用C++的,多少公司的代码库,多少开源的项目都是C++的,过去这么多年的积累不会一下子灰飞烟灭!C++仍然有它的用武之地!有位朋友跟我说世界上最牛X的东西都是一两个人写出来的!C/C++在底层开发的地位是无法动摇的。
 
面对当前的局面,很多游戏项目都开始选择混合语言编程。所以,作为一个程序员,如果想全面发展的话,除了C++还应该掌握至少一种高级语言。
《C++0x漫谈》系列之:Auto的故事 《C++0x漫谈》系列之:Auto的故事 By 刘未鹏(pongba)C++的罗浮宫(http://blog.youkuaiyun.com/pongba)  《C++0x漫谈》系列导言 这个系列其实早就想写了,断断续续关注C++0x也大约有两年余了,其间看着各个重要proposals一路review过来:rvalue-references,concepts,memory-mod 阅读详情

相关推荐

yaml-cpp0.6.0的安装,使用

yaml-cpp0.6.0的安装即使用欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出...

wubw0585的博客 4156

C++0x简讯

关于C++0x核心进展的一组简讯                                           刘未鹏 /文              C++的罗浮宫(http://blog.youkuaiyun.com/pongba) Concepts无疑是C++0x的杀手级特性之一(或许称它“杀手级”还有一个原因:杀死新手:))。最近关于concepts的提案终于汇聚了Bjarne

刘未鹏|C++的罗浮宫 1万+

经纬度转换为UTM坐标

UTM(通用横向墨卡托投影): 是一种以米为单位的坐标系统,用于地图和GPS导航。将地球划分为60个纵向的区域。每个区域宽6度,从赤道开始往南北两级方向划分。每个区域都有一个特定的字母。

weixin_45626706的博客 7275

C++0x草案将于年内发表,C++即将重大升级

    C++标准委员会主席Herb Sutter在最新的Blog里透露,C++0X的草案将很有可能在07年10月完成。这意味着“标准C++ 2.0”即将露出庐山真面目。    Sutter在这篇文章里描述了C++0x的几个重大进展:1. 库增强:标准库TR1和TR2中的库增强组件;2. 垃圾收集:符合C++0x的编译器必须提供垃圾收集器;3. Concept:可简化泛型程序的开发;4. 并发内存

孟岩 2万+

如何用YOLOv5改进无人机小目标检测?MFFSODNet实战教程(附代码)

本文详细介绍了如何利用YOLOv5框架结合MFFSODNet网络结构优化无人机航拍图像中的小目标检测。通过引入微小目标预测头、多尺度特征提取模块(MSFEM)和双向密集特征金字塔网络(BDFPN)等核心技术,显著提升了小目标检测精度。文章提供了完整的代码实现方案,并展示了在农业监测、电力巡检等实际场景中的应用效果。

sre5engineer的博客 738

40、基于指令的GPU编程:OpenACC与OpenMP的深入解析

本文深入解析了两种基于指令的GPU编程模型——OpenACC和OpenMP。从编程复杂度、数据处理方式和性能表现等多个方面对两者进行了对比分析,并结合实际应用场景提供了选择建议。通过详细的代码示例和性能测试结果,帮助开发者更好地理解和应用这两种编程模型,以充分发挥GPU的并行计算能力。

q5r6s7的博客 134

C++0X的三件好东西(零)

先说一些废话,可以跳过不看。 我主张,在具备基础之后,学习任何新东西,都要抓住主线,突出重点。对于关键理论的学习,要集中精力,速战速决。而旁枝末节和非本质性的知识内容,完全可以留给实践去零敲碎打。 原因是这样的,任何一个高级的知识内容,其中都只有一小部分是有思想创新、有重大影响的,而其它很多东西都是琐碎的、非本质的。因此,集中学习时必须把握住真正重要那部分,把其它东西留给实践。对于重点知识,只有集中学习其理论,才能确保体系性、连贯性、正确性,而对于那些旁枝末节,只有边干边学能够让你了解它们的真实价值是大

孟岩 7万+

【Pix4d精品教程】Pix4d中央子午线细化设置(测区跨两个分带)

本文介绍了在Pix4d软件中通过修改中央子午线设置来解决跨分带测区刺点问题的方法。针对测区跨3度分带(如105°和108°之间)时像控点与靶标点偏移较大的情况,建议将中央子午线设为测区中心(如106.5°)。具体操作步骤包括:修改投影文件中的中央子午线参数,选择新的输出坐标系配置文件。该方法能有效提高像控点刺点效率,为航测内业数据处理提供便利。操作简单实用,适合大比例尺测图项目中跨分带测区的数据处理需求。

智慧空间实验室 5527

Microsoft Visual C++ 安装失败 0x80070666

“0x80070666”错误通常在尝试安装 Microsoft Visual C++、Lumberyard 或类似的分发包时发生。该错误信息通常在安装过程的开始阶段就被报告。此问题并非特定于某一Windows版本,已经确认在Windows 7、Windows 8.1和Windows 10中均会发生。本篇分析出现该问题的原因和可能的解决方法。

CarpeDiem 1万+

【OpenClaw企业级智能体实战】第16篇:电商“龙虾”掘金记:用OpenClaw实现小红书/抖音/淘宝全自动矩阵运营(2026实测版)

2026年,OpenClaw(小龙虾)已成为电商运营的核心效率工具——从公众号文案3分钟生成到TikTok爆款视频1小时复刻,从多平台内容同步到自动比价加购,彻底重构了电商运营的工作模式。本文基于真实商业案例(元岳科技、TikTok跨境卖家、淘宝MCP工具),系统拆解电商智能体的落地路径:先详解OpenClaw在电商场景的核心原理与变现模式(代部署、模板售卖、轻定制、内容套利),再提供阿里云/本地双部署方案,完整实现小红书/抖音/淘宝的自动化运营(热点抓取、内容生成、多平台分发、数据分析)。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2286

unitree-G1外接 USB 麦克风完整配置指南

首先,将type-c麦克风插入G1机器人的USB口后,记录下USB麦克风的卡号(card)和设备号(device),通常显示为 card 1: Device [USB Audio Device]

m0_47999117的博客 597

C++0x展望[语言核心进化]

声明:本文大部分内容摘自发表在2005年11月期《程序员》杂志上的一文。为尊重版权,谢绝转载。                                                                   刘未鹏 /文随着C++标准委员会案头的C++0x提案[1]的与日俱增,tr1[2]的尘埃落定,tr2[3]的浮出水面,C++0x的脚步声似乎是离我们越来越近了,近到我们

刘未鹏|C++的罗浮宫 3万+

高通camx hal进程dump日志分析四:Node DumpDebugInfo原理分析

摘要: 本文讲解了高通Camx架构中DumpDebugInfo的原理,重点分析了Node组件的DumpDebugInfo()方法。该方法会输出Node自身调试信息,并调用DumpFenceErrors()接口输出Fence错误信息。具体包括:检查请求队列状态、输出未完成请求的元数据/完成状态/未处理Fence数量等关键信息,以及Fence错误原因(如延迟、未触发、结果失败等)。通过代码注释详细解析了各字段含义,为后续分析Dump异常日志提供理论基础。

783

Cpp入门基础

定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下 ⾯的rand不在冲突了。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。

2401_86658278的博客 5139

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

c++0x

<br /> sink按:我这次给out了,之前在csdn上有个很火的帖子说0x的时候,我还以为是字符串以斜杠0结尾,所以没怎么看,现在发现竟然是 c++的新标准,而且看到增加了许多不错的“基础设施”,真是不错~关于c++0x的内容百度Google有很多,我觉得这个比较通俗易懂,至少对于我这 个还没真正接触它的人来说算是最直观的认识吧。~ <br />  最近,从全球最活跃的C++社区boost传来消息,新的C++标准:C++0x,最早将在2007年10月发布。很早就有人猜测,C++0x 中的x到底

stilling2006的专栏 937

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C++0x

C++0x作为C++的下一个国际标准,已经在业界热炒多年。但是,尽管业界对那个新标准千呼万唤,她总是不愿意过早地来到我们面前。在最近一次CodeGuru对C++之父Bjarne Stroustrup博士的采访中,C++之父终于给我们带来了好新闻——C++0x的标准化工作已经接近尾声,C++0x呼之欲出。下面是整个采访过程的节选,我们可以通过那个访谈,掀起C++0x的盖头来,相识C++0x的最新进展

808

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C++0X 右值引用

简介C++0X是新一代C++标准的非官方名称。它将代替C++03成为C++最新的标准。C++0X对C++的核心语言以及标准库经进行了部分更新。C++0X完全兼容目前的C++标准。在C++0X之中,语言本身添加了对于多线程的支持。一些细节得到了改进,例如支持统一初始化方式。对泛型编程的支持方面有了更边界的,同时对功能进行了改进。核心语言功能右值引用在C++03中,

Splendour的专栏 4513

C++0x,崭新的C++,还是另一个JAVA?

输入您的搜索字词 提交搜索表单 C++0x,崭新的C++,还是另一个JAVA? 最近,从全球最活跃的C++社区boost传来消息,新的C

oRbIt 的专栏 1万+

c++0x_warning.h 错误

g++编译使用libmemcached编写的程序时报错,做个简单的记录。 In file included from /usr/lib/gcc/x86_64-redhat-Linux/4.4.7/../../../../include/c++/4.4.7/cinttypes:35, from /usr/include/libmemcached-1.0/memc...

sy84436446的博客 2905

CMakeList: -std=C++0x, C++1y, ...

CMakeList: -std=C++0x, C++1y, ..."-std=C++0x" 是什么意思? "-std=C++0x" 是什么意思? C++0x 代表 C++11 版本 C++1y 代表 C++14 版本 C++1z 代表 C++17 版本 C++2a … 编译选项C++版本代号而已 比如说 CMakeList.txt 配置C++11版本编译: set(CMAKE_CXX_FLAGS -std=c++0x") 配置C++14版本: set(CMAKE_CXX_FLAGS -std=c++

HuiCMs的博客 2766

C++0x 和 C++11的区别

The old -std=c++0x is only needed for older compiler versions that did not support -std=c++11 and they chose that name to express the preliminary and unstable nature of features (and the ABI) of the t...

LU_ZHAO的博客 5510

C++TR1和C++0x简单介绍

C++TR1和C++0x是什么呢?这是很多打算学习C++的学员非常想了解的,下面就由达内为您介绍一下C++TR1和C++0x的内容?    C++ Technical Report 1 (TR1)是ISO/IEC TR 19768, C++ Library Extensions(函式库扩充)的一般名称。TR1是一份文件,内容提出了对C++标准函式库的追加项目。这些追加项目包括了正则表达式、智

陈嘉怡的专栏 2628

走进c++0x,体验不一样的c++

好吧,之前我错误的认为c++0x就是添加了一些大多数人不懂的语法,比如bind,lambda,或者是一些使用起来可有可无的特性,比如auto,或者是可以通过具体代码方式来避免的,比如move。         不过阅读了漫话c++0x系列文章,我发现c++0x真的是一门新的语言,并且是足够漂亮的新语言。说实话,我们平时写代码确实不会遇到什么复杂的语法(如果自己写了自以为很炫,但是别人都看不懂的语

langresser的专栏 2291

c++0x的一些新特性

先看一个简单的例子对比 //old      std::list l;      std::list::iterator it = l.begin(); //new      std::list l;      auto it = l.begin(); 很酷吧?auto原来是生命自动变量(局部变量)的关键词,在c++0x中有了新的含义 c++0x是新

Rare's Tech-Blog 644
上一篇: 《功夫online》3D引擎开发总结
下一篇: 最新版本DirectX SDK(2007年2月版)不再支持ps_1_x
yanonsoftware
博客等级 码龄21年 104粉丝 67原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值