写点什么

老树新花:芒果 TV 林喆谈 C++11 选型与应用

  • 2015-08-17
  • 本文字数:1147 字

    阅读完需:约 4 分钟

林喆是芒果TV 的系统工程师。在10 月15 日~17 日的 QCon 上海 2015 大会上,他将分享《C++11 核心特性简析》,结合实际项目经验,分享一下他对C++11 一些新特性的理解和应用。在大会开始前,InfoQ 对他做了采访,谈到了C++11 的选择与应用、编程语言选型等话题。以下为采访内容。

InfoQ:您现在在芒果 TV 主要负责哪些方面?

林喆:我在长沙芒果 TV 负责 Redis 解决方案的制定,包括 Redis 集群调配、管理维护以及内部培训事宜,以及 Redis 集群代理 redis-cerberus 、控制管理程序 redis-ctl 等相关项目的开发工作。这两个项目都托管在 GitHub 上,感兴趣的读者可以自行查阅。

InfoQ:可以简单介绍一下 redis-cerberus 这个项目吗?

林喆:redis-cerberus 是一个 Redis 集群代理程序,早期是为了在使用 Redis 集群的同时兼容旧客户端和应用程序库而开发的。后续开发过程中加入了基于 Redis 集群主从模式的读写分离特性。

InfoQ:这个项目为什么会考虑用 C++11 开发?

林喆:首先,选择 C++ 开发是基于两点考虑:性能和开发效率。而之所以选择使用了 C++11 的特性,是因为新标准对原有的一些缺陷进行了有效的弥补,并且增加了很多有利于提高开发效率的特性。

InfoQ:C++11 引入了很多特性,可以分享一下实际使用中的感受吗?比如给开发带来了哪些好处?

林喆:C++11 引入的新特性有很多,我在项目中用到的可以分为三个方面,包括更好的对象生命周期控制语义、更灵活的语法以及多线程。具体我会在 QCon 上分享。下面简单举两个例子。

在更好的对象生命周期控制语义这方面,新标准库中引入的 std::unique_ptr(在 redis-cerberus 项目中有进一步封装) 表示对一个对象的唯一引用。在阅读代码的时候,如果看到对象 A 成员里有一个 std::unique_ptr 去引用另一个对象 B,那么隐含的语义是,B 的生命周期就应该完全由 A 来决定,并会随着 A 的析构而析构。

在更灵活的语法方面,我想最易用的就是基于容器的迭代循环,有了 auto 自动推断类型,不需要再去写很长的如“std::vector::iterator i”这样用于指定类型的代码,把精力从这种无益的体力劳动中释放了出来。

InfoQ:您在开发中选择编程语言都会考虑哪些因素?

林喆:无疑使用环境是最重要的因素,如果是系统级程序,并且不太适用 C++ STL 库(主要是从内存分配器和异常两方面考量),那么 C 语言肯定是第一选择;其它对性能很敏感的环境,C++ 比较适合;使用脚本控制的话, 则 Python 自然是一把利器;新出现的一些语言,如 Rust 在许多方面也表现不错,不过我还没有深入接触。

需要单独说说的是 Javascript,目前浏览器普遍支持的只有这一种脚本语言,但它又有很多缺陷和不便需要规避和改善。我认为 JavaScript 更类似于前端界的汇编语言,现在也有一些编译为 JavaScript 的语言,如 CoffeeScript、TypeScript 等,我们有了更多选择。

2015-08-17 21:102918
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 141.7 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

网络空间测绘在安全领域的应用(上)

郑州埃文科技

网络空间测绘技术

深度解析:Allure报告如何提升你的测试效率?

测吧(北京)科技有限公司

测试

MWC 2024丨中国电信柯瑞文:建设云网融合的新型数字基础设施

天翼云开发者社区

云计算 互联网大会 算力网络 世界移动通信大会

《植物大战僵尸2》宣布启动鸿蒙原生应用开发,又一国民级IP游戏加入鸿蒙

最新动态

ai作画软件有哪些?推荐这8个AI生成图片工具!

彭宏豪95

人工智能 在线白板 AIGC AI绘画 AI作画

掌握 Docker PS 命令:轻松管理容器

霍格沃兹测试开发学社

NFT矩阵公排合约系统开发

l8l259l3365

容器镜像服务:云原生时代的核心基石

天翼云开发者社区

云计算 容器服务

百度财报告诉你:2024想赚钱,搞大模型

脑极体

AI

戴着 Vision Pro 录完这期节目,才明白“生活”才是 Killer App|编码人声

声网

深入理解 Docker Run 命令:从入门到精通

霍格沃兹测试开发学社

好用的文本编辑器推荐

霍格沃兹测试开发学社

SD-WAN架构比MPLS更具哪些优势

Geek一起出海

字节被曝秘密研发多个 AI 产品;库克:苹果将「开辟 AI 新天地」丨 RTE 开发者日报 Vol.154

声网

轻松实现UniApp Xcode上传IPA无需Mac,appuploder一键上传助你高效开发!

合合信息入选上海市网信办“2023年度网络数据安全风险评估试点工作优秀单位”

合合技术团队

安全 数据安全 合合信息

程序员副业大赏:一边赚钱一边提升技能!

伤感汤姆布利柏

TCL实业登陆MWC 2024:多款移动智能终端产品亮相,擘画移动智能生活新蓝图

极客天地

Java 继承与多态:代码重用与灵活性的巧妙结合

小万哥

Java 程序人生 编程语言 软件工程 后端开发

Programming Abstractions in C阅读笔记:p306-p307

codists

淘宝用户购物行为分析

Databend

云数据库常见问题与解决方案:从开发工程师的角度看

天翼云开发者社区

云计算 云数据库

技术实践|百度安全「大模型内容安全」高级攻击风险评测

百度安全

穿越时空的软件架构之旅:软件架构设计演化史推演

灸哥漫谈

软件架构 架构师 软件架构设计 软件架构师

探索OpenCV:图像处理的利器

霍格沃兹测试开发学社

开营通知 | ​行业专家+名校教授强强联合,带你快速掌握人工智能测试开发技术,提升你的竞争力

测吧(北京)科技有限公司

测试

企业数字化转型的第一步:由被动多云向主动多云转变

品高云计算

老树新花:芒果TV林喆谈C++11选型与应用_QCon_臧秀涛_InfoQ精选文章