栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

对于C++的思考

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

对于C++的思考

前言

本文是Bjarne Stroustrup的HOPL4论文 笔记及拓展(目录) 的起始篇。

C++的理念

C++被设计出来到底是为了回答什么样的问题呢?

  1. 如何直接操纵硬件?
  2. 同时支持高效,高级的抽象?

C++在1980年代仅仅是一个基于C和Simula语言功能的组合,经过多年的发展,C++与其他编程语言的决定性区别有两方面:

  1. 语言结构到硬件设备的直接映射
  2. 零开销抽象

关于零开销抽象是这样被描述的:

  • 你不用的东西,你就不需要付出代价(也称为“没有分布式脂肪”)
  • 你使用的东西,你手动写代码也不会更好

抽象在代码中表示为函数,类,模板,概念和别名。

C++主要是一种工业语言,一种构建系统的工具。对于用户来说,C++不仅仅是一种由规范定义的语言,它是由许多部分组成的工具集的一部分:

  • 语言
  • 标准库
  • 庞大的 常常是旧的 代码库
  • 工具 包括其他语言
  • 教学和培训
  • 社区支持

对于简单的事情简单做,并确保复杂的事情并非不可能或没有必要地难。

年表
  • 1979年:工作始于“带类的C”,它变成了C++,拥有了第一个非研究性用户。
    语言:class,构造函数/析构函数,public/private,简单继承,函数参数类型检查
    :task(协程和仿真),用宏参数化定义的vector
  • 1985年:C++的首次商业发行
    语言:virtual函数,运算符重载,引用,常量
    :complex算法,流输入输出
  • 1989-91年:ANSI和ISO标准化开始
    语言:抽象类,多重继承,异常,模板
    :输入输出流
  • 1998年:C++98,第一个ISOC++标准
    语言:namespace,具名类型转换(非C风格的转换),bool,dynamic_cast
    :STL(容器和算法),string,bitset
  • 2011年:C++11
    语言:内存模型,auto,范围for,constexpr,lambda表达式,用户定义字面量…
    :thread和锁,future,unique_ptr,shared_ptr,array,时间和时钟,随机数,无序容器(哈希表)…
  • 2014年:C++14
    语言:泛型lambda表达式,constexpr函数中的局部变量,数字分隔符…
    :用户自定义字面量…
  • 2017年:C++17
    语言:结构化绑定,变量模板,模板参数化的构造函数推导…
    :文件系统,scoped_lock,shared_mutex(读写锁),any,variant,optional,string_view…
  • 2020年:C++20
    语言:concept,module,协程,三路比较,改进对编译期计算的支持…
    :概念,范围,日期和时区,span,格式,改进的并发和并行执行…
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/346632.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号