C++开发的一些周边能力
go在后端开发中逐渐替代了C/C++,为什么大家更喜欢用go之类的新语言呢?
C/C++作为上世纪的古老语言,很多地方没有针对程序员体验来考虑人性化编程。举几个例子:
1.windows、linux、macOS这三大操作系统内核,C/C++代码大项目中会调用大量的系统API,导致代码不跨平台。而go、py、java这些后来的语言则尽量提供跨平台统一的API。
2.C/C++只提供了少量基础库,大部分功能,包括网络通信等常用功能代码,都没有提供,需要调用操作系统API或者使用第三方库。
3.C/C++没有依赖管理体系,大部分时候都是自己写Makefile,而go则只需要在代码里写了import,编译时就会自动下载依赖库并完成编译和链接。
4.代码格式、静态语法检查、代码文档、单元测试等功能,go也做了集成,可怜C/C++这些老牌语言创立的时候,还没有想到要集成这些东西。
上述这些区别,虽然不是语法上的区别,但是在项目代码量越来越大之后,这些问题会让程序员越来越难维护项目代码。
当然,除了这些区别,语言语法上也有很大的区别:线程管理、内存管理等工作在C++里基本都是交给程序员的。而在go里面程序员不需要过多关心。
这并不是谁好谁不好的讨论,每一门语言都是时代的产物,存在及合理。
偶尔,也有go覆盖不到的地方,必须得让我从工具箱中掏出C++写上一段。
当C++遇到网络编程时,最好引入boost asio。它跨平台,性能也不错。
当C++遇到业务开发时,最好使用grpc,也能跨平台。和其他语言写的程序无障碍沟通。
当C++遇到跨平台开发时,在linux上,这容易得多,大部分时候只需要yum或者apt安装系统库后则可以调用。实在不行就把库从github上clone下来编译一下,再在自己的Makefile中引用。在windows上,最近我发现了vcpkg,用一条命令就可以下载指定名字的库,然后再在自己的vs工程里引用即可,实在是方便,不需要去访问每一个用到的库的github,然后慢慢研究它怎么在windows上进行编译。
vcpkg:一个跨linux、windows、macOS的依赖管理工具。让我在写C++的时候,依赖管理能力能接近go的依赖管理。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?