现在的趋势是多语言混成编程,故本文是针对混合编程。

1,C++优势:

1.1,性能优势。

1.2,可进化性(可复用性),进化出本团队顺手的类库。

2,C++小的优势或疑似优势:

2.1,“万金油”。混合编程时代,“万金油”价值小。



3,C++根本缺点:

难学。新手被指针搞死,中手(约3年工作经验)被stl标准库和模板搞死,高手(约5年工作经验)被boost搞死。由于stl难懂,大量的项目禁用stl。我曾经看了一段20行的stl代码,看了30分钟,发现两行代码(两个for)就可以搞定。csdn有一个真实的案例,某个项目有了较多的boost,那人离职后,项目就费了。请一个boost高手的成本比重写项目还高。

4,缓解的方法:

C++软件工程师进一步分工:

a,新手主要负责界面,只需要会使用指针,无需管理指针。管理指针封装在基础库中。

b,中手老手负责逻辑层。

c,专人负责与数据库打交道。



5,C++非根本缺点:

5.1可理解性差。“难学”引起,其实熟悉stl的人看熟悉stl的人代码很好理解。解决方法:

a,分成若干个库,新手参与的库,禁止或少用stl。

b,stl中的常用功能,重写在一个新库中,此库可理解性最重要。

6,小缺点或不是缺点。

6.1.门槛高。新手无需用到指针管理、内存管理、线程管理,直接用stl的vector或MFC的CArray分配空间。内存管理、线程管理一个产品、项目只需要一个人会,就可以了。

6.2,开发效率低。如果有多年积累的基础库,开发效率反而高。因为这些基础库,是非常适合当前团队的。

6.3,初级程序员易犯错误。初级程序员,只有权限修改少量库(以界面居多)。

C++ 优缺点之我见的更多相关文章

  1. DDD CQRS架构和传统架构的优缺点比较

    明天就是大年三十了,今天在家有空,想集中整理一下CQRS架构的特点以及相比传统架构的优缺点分析.先提前祝大家猴年新春快乐.万事如意.身体健康! 最近几年,在DDD的领域,我们经常会看到CQRS架构的概 ...

  2. [NodeJS] 优缺点及适用场景讨论

    概述: NodeJS宣称其目标是“旨在提供一种简单的构建可伸缩网络程序的方法”,那么它的出现是为了解决什么问题呢,它有什么优缺点以及它适用于什么场景呢? 本文就个人使用经验对这些问题进行探讨. 一. ...

  3. emmet,jade,haml, slim,less,sass,coffeescript等的实战优缺点

    摘要: 文章背景,来自于群内周五晚上的一次头脑风暴式的思维碰撞交流活动. 随着前端技术的蓬勃发展, 各种新技术随着生产力的需要不断的涌入我们的视野, 那今天探讨的话题是这些新时代的前端兵器谱: 一. ...

  4. sql server的优缺点

    sql server的优点众多,让其在数据库领域独占鳌头,成为最受欢迎的数据库系统,其优缺点也自然是喜爱者们所关注的,首先了解一下它的历史: sql server是一个关系型数据库管理系统,最初是由M ...

  5. 单页Web应用优缺点

    一.定义单页 Web 应用 (single-page application 简称为 SPA) 是一种特殊的 Web 应用.它将所有的活动局限于一个Web页面中,仅在该Web页面初始化时加载相应的HT ...

  6. 使用iframe的优缺点,为什么少用iframe以及iframe和frame的区别。

    注:HTML5不再支持使用frame,iframe只有src 属性一.使用iframe的优缺点优点:1.程序调入静态页面比较方便;2.页面和程序分离;缺点:1.iframe有不好之处:样式/脚本需要额 ...

  7. 几款主流PHP框架的优缺点评比

    PHP是一种在国内外都比较流行的开源服务器端脚本开发语言.能够适应大中小型项目的开发需求.我们将在这篇文章中向大家介绍几款主流PHP框架及其相关优缺点评比,作为一个参考分享给朋友们. 主要参考的PHP ...

  8. Mvc与WebForm优缺点及Mvc的使用

    关于Mvc与WebForm的优缺点在网上的评论可谓不胜枚举,但脱离了我们的项目来谈这些意义就不大了.以我们这次改版来看,WebForm的优势有以下几点: 一,可以使用<#include>, ...

  9. mysql_建立索引的优缺点 #转自Starzm#

    建立索引的优缺点: 为什么要创建索引呢? 这是因为,创建索引可以大大提高系统的性能.         第一.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性.         第二.可以大大加 ...

  10. AJAX工作原理及其优缺点

    1.什么是AJAX?AJAX全称为"Asynchronous JavaScript and XML"(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.它 ...

随机推荐

  1. Electrical(Harware) Levels: 常用电平LVTTL、LVCMOS、LVDS、CML的标准和区别

    电平: 电压范围, VOH(V. Output High), VOL(V. O. Low), VIH(V. In H.), VIL(V. In L.) Vref: Reference Voltage参 ...

  2. SciTech-BigDataAIML-TensorFlow-Model的Goal目标 + Principle原理 + Design设计 + Compile编译:设置(LossFunction+Optimizer+Metrics)与编译

    model模型 What是什么 社会化大生产角度:Model模型 是"劳动产品", 数字化/数据化时代 自动"炼金机". 社会角度:金钱与价值创造将在一定程度上 ...

  3. NIO复习(1):buffer

    先回顾下NIO中的"三剑客"模型:selector.channel.buffer p.p1 { margin: 0; font: 13px "Helvetica Neue ...

  4. Unity 编辑器UI 杂记

    用 rootVisualElement 方法绘制按钮和用 GUILayout.Button 绘制按钮混用的案例 using System.Collections; using System.Colle ...

  5. AirSim基础使用【Python】

    博客地址:https://www.cnblogs.com/zylyehuo/ 具体效果可以关注博主的小红书,上面有效果视频 起飞与降落 fly_up&down.py import airsim ...

  6. S32K146-CAN fifo接收

    之前项目中,一直用的MB(message buffer)结构和中断方式来接收总线CAN 报文.总线负载率和MCU负载不高的情况下,能够正常接收报文. 总线报文复杂的时候,可以利用CAN-FIFO和硬件 ...

  7. Grafana无法启动修复解决

    本文分享自天翼云开发者社区<Grafana无法启动修复解决>,作者:SummerSnow 一阵紧急的铃声打破了安静的夜晚,某项目的Grafana服务因Mysql漏洞修复导致无法正常启动,当 ...

  8. Java MCP 的鉴权?好简单的啦

    听说 mcp 的鉴权,是件很麻烦的事情?估计是没选好工具. 一.MCP Client 侧(负责传递,比较简单) 在客户端,一般是使用 queryString 或者 header 或者 env(stdi ...

  9. tensorflow如何使用gpu

    https://blog.csdn.net/To_be_little/article/details/124438800 目录1.查看GPU的数量2.设置GPU加速3.单GPU模拟多GPU环境1.查看 ...

  10. 如何通过Python SDK 获取Collection

    本文介绍如何通过Python SDK获取已创建的Collection对象. 说明 通过Collection对象,后续可进行Doc相关操作,如插入Doc.检索Doc.管理Partition等 前提条件 ...