对于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,格式,改进的并发和并行执行…
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值