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 ...
随机推荐
- ASP.NET Core 静态资源的打包与压缩
以 Visual Studio Community 2017 15.5.1 为例 配置文件 bundleconfig.json 新建一个AspNetCore MVC项目,项目中会有一个bundleco ...
- WPF MessageBox
参考文档 MessageBox MessageBoxButton MessageBoxImage MessageBoxOptions MessageBoxResult
- Semaphore.acquire()方法的底层原理
一.acquire() 的工作流程 当调用 acquire() 方法时,实际调用的是 AQS 的 acquireSharedInterruptibly(1) 方法.以下是其详细工作流程: // acq ...
- 阿里云服务器中Linux下centos7.6安装JDK
一.下载jdk安装包 wget https://imcfile.oss-cn-beijing.aliyuncs.com/shizhan/file/liaoshixiong/jdk-8u231-linu ...
- 🎀腾讯云nodejs SDK打包体积过大吐槽事件
简介 2025年2月1日有位开发同学batchor在GitHub上提出了issue(你们是把***打包了吗?)对腾讯云Node.js的SDK打包体积过大进行吐槽(言语偏贴吧风格略显激进),SDK打包体 ...
- python获取日期(今日、昨日),及格式化日期的方法(datetime)
在写爬虫的过程中发现,很多网站的信息均以当天日期为链接组成部分,但是格式又不相同 有些是20210328,有些是2021-03-28,还有些2021/03/28 如果一次爬取来源不同网站的信息,需要对 ...
- thinkphp mysql 使用IN 条件
今天使用thinkphp whrere in条件查询 数据库是 ,我需要搜索入参 110000 一个字段 ,但是thinkphp 为了效率直接把 in条件转成 = 解决方法 FIND_IN ...
- 1、 为什么软件开发周期总是预估的2~3倍? 2、什么是分而治之? 3、了解 WBS
1.为什么软件开发周期总是预估的2~3倍? 首先,软件开发中经常会有需求变更的情况,客户或者利益相关者可能会提出新的需求或者改变现有的需求,这就得调整计划,增加了开发时间.其次,开发人员的技术和经验也 ...
- Cline技术分析:基于Cline Prompt的File Tools MCP Server实现
我们将基于Cline prompt技术,构建一个基于MCP协议的文件工具服务器.我们将从任务定义开始,并在任务执行过程中探讨各个关键环节. 任务提示词定义 1. 访问[hub.gitmirror.co ...
- 痞子衡嵌入式:在含多个i.MXRT的主从系统中共享一颗Flash启动的方法与实践(上篇)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是多个i.MXRT共享一颗Flash启动的方法. 有些特殊的客户应用会采用多颗 i.MXRT 芯片设计一主多从的硬件架构(目的不一,或仿多 ...