为什么是标准模板库和泛型设计(1)?

原创 2004年06月29日 13:42:00

如果撇开古典c留下来的语言特征:如函数,数组,结构,指针,c++的每一个
特征,无不让你拍案惊奇:类,继承,多态,模板,异常处理...

而经98年的c++标准出来以来,又出了个标准模板库(STL)。以前,我还不知道标准模板库是用来作什么的。昨天我到同学卢飞哪儿上网狂下有关与c++ STL的有关
文章。总算对它有一点感性的认识。“理论来源于实践“,用这句话观察整个IT界,真是恰当极了。

原来“泛型设计”(generic design)是一种为了软件,组件,源代码能起着“泛型目的”(generic purpose),也就是“通用目的”的一种设计方法。而在程序
设计的领域里,c++中能够支持这种设计的语言特征就是--“模板”(template),

而在c++内部就集成一套c++“标准模板库”(STL)可以让编程者使用,而使用者可以在最大程度上实现软件,源码复用!

哦,难怪有人说:c++之父是为了给程序员一口饭吃,才发明了STL!

我现在有点明白了。试想如果没有模板技术,程序员编的组件,软件,在大程度上不能实现复用,则
程序员本身编的程序,就不能体现最大的价值。则人们就会倾向于使用编译器商提供的可复用的更好的组件,程序员,就会愈来愈懒得写组件了。

到最后,就丧失了这种技能。那么依靠编译器商提供的组件才能编程,这种人以后还能成为程序员吗?

人们就不得不把大量的银子扔进编译器商的口袋,向它购买组件。将来肥了的就是编译器商!

这也许就是c++之父的:“为了给程序员一口饭吃!”的奥秘所在了吧!不知道我说的对不对,反正我现在是这么想了!

--to be continued
2002-9-15
小榕原创

什么是泛型?为什么要用泛型?什么是泛型擦除?泛型擦除的过程?

泛型:本质是参数化类型。 为什么要使用?创建集合的时候,往集合里面添加数据,再次取出时,集合会忘记这数据类型,该对象的编译类型就会变成Object类型,否则如果想要变回原来的数据类型的时候,就要强制...
  • qq_32519097
  • qq_32519097
  • 2016年09月28日 21:59
  • 255

java基础入门-泛型(1)-为什么需要使用泛型?

为什么需要使用泛型? 1.代码复用 2.保证类型安全 3.编程的便利 下面上代码说明代码复用 1)建立一个Animal的父类 package com.ray.test; public class...
  • raylee2007
  • raylee2007
  • 2015年06月03日 11:34
  • 1569

java泛型笔记-为什么泛型类型不能是基本类型

刚刚从java核心技术书中看到了泛型的一些操作,泛型机制有一个重要的概念:擦除(erased) ,在运行时,JVM是没有泛型概念的,也就是说定义一个类 Pair,在运行时只有Paris类,而其中的一些...
  • a15995111a
  • a15995111a
  • 2016年03月14日 15:37
  • 827

【泛型】为什么是泛型?

  • gishuazi
  • gishuazi
  • 2009年05月08日 22:07
  • 330

简单的关于java的伪泛型的一个小例子

Java的泛型,不同于c#的泛型,    c#中的泛型无论在程序的源码中,编译后的IL中,还是在运行前的CLR中都切实存在的, List与List就是两个不同的类型,它们在运行期生成, 有自己的虚方法...
  • u013135520
  • u013135520
  • 2017年01月02日 23:13
  • 451

为什么要使用Java泛型

Java泛型的好处        java 泛型是java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称...
  • kaiyoushiwo007
  • kaiyoushiwo007
  • 2013年11月11日 10:22
  • 4233

泛型是什么?为什么要使用泛型?

我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int型数据,另一个是处理String类型数据,或者其它自定义类型数据,但是我们没有办法,只能分别写多个方法处理每种数据类型,因为方法的...
  • qingmengwuhen1
  • qingmengwuhen1
  • 2016年08月07日 00:06
  • 4770

Java 之伪泛型

在说java泛型之前,们先说说java的 “编译期” ,其实它是一段“不确定” 的操作过程,因为它可能是指前端编译器把*.java文件转变成  *.class文件的过程;也可能是指虚拟机的后端运行期...
  • xuxiaoqun0_0
  • xuxiaoqun0_0
  • 2017年07月05日 08:15
  • 136

C++标准模板库STL算法与自适应容器(栈和队列)

参考《21天学通C++》第23与第24章节,对STL算法与自适应容器进行介绍。 实际上在前面的STL顺序容器、关联容器进行介绍时或多或少引用到了一些STL算法中的模板函数。而自适应容器是在顺序容器的基...
  • LG1259156776
  • LG1259156776
  • 2015年08月06日 13:22
  • 1821

java泛型总结(类型擦除、伪泛型、陷阱)

JDK1.5开始实现了对泛型的支持,但是java对泛型支持的底层实现采用的是类型擦除的方式,这是一种伪泛型。这种实现方式虽然可用但有其缺陷. 《Thinking in Java》的作者 Bruce E...
  • Rainnnbow
  • Rainnnbow
  • 2015年12月24日 10:53
  • 1475
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:为什么是标准模板库和泛型设计(1)?
举报原因:
原因补充:

(最多只允许输入30个字)