当前位置: 首页 > news >正文

(一)为什么要选择C++

如果要说C++的优点,大部分人可能会说C++ 跨平台,性能好,如果要说C++缺点那估计很多人可以说出一大堆。

  • 没有官方包管理工具
  • 没有官方构建工具,虽然cmake 横空出世,有一统江湖的趋势,但是很多项目还是没有cmake支持
  • 内存问题防不胜防,生命周期异常,野指针访问
  • ABI 不兼容
  • 多线程问题
  • 语法复杂,细节太多,入门门槛太高

确实C++ 有很多需要改进的点,相比其他高级语言真的过于复杂。 甚至还有专门针对C++ 的调侃,“C++从入门到放弃”
。那为什么还有这么多项目要选择使用C/C++呢?我从我的经历来说说为什么要选择C++

语言基因

每个公司都有自己的技术偏好,就像我厂客户端开发,很多都使用C++,一个成功的产品可以培养很多有技术的程序员,这些程序员又去开发新产品,自然也会用自己最熟悉擅长的语言,逐渐的这门语言在这个公司就会变得更受欢迎。并且相应的基础设施和基础库也会逐渐完善建立起来。

跨平台

我厂的很多产品都是多平台的,即使放弃桌面端也需要同时支持安卓和iOS。因此项目中使用的基础库通常会考虑使用C++进行开发,这样可以节省人力资源,并编写一份代码以供多个平台编译。此外,C++开发底层库的运行效率也不会有问题。

开源社区活跃

GitHub上有许多C/C++项目,几乎可以找到各种轮子(即开源库)。例如,boost、openssl和sqlite等基础设施都有开源实现。这些开源项目为开发者提供了丰富的资源和解决方案。

CMake 统一构建工具

虽然C++委员会没有提供官方的构建工具,横空出世的CMake 有一统江湖的趋势,而且 boost 库现在都支持CMake 构建了。CMake 支持各个平台。GitHub 上很多不支持CMake的项目也会逐渐的针对CMake的支持

C++ 自身发展

C++一直在不断进步,努力解决开发者面临的各种问题。虽然脚步走得慢,但是C++ 没有放弃。从11版本开始就被称为 “现代C++”,到现在的稳定版本C++17以及实验版本C++20,引入了许多新特性。当然这也带来了更多的学习成本。

后面会分享一些实际项目中遇到的设计问题

相关文章:

  • Android中的Intent
  • 微信小程序使用echarts报错 ReferenceError: Image is not defined 解决
  • 线程的6中状态
  • win11 电脑睡眠功能失效了如何修复 win11 禁止鼠标唤醒
  • Linux的基本指令(4)
  • express框架搭建后台服务
  • 哈希一致性算法
  • 编程笔记 html5cssjs 028 HTML输入属性(2/2)
  • 系统安全及应用
  • 【Maven】下载及配置
  • Vagrant使用教程
  • 机器学习--ROC AUC
  • Axure骚操作:【制作可暂停与不可暂停进度加载条】
  • git 常用命令 提交commit
  • Python 工具 | pip 基本命令
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 0x05 Python数据分析,Anaconda八斩刀
  • Consul Config 使用Git做版本控制的实现
  • HTML中设置input等文本框为不可操作
  • mysql 5.6 原生Online DDL解析
  • MySQL的数据类型
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Objective-C 中关联引用的概念
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • PAT A1092
  • SQLServer之索引简介
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 大型网站性能监测、分析与优化常见问题QA
  • 高度不固定时垂直居中
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 如何编写一个可升级的智能合约
  • 通过几道题目学习二叉搜索树
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • UI设计初学者应该如何入门?
  • !!Dom4j 学习笔记
  • $L^p$ 调和函数恒为零
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (HAL库版)freeRTOS移植STMF103
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (二)JAVA使用POI操作excel
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)关于多人操作数据的处理策略
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • (转载)PyTorch代码规范最佳实践和样式指南
  • . Flume面试题
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET/C# 使窗口永不获得焦点
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .net操作Excel出错解决
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @Builder用法