2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

Java大数字运算之BigDecimal 类

java易二三

Java 程序员 程序猿

黄凯耀:深度解读openGauss架构创新与新特性

daydayup

opengauss

李士福:openGauss 自驾驶数据库内核在AI领域的探索和创新

daydayup

opengauss

openGauss:共建数据库根社区,打造开源数据库核心竞争力

daydayup

opengauss

INFINI Labs 产品更新 | Easysearch 新增分词插件、Gateway 支持邮件发送等功能

极限实验室

ES 产品更新 极限科技

异步编程框架:Workflow的计算调度算法

1412

c++ 开源 异步编程 workflow 调度算法

Java基础——IO流

java易二三

Java 编程 程序员

Code片段 GC

Bert

通过降本增效,提升测试价值

老张

研发效能 降本增效

Java干货分享—Calendar 类的使用

java易二三

Java 编程 程序员

Java——二维数组的用法

java易二三

Java 基础入门

基础软件加速自主创新,openGauss成就业务“新箭头”

daydayup

opengauss

深入浅出openGauss的执行器基础

daydayup

opengauss

ZBC Staking 即将开启,全新利好来袭

鳄鱼视界

PoseiSwap 即将开启 POSE 单币质押,治理体系将全面运行

BlockChain先知

产品服务谁?产品做什么服务?

Bonaparte

产品 产品设计 产品思维 产品服务

如何通过网关降低大模型的调用费用,并提升合规性

阿里巴巴云原生

阿里云 云原生 网关

openGauss DBMind上的多指标关联性分析介绍

daydayup

opengauss

openGauss都做了哪些算子优化工作?

daydayup

opengauss

openGauss数据库源码解析系列文章——执行器解析

daydayup

opengauss

AI开发硬件基础经验

timerring

AI

场景题-如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路。

派大星

Java 面试题

2023-07-22:一共有n个项目,每个项目都有两个信息, projects[i] = {a, b}, 表示i号项目做完要a天,但是当你投入b个资源,它就会缩短1天的时间, 你一共有k个资源,你的目

福大大架构师每日一题

福大大架构师每日一题

C语言实现哈希搜索算法

芯动大师

一个逻辑完备的线程池

1412

c++ 开源 线程池 异步编程 workflow

本地 IDC 中的 K8s 集群如何以 Serverless 方式使用云上计算资源

阿里巴巴云原生

阿里云 Serverless 云原生

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