C++ 简史
Bjarne Stroustrup 这哥们在剑桥读博的时候,需要实现一个分布式的操作系统。仔细一想,自己在丹麦读大学的时候就用过 Simula,记得它的「类型表达」、「编译排错」能力以及「类」和「协程」特性还挺好用,于是选择 Simula 语言作为工具。
结果他实现的系统慢得飞起,好急。为了能按时毕业,他只好用 BCPL 重写了那个程序,好气。于是这哥们暗下决心,之后要是没有牛逼的工具,他再也不会去处理这种坑爹的问题。这个工具应该:
- 具有 Simula 这种对程序组织的支持——某种形式的类分层结构,对并发的某种支持以及基于类的静态检查。
- 运行得像 BCPL 一样快
- 支持高度可移植实现
毕业之后,牛逼的他来到了牛逼的贝尔实验室。到了公司后,发现有一个需求是要去分析 Unix 内核,然后把它部署在一个局域网上。这时候他面临了两个问题:
- 如何分析因为内核分布造成的网络流量
- 怎么将内核模块化
于是,相信大家也能猜到,伟大的时刻来临了,C++ 要诞生啦(撒花 (^o^)/~)。于是牛逼的他说『我有一个梦想,我的梦想是有一种语言,它带有 「Simula 类」的「Algol 68」』。但他也说,如果要构造以及实际工具,C 还是稍微比 Algol 68 要屌一些。因为在当时:
- C 是灵活的,可以用到当时几乎所有领域
- C 是高效的,程序员可以用 C 语言有效地利用硬件资源
- C 是可用的,当时已有可用的 C 编译系统和标准库,以及一些相关的工具
- C 是可移植的
BS 为了可以像使用 Simula 一样使用 C,让程序员去描述类型。于是采用了 Simula 中的术语 Class 来让 C++ 支持定义类型。
Reference
C++ 简史的更多相关文章
- 【历史】JavaScript和Java没啥关系!————JavaScript简史
文章的开始先上张图: 图片拍摄自北京图书大厦,代表着现在国内应该是绝大部分书店的现状--Javascript书籍放在Java类当中.甚至很多业内人也一直认为Javascript是Java语言在浏览器内 ...
- [计算机、网络相关历史]unix简史
本文2001年由台湾“网络农夫”所写,其人生平不祥,此文受鸟哥大力推崇,两人应该相识.文章写得很不错,应该是查了很多资料整理而成的,美中不足的是好多语句不通顺,国考语文绝对不及格,哈哈. 0.我的准备 ...
- (转)神经网络和深度学习简史(第一部分):从感知机到BP算法
深度|神经网络和深度学习简史(第一部分):从感知机到BP算法 2016-01-23 机器之心 来自Andrey Kurenkov 作者:Andrey Kurenkov 机器之心编译出品 参与:chen ...
- 【转载】ODBC, OLEDB, ADO, ADO.Net的演化简史
原文:ODBC, OLEDB, ADO, ADO.Net的演化简史 1.演变历史 它们是按照这个时间先后的顺序逐步出现的,史前->ODBC->OLEDB->ADO->ADO.N ...
- Python简史
Python简史 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python是我喜欢的语言,简洁,优美,容易使用.前两天,我很激 ...
- Web前端发展简史
Web前端发展简史 有人说“前端开发”是IT界最容易被误解的岗位,这不是空穴来风.如果你还认为前端只是从美工那里拿到切图, JS和CSS一番乱炖,难搞的功能就去网上信手拈来,CtrlC + Ctrl ...
- Python补充04 Python简史
原文:Python简史 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python是我喜欢的语言,简洁,优美,容易使用.前两天, ...
- openstack 网络简史
openstack 网络简史 研究openstack有2个月的时间,这段时间从网上获取N多宝贵资料,对我的学习有非常大帮助,在加上我自己的研究,最终对openstack整个网络体系有了个浅显的认识,写 ...
- NoSQL发展简史、粗略分类及选择
这里对近来看的部分NoSQL资料做一个汇总记录,主要包括简史.粗略分类及数据库选择的考虑事项.NoSQL常见的解释是“non-relational”,有时也称作Not Only SQL. 1. ...
- Javascript高级程序设计——Javascript简史+使用Javascript
一.Javascipt简史 1.了解Javascript历史 Netscape(Javascript1.0).Microsoft(JScript)到JS1.1,再到ECMA-262标准 2.知道ECM ...
随机推荐
- zoom:1的作用
兼容IE6.IE7.IE8浏览器,经常会遇到一些问题,可以使用zoom:1来解决,有如下作用:触发IE浏览器的haslayout解决ie下的浮动,margin重叠等一些问题. 如下使用DIV做一行两列 ...
- 虚拟机学习centos服务器版
虚拟机安装下载教程:http://www.cnblogs.com/CyLee/p/5615322.html centos 6.5下载地址:http://www.centoscn.com/CentosS ...
- Android学习---- 十月
//因为域名去备案了 //PHP的学习想停一下,刚好说什么Java要开始实验课了 //暑假看的Java都生疏了,就想顺便学一下Android,熟悉一下Java的语法也好,顺便学学新东西 //昨天域名备 ...
- bootstrap 混合标签
<html lang="zh_cn"> <head> <meta charset="utf-8"> <meta htt ...
- 64位win7系统中vb工程显示加载MSCOMCTL.OCX失败
MSCOMCTL.OCX明明已经注册成功,但还是提示加载失败,对象未注册 尝试过的方法:system32中注册,syswow64中注册,vb打sp6补丁, 修改工程文件:用记事本打开VBP文件找到这一 ...
- OpenCV备忘
都是转来的内容的,算是整理一下 OpenCV备忘 深度和通道的理解 CV_8UC1 是指一个8位无符号整型单通道矩阵, CV_32FC2是指一个32位浮点型双通道矩阵 CV_8UC1 CV_8SC1 ...
- Java learning notes (1):Basic Knowlege points
Basic Knowlege points: 1: it's necessary that there is only one public class in per .java file 2: .j ...
- 用ES6语法和方式写gulp
安装依赖模块 npm i -g gulp npm i gulp babel-core babel-preset-es2015 --save-dev 在创建文件 .babelrc(文件名) : (文件内 ...
- FaceBook页面加载技术
1. 技术背景 FaceBook页面加载技术 试想这样一个场景,一个经常访问的网站,每次打开它的页面都要要花费6 秒:同时另外一个网站提供了相似的服务,但响应时间只需3 秒,那么你会如何选择呢?数据表 ...
- Makefile.am编写规则
概念 Makefile.am是比Makefile更高层次的规则只需要指定要生成什么目标,依赖于什么文件,和要安装到什么目录.automake会根据Makefile.am来自动生成Makefile.in ...