腾讯以及各大厂的 C++ 开发环境是什么样的?

在各大技术论坛、微信群里,程序员们经常为编程语言、IDE开发环境之类的问题撕得不可开交。

这天就看到了一个知乎问题:

图片

下面有一位腾讯员工的回答,分享一下,原文链接我放到了文末。

简单介绍下腾讯微信事业群后台开发环境。

微信事业群比较特殊,喜欢自己搞一套东西自己用,有些基础设施跟腾讯其他事业群的不太一样。

硬件:

现在通常是macbook pro+ 远程Linux主机。远程主机方面当前已经舍弃了以前集体户式的开发机,每人拥有一台相对独立的云主机,我的配置是8核Xeon Gold + 16GB + 500GB,考虑到这台机绝大多数时间只是跑个编辑器,性能还是挺富余的。

软件:

代码编辑:老员工通常是vim,基本没见过emacs。新员工很多开始用vs code了。我身边绝大部分人是用vim的,大家有时会互相分享一些自己使用的插件,但是每个人的配置都大不一样。编辑器是网上程序员撕逼大战的主战场之一,但是现实中同事之间倒也没有因为编辑器争执过,大家还是很文明的,新人刚来的时候我们这些老vim用户也会安利他们学一下vim,但人家最终选择了vs code我们也没说啥不是。

版本控制:目前基本都迁移到git了,以前是用svn。vim党基本都是直接用git命令,有些vs code的用户会在mac上用图形化的前端。

编译系统:现在是基于bazel搞的一套东西,开发阶段编译代码时使用一条指令将本地代码diff发送到编译机来编译,这样可以共享很多中间文件,速度蛮快的。以前是在本地开发机编译,有些比较大的模块编一次几十分钟,而且编译吃掉太多cpu还会导致vim卡顿……

工具链:用的是GCC那一套,由于后台服务都是微服务,每个小模块都可选使用gcc4或者gcc7构建,最近我写了个小模块用了c++17,就是用gcc7编译上线的。希望哪天可以支持clang,我比较喜欢clang的编译报错信息……

微信后台开发的一天(理想情况Orz):

  1. 掀开mac

  2. 打开outlook把收件箱的红点全点掉

  3. 切到item2,这时mosh已经自动重连到了开发机,tmux的一堆窗口已经在等着你了

  4. vim...patchbuild...vim...patchbuild...git

  5. 期间夹杂吃饭、午休、散步、带薪拉屎

  6. mac切到chrome,打开微信变更系统,提单、编译、同步到测试机、灰度上线一气呵成

  7. 盖上mac,下班回家

  8. //享受夜生活

其他一些碎碎念:

微信的后台开发环境一直有很多槽点,但也一直在改进,每年都能看到一些进步。现在还没解决的比较影响开发效率的应该就是代码的语义分析工具了。目前大家写代码的环境都是没有精确的跳转和补齐能力的,考虑到大家的环境很不统一,估计也没什么动力统一去搞。

由于微信的后台代码量非常非常大,如果暴力把所有代码都加到一个工程里,ycm之类的东西根本跑不动,按一下tab卡5分钟还不一定能缓过来(gdb的时候也是不怎么敢按tab的)。后台C++项目都是基于bazel的BUILD文件管理依赖,总体上来说比较粗放,基本上每个新人刚来的时候都会折腾一下这个东西,试图搞定基于BUILD的补全方案,但最后性能和准确性上很难满足日常使用的需求。目前我的解决方案是用universal-ctags定期给常用目录下的文件生成tags,写代码的时候凭经验去跳。

在微信写业务非常傻瓜化,微信的微服务框架svrkit准备了一堆配套工具来生成代码,新起一个服务就是写一个protobuf文件,里面定义好接口,然后用这个文件生成整个服务的框架代码,再把业务逻辑填进去就好了。微信的C++基础库里面大到消息队列,小到string的trim都有提供,写普通的业务代码需要什么功能基本都可以找到,完全就是堆积木,对普通的业务部门来说,面试造火箭入职拧螺丝一点都不夸张。

微信的开发最讨厌的事情有两个:一个是别人写的代码没有注释,另一个是自己写代码还要写注释。这造成了很多工具、功能、逻辑的细节都是口口相传,或者沉没在浩如烟海的km文章、邮件里。没事去看看别人的代码总会有惊喜……有时是惊吓。当然这一点最近也在慢慢改变,基础能力相关的组件开始开辟一些wiki、git issue之类的进行系统的介绍了。

作者:亚里士缺德
链接:https://www.zhihu.com/question/265829202/answer/1081457634
来源:知乎

### C++ 开发中大厂常用的集成开发环境(IDE) 在大型互联网公司如字节跳动、腾讯和华为中,C++ 开发者对于集成开发环境(IDE)的选择通常具有较大的自由度,主要取决于个人习惯和项目需求。以下是一些常见的 IDE 选择及其特点: #### Visual Studio Visual Studio 是一个功能强大的集成开发环境,广泛用于 Windows 平台上的 C++ 开发。它提供了丰富的调试功能、代码分析工具以及与版本控制系统的集成。对于需要在 Windows 平台上进行开发的团队来说,Visual Studio 是一个非常受欢迎的选择 [^1]。 #### Eclipse CDT Eclipse CDT(C/C++ Development Tooling)是一个开源的集成开发环境,支持跨平台开发。它提供了一个全面的 C++ 开发工具集,包括编辑器、构建系统、调试器等。Eclipse CDT 的灵活性和可扩展性使其成为许多开发者的选择 [^1]。 #### CLion CLion 是由 JetBrains 开发的一款商业 IDE,专为 C 和 C++ 开发而设计。它支持多种编译器,并且集成了 CMake 构建系统,可以自动处理项目配置。CLion 提供了智能代码导航、重构支持以及强大的静态代码分析功能,非常适合大型项目的开发 [^1]。 #### Vim 和 Emacs 尽管不是传统意义上的 IDE,但 Vim 和 Emacs 在服务器后端 C++ 开发者中仍然非常流行。这些文本编辑器可以通过插件系统增强其功能,以支持更复杂的开发任务。它们轻量级且高效,适合那些希望对开发环境有高度定制需求的开发者 。 #### 其他 IDE 除了上述提到的 IDE 外,还有其他一些 IDE 也可能被使用,比如 Code::Blocks 和 KDevelop 等。Code::Blocks 是一个开源的跨平台 IDE,支持多个编译器;KDevelop 则是 KDE 桌面环境下的一个现代化 IDE,也支持 C++ 开发 。 在实际工作中,大厂C++ 开发者往往根据个人偏好和技术栈来选择合适的 IDE。例如,在腾讯,有开发者提到自己使用 Vim 或 Emacs 的情况较多,当然也有直接使用其他 IDE 的情况 [^1]。同样地,华为和字节跳动等公司也会有类似的多样化选择。 综上所述,虽然存在一些主流的 IDE,但在实际应用中,开发者可以根据自己的喜好和项目的具体要求来挑选最合适的工具。 ```cpp // 示例代码:简单的 C++ 程序 #include <iostream> int main() { std::cout << "Hello, World!" << std::endl; return 0; } ``` ###
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值