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的依赖管理。
C++开发的一些周边能力的更多相关文章
- react 前端项目技术选型、开发工具、周边生态
react 前端项目技术选型.开发工具.周边生态 声明:这不是一篇介绍 React 基础知识的文章,需要熟悉 React 相关知识 主架构:react, react-router, redux, re ...
- 【转】测试开发工程师必备软硬能力&高级测试开发工程师需要具备什么能力?
对于测试的基本知识,可以查看软件测试相关书籍 对于在公司成为一位优秀的测试开发工程师,我觉得下面这篇文章涉及到的是我们需要的,稍微进行改动https://blog.csdn.net/sinat_210 ...
- IOS 特定于设备的开发:使用加速能力“向上定位”
iPhone提供了3个机载的传感器,用于沿着iPhone的3根相互垂直的轴(左/右(x轴).上/下(y轴)和前/后(z轴))度量加速能力.这些值指示作用于iPhone的力,它们来自重力和用户移动.可以 ...
- 【微信公众平台开发】百度周边搜索接口php封装
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWl2YW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...
- 手游开发Android平台周边工具介绍
1.渠道接入 主要是需要接入各平台的登录.充值接口,各家SDK又不统一,Android渠道都是鱼龙混杂,就算小渠道你看不上,但量多了,加起来也还可观,所以大家都拿出吃奶的尽去铺渠道.国内几大主要的An ...
- 能力不足的C++开发会欺辱能力不足C#开发
能力不足的C++开发会欺辱能力不足C#开发 我被C++开发欺辱的岁月 前言 人被压迫了,为什么不斗争?——鲁迅 作为一个C#开发者,我经历了,也见证了很多同行饱受C++开发的歧视和欺辱. 而且,这 ...
- 新能力 | 云开发CMS内容管理系统,5分钟搞定小程序管理后台
小程序·云开发的云调用能力,让用户可以免鉴权快速调用微信的开放能力,极大节约了开发成本.现在,大家期待已久的云开发 CMS 内容管理系统,终于上线啦!顺便提示,接下来还可以二次开发哦! 云开发 CMS ...
- 用Vue.js开发微信小程序:开源框架mpvue解析
前言 mpvue 是一款使用 Vue.js 开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程 ...
- 为什么选择MpVue进行小程序的开发
前言 mpvue是一款使用Vue.js开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为H5和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程序,或开发 ...
- ESP8266开发之旅 网络篇⑯ 无线更新——OTA固件更新
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
随机推荐
- 阅读IDEA生成的equals方法--java进阶day05
1.IDEA生成的equals方法 虽然我们之前写了equals方法,但IDEA中可以快速生成equals方法,因此,我们要能看懂IDEA生成的equals方法 1.if(this==o) 2.if( ...
- dotnet 命令启动报错
Windows 7 或 Windows Server 2008 R2 上安装 .NET Core SDK 2.x 后 dotnet 命令启动报错 可以通过下载以下系统补丁解决 感谢下载 Windows ...
- EntityFramework GroupJoin
总而言之, GroupJoin 是先 Join 后 Group, 对应的 SQL 也是先 Join, 然后通过内置 LINQ 操作分组. 参考文档 GroupJoin 方法 Reimplementin ...
- unigui的错误delphi clientHeight:property clientheight does not exist【10】
在unigui运行中发现这样的错误clientHeight:property clientheight does not exist. 这是啥原因.从老版本中复制过来的代码含dfm会出现这样的错误. ...
- 2012R2双网卡路由的设定
目前T440服务器, os只能起步2012R2.intelWin联盟是实实在在的.在该os上,DB支持SQL2008. 你要安装SQL2005也可以.到网上查找攻略.那也是死去活来.还好.2008兼容 ...
- # 🤖 **DeepSeek 深度解析 PasteForm:一个让管理端开发爽到飞起的全栈解决方案**
DeepSeek 深度解析 PasteForm:一个让管理端开发爽到飞起的全栈解决方案 各位开发者注意啦!今天我要带大家全方位解剖 PasteForm 这个神奇框架--不仅介绍核心思想,更要重点展示它 ...
- lombok用法
加入 maven 依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lo ...
- 在Linux终端管理你的密码!
大家好,我是良许. 现在是互联网时代,我们每天都要跟各种 APP .网站打交道,而这些东西基本上都需要注册才可以使用. 但是账号一多,我们自己都经常记不清对应的密码了.有些小伙伴就一把梭,所有的账号密 ...
- Redis 集群实现分布式缓存的示例操作流程【Redis 系列之五】
〇.前言 Redis 集群的核心优势在于高可用性.可扩展性和高性能,特别适合需要处理大规模数据和高并发请求的应用场景. 本文先介绍了什么是 Redis 集群,然后通过示例,以手动和自动两种方式搭建集群 ...
- 创建bean对象的三种方式
一.使用无参构造方法创建 二.使用静态工厂创建 三.使用实例工厂创建