无人问津的日子里,正是登封造极的好日子.

Alexander Stepanov(后被誉为 STL 标准模板库之父,后简称 Stepanov),1950 年出生与前苏联的莫斯科,他曾在莫斯科大学研究数学,此后一直致力于计算机语言和泛型库研究。

在 20 世纪 70 年代,Stepanov 开始考虑,在保证效率的前提下,是否能将算法从诸多具体应用之中抽象出来?为了验证自己的思想,他和纽约州立大学教授 Deepak Kapur 以及伦塞里尔技术学院教授 David Musser 共同开发了一种叫做 Tecton 的语言,尽管这次尝试没有取得实用性的成果,但却给了 Stepanov 很大的启示。

在随后的几年中,他又和 David Musser 等人先后用 Schema 语言(一种 Lisp 语言的变种)和 Ada 语言建立了一些大型程序库。Stepanov 逐渐意识到,在当时的面向对象程序设计思想中存在一些问题,比如抽象数据类型概念所存在的缺陷,他希望通过对软件领域中各组成部分的分类,逐渐形成一种软件设计的概念性框架。

1987 年,在贝尔实验室工作的 Stepanov 开始首次采用 C++ 语言进行泛型软件库的研究。由于当时的 C++ 语言还没有引入模板的编程技术,泛型库只能是通过 C++ 的继承机制来开发,代码表达起来非常笨拙。

但尽管如此,Stepanov 还是开发出了一个庞大的算法库。与此同时,在与 Andrew Koenig(前 ISO C++ 标准化委员会主席)和 Bjarne Stroustrup(C++ 语言的创始人)等顶级大师们的共事过程中,Stepanov 开始注意到 C/C++ 语言在实现其泛型思想方面所具有的潜在优势。

就拿 C/C++ 中的指针而言,它的灵活与高效运用使后来的 STL 在实现泛型化的同时更是保持了高效率。另外,在 STL 中占据极其重要地位的迭代器概念便是源自于 C/C++ 中原生指针的一般化推广。

1988 年,Stepanov 开始进入惠普的 Palo Alto 实验室工作,在随后的 4 年中,他从事的是有关磁盘驱动器方面的工作。直到 1992 年,由于参加并主持了实验室主任 Bill Worley 所建立的一个有关算法的研究项目,才使他重新回到了泛型化算法的研究工作上来。

项目自建立之后,参与者从最初的 8 人逐渐减少,最后只剩下 Stepanov 和 Meng Lee 两个人。经过长时间的努力,最终完成了一个包含有大量数据结构和算法部件的庞大运行库(HP 版本的 C++ STL),这便是现在 STL 的雏形。

1993 年,当时在贝尔实验室的 Andrew Koenig 看到了 Stepanov 的研究成果,在他的鼓励与帮助下,Stepanov 于 1993 年 9 月在圣何塞为 ANSI/ISO C++ 标准委员会做了一个题为“The Science of C++ Programming” 的演讲,向委员们讲述了其观念。然后又于 1994 年 3 月,在圣迭戈会议上向委员会提交了一份建议书,以期将 STL 通用库纳入 C++ 标准。

尽管这一建议十分庞大,以至于降低了被通过的可能性,但其所包含的新思想吸引了许多人的注意力。随后在众人的帮助之下,包括 Bjame Stroustrup 在内,Stepanov 又对 STL 进行了改进,同时加入了一个封装内存模式信息的抽象模块,也就是现在 STL 中的 allocator(内存分配器),它使 STL 的大部分实现都可以独立于具体的内存模式,从而独立于具体平台。

最终在 1994 年的滑铁卢会议上,委员们通过了提案,决定将 STL 正式纳入 C++ 标准化进程之中,随后 STL 便被放进了会议的工作文件中。自此,STL 终于成为 C++ 家族中的重要一员。

此后,随者 C++ 标准的不断改进,STL 也在不断地做着相应的演化。直至 1998 年,ANSI/ISO C++ 标准正式定案,STL 始终是 C++ 标准库不可或缺的重要组成部分。

C++STL的发展历程相关推荐

  1. C/C++发展历程和标准

    1.C语言发展历程 C语言最初由 Dennis Ritchie 于 1969 年到 1973 年在 AT&T 贝尔实验室里开发出来,主要用于重新实现 Unix 操作系统.此时,C语言又被称为 ...

  2. 走进编程:C++的发展历程

    https://zhuanlan.zhihu.com/p/53360728 走进编程:C++的发展历程 C++编程语言走到今天已经有将近40年的历史了,那么我们今天就来看看这个发展历程,看我们从一代又 ...

  3. 百度PHP高级顾问惠新宸:PHP在百度的发展历程

    惠新宸,百度PHP高级顾问,年二十有八,好追根究底,有不良嗜好, 幸性本善.乙酉年识互联网,丁亥年入雅虎,翌年入百度.虽性好安稳,然经变无数,唯常叹"人生,菠菜汤尔". 大家好,今 ...

  4. vue 发展历程时间轴动画_PPT时间轴如何做出创意感?海量素材免费分享,网友:收藏...

    时间轴页面,是工作型PPT中常见的页面之一.个人述职或者公司介绍PPT中,使用时间轴,能够让观众更加清晰地了解公司的发展历程. 但是,很多人在制作时间轴页面时,往往是这样的效果: 只有几行字和一根线, ...

  5. 7 大主题!梳理神经网络中 Normalization 的发展历程

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本篇文章用于总结近年来神经网络中 Normalization 操作 ...

  6. 5分钟回顾Linux25年的发展历程与变迁

    来自 LinuxQuestions.org 和 Bad Voltage 的 Jeremy Garcia 提供了 Linux 25 年的发展历程.最开始,Linux 作为创作者 Linus Torval ...

  7. JavaScript异步调用的发展历程

    同步与异步 通常,代码是由上而下依次执行的.如果有多个任务,就必须排队,前一个任务完成,后一个任务才能执行.这种连续的执行模式就叫做同步. a(); b(); c(); 复制代码 上面代码中,a.b. ...

  8. GPU的发展历程、未来趋势及研制实践

    来源:文章转载自期刊<微纳电子与智能制造>, 作者:熊庭刚 摘要 凭借GPU强大的计算能力,超级计算机在数据处理.物理模拟.天气预测.现代制药.基因测序.先进制造.人工智能.密码分析等方面 ...

  9. 解析1G到5G技术与设备发展历程

    来源:5G 作者:张国宝:国家发改委原副主任.国家能源局原局长 摘要:解析1G到5G技术与设备发展历程 未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构. 未 ...

最新文章

  1. 直播回顾 | 关于Apollo 5.0控制在环仿真技术的分享
  2. 【activeMQ】一、入门
  3. 运行第一个Docker容器-Docker for Web Developers(1)
  4. 你给我人脉,我给你全世界
  5. 下列哪个不是目前python里的内置模块-python中那些小众但有用的内置模块
  6. 快速排序 python菜鸟教程-C 排序算法
  7. 从零开始学 iOS 开发的15条建议
  8. Dom,JQuery
  9. ARM嵌入式系统中的体系结构
  10. 计算机仿真系统模型有,计算机仿真在光伏发电系统模型中的应用研究原稿(最终定稿)...
  11. What's new in Xcode 8
  12. 软件需求规格说明书,概要设计说明书,详细设计说明书(文档)
  13. 相信我,我们离成为废物阶级不远了!
  14. 史上最全最实用的生活小窍门
  15. 把代码做成笔记——Jupyter Notebook
  16. 哔哩哔哩bilibili自动上传视频脚本-配合爬虫营销号狂喜
  17. Verilog——半加器详解
  18. coolwulf的乳腺癌网站介绍和操作方式
  19. 机房迁移测试时需要注意事项
  20. opencv学习-均值滤波blur

热门文章

  1. 高效工程师系列(三) 持续学习
  2. 技术人员如何写好周报和日报
  3. 程序坞如何在主屏幕和副屏幕中自由切换【Mac分屏】
  4. linux shell alias,Linux shell脚本中使用alias定义的别名
  5. 2023年第五届人工智能与机器学习国际会议(FAIML 2023)
  6. HTTP状态码 ---- 100至600 情况含义
  7. 计算机软件设计专业的英语翻译,关于计算机专业java app设计的毕业设计论文英文英语外文文献翻译成品资料:Java应用程序的高效运行时方面编织(中英文双语对照)(35页)-原创力文档...
  8. [day2]python网络爬虫实战:爬取美女写真图片(增强版)
  9. Java实现PDF模板套打(证书)
  10. android ble蓝牙接收不到数据_Android BLE蓝牙开发-读写数据 获取UUID