心渐渐失空

导航

统计

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的依赖管理。

posted on   心渐渐失空  阅读(23)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示