BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 臧秀涛 关注 2 他的粉丝 发布于 2015年8月18日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

林喆是芒果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等,我们有了更多选择。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT