C++ STL的发展历程是怎样的?
2年前 (2024-04-27)
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++ 家族中的重要一员。
在 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++ 标准库不可或缺的重要组成部分。
- 随机文章
- 核心危机(核心危机魔石合成攻略)
- 风儿(风儿轻轻的吹)
- 饿了么红包怎么用(饿了么红包怎么用微信支付)
- 儿童教育文章(儿童教育)
- 光遇花手先祖位置(安卓光遇手花先祖)
- 抖音卡(抖音卡顿怎么解决)
- xboxones(xboxone手柄怎么配对主机)
- 兵马俑(兵马俑介绍和历史背景)
- 陈武简历
- 帆船比赛(帆船比赛视频)
- 韩国媳妇和小雪(韩国媳妇和小雪的父亲工资是多少)
- 鬼泣5攻略(鬼泣5攻略第三关怎么跳)
- 地球日主题(2020年世界地球日主题)
- 冰客(冰客果汁)
- 国外成人游戏(国外成人游戏注册需要visa信用卡)
- 拆奶罩
- 东天目山(东天目山景区)
- 杭同(杭同培训中心怎么样)
- 蝙蝠给人类的一封信(蝙蝠给人类的一封信)
- 大松电饭煲(美的大松电饭煲)
- 服饰加盟(服饰加盟店招商)
- 疯狂填字(疯狂填字5)
- 点对点短信息(点对点短信息费是什么意思)
- 观音普门品(观音普门品念诵全文)
- 河北省大运会(河北省大运会时间)
- 哈利波特官网(哈利波特官网在哪里)
- 骇客神条(骇客神条怎么辨别真假)
- 杜星霖(杜星霖图片)
- 查传倜(查传倜个人生活)
- 广州晓港公园(广州晓港公园正门图片)
