写点什么

老树新花:芒果 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:103074
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

Java 实现 1024 小游戏【附源码】

JavaPub

大咖说·图书分享|阿里官方为你分享内部测试之道

大咖说

阿里巴巴 测试 开发

揭秘华为云GaussDB(for Influx)最佳实践:hint查询

华为云开发者联盟

数据库 倒排索引 GaussDB(for Influx) hint 单时间线

MSVC编译静态库

Loken

5月月更

直播回顾|携手 Opentelemetry 中国社区,走进可观测性

Daocloud 道客

云原生 可观测性

【等保测评】2022年北京正规等保测评机构新名单公布

行云管家

等保测评 北京

编程,不止有代码,还有艺术

华为云开发者联盟

数据库 倒排索引 GaussDB(for Influx) hint

固态硬盘和机械硬盘的区别(7大区别,简单易懂)

源字节1号

软件开发 前端开发 后端开发 小程序开发

一份优秀的产品帮助文档怎么写?

小炮

PostgreSQL 15 新特性解读 | 墨天轮优质文章合集

墨天轮

数据库 sql postgresql 新特性

ZooKeeper 在阿里巴巴的服务形态演进

阿里巴巴云原生

Apache zookeeper 阿里云 开源 云原生

上新了 亚麻云 | 远程办公有点上头?解锁云上应用现代化的奥秘

亚马逊云科技 (Amazon Web Services)

远程办公 应用

关于敏捷测试象限的“秘密”

BY林子

敏捷开发 敏捷测试 测试策略

中科大脑知识图谱平台建设及业务实践

NebulaGraph

图数据库 知识图谱

git bisect:让你闭眼都能定位疑难 bug的利器

华为云开发者联盟

开发 bug git bisect 二分法定位

直击中小企业转型通用痛点 联想百应推出智能会议解决方案

极客天地

【等保测评】等保测评师怎么考,前景怎么样?

行云管家

网络安全 IT运维 等保测评 等保测评师

艾莫尔研究院基于Karmada的落地实践

华为云开发者联盟

云原生 Karmada 自动化集群管理

精彩回顾|KubeCon EU 2022 Kubernetes Batch + HPC 专题日

Daocloud 道客

Kubernetes 云原生 HPC batch

MSVC编译多个C程序文件

Loken

音视频 5月月更

企评家,企业成长性评价系统怎么用?

企评家

企业成长性分析 企评家 企业投资价值评价

3D赛车【附源码】设计实现

JavaPub

常用的 Lambda 表达式案例解析,工作中都会用到!

CRMEB

给小白的 PG 容器化部署教程(上)

RadonDB

postgresql 容器化 数据库·

VPN的应用场景

源字节1号

小程序开发

实验室信息管理系统如何工作?

低代码小观

低代码 实验室管理系统 企业管理系统 LIMS实验室信息管理系统 企业管理软件

【技术干货】代码示例:使用 Apache Spark 连接 TDengine

TDengine

数据库 tdengine 开源 时序数据库

A New ETL Language -- Easy SQL

Bright

数据开发 ETL 大数据开发 EasySQL

【直播预告】研发效率百倍提升的秘密,这些破圈思路了解一下!

FinClip

小程序 finclip 直播预告

Java 实现 贪吃蛇 小游戏【附源码】

JavaPub

UniqueMergeTree:支持实时更新删除的ClickHouse表引擎

字节跳动数据平台

Clickhouse 表引擎 实时

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