• C++ 简史


    Bjarne Stroustrup 在剑桥读博的时候,需要实现一个「分布式的操作系统」。他回忆起自己在丹麦读大学的时候就用过 Simula,认为 Simula 的一些特性比如「类型表达」、「编译排错」能力以及「类」和「协程」都很有吸引力,于是选择 Simula 语言作为工具来实现这个系统。

    结果他实现的系统慢得不能接受,为了能按时毕业,他只好用 BCPL 重写了那个程序。他也在那时暗下决心,之后要是没有顺手的工具,他再也不会去处理类似这种的问题。当然他也对顺手的工具做出了定义,它应该:

    • 具有 Simula 这种对程序组织的支持——某种形式的类分层结构,对并发的某种支持以及基于类的静态检查。
    • 运行得像 BCPL 一样快
    • 支持高度可移植实现

    毕业之后,他来到了贝尔实验室。工作过程中有一个需求是要去分析 Unix 内核,然后把它部署在一个局域网上。这时候他面临了两个问题,一是如何分析因为内核分布造成的网络流量,其次是怎么将内核模块化。

    那时的他也更明确了自己所描述的语言会以什么样的形式诞生,他形容这种语言是『带有 「Simula 类」的「Algol 68」』。但他坦言,如果要构造以及实际工具,C 还是稍微比 Algol 68 要合适一些,因为在当时,C 语言可以用到当时几乎所有领域,同时程序员可以用 C 语言有效地利用硬件资源,并且在当时已有可用的 C 编译系统和标准库,以及一些相关的工具,所以在灵活性,高效性,可用性和可移植性方面,C 语言都当仁不让。这也是为什么 C 成为了 C++ 的母语言。在实现新语言的过程中,BS 最初的需求是:可以像使用 Simula 一样使用 C,让程序员去描述类型。于是他采用了 Simula 中的术语 Class 来让 C++ 支持定义类型。

  • 相关阅读:
    [Python] 项目的配置覆盖与合并
    [PHP] dompdf 使用记录
    Ubuntu16.04 desktop 设置共享文件夹 -- 图形界面配置
    (转)你不得不看的六篇知识图谱落地好文
    转 python2 与 python3 的编码
    (转) C#使用ODP.NET(Oracle.ManagedDataAccess.dll)操作Oracle数据库
    django & celery
    (转) 解决django项目部署到nginx+uwsgi服务器后 admin页面样式消失的问题
    Ubuntu 16.04 安装 SVN-Client (RaabitVCS)
    python 2.7
  • 原文地址:https://www.cnblogs.com/little-bai/p/6021753.html
Copyright © 2020-2023  润新知