为什么程序员有时会将"C++/STL"称为单独的语言?

Bil*_*eal 8 c++ stl

这看起来似乎是一个微不足道的问题,但最近却让我很烦恼.为什么有些程序员会将"C++/STL"称为不同的语言?STL是C++标准库的一部分 - 因此是语言的一部分,"C++".它不是一个单独的组件,它不是单独存在于C++的范围内.然而,有些人一直表现得像是一种完全不同的语言.为什么?

Spi*_*ike 9

有可能成为一名称职且经验丰富的C++程序员,从不使用STL.您可能正在使用Boost或ACE,或者是MFC Windows程序员已有10年.

如果你想要有经验的人使用STL,那么要求知道C++的人并不能保证你会得到一个.

另外在我看来,编写严重依赖于STL的代码与编写MFC代码感觉非常不同.它们可能也是不同的语言.它们肯定不会特别相似.


Ign*_*ams 8

理解C++不需要理解STL.当你需要ADT时,这很有用,但你可以通过你的整个C++职业去(可能已经离开?)而不需要它.


小智 7

以上答案非常好; 我只会在更广泛的背景下添加内容.

开发人员可能会参考语言/ api |库,例如C/Win32,Java/Struts,Java/Spring,C#/.net MVC,因为本质上有两个知识库 - 有关语言的知识以及如何使用该特定语言的知识库,API或框架.像Win32这样的东西非常庞大,就像我正在学习的Django.Django本身以一种非常特殊的方式工作,知道这就是我正在学习的东西,而不是Python.

C++/MFC或C++/Boost或C++/STL也是如此.语言是C++ - 您使用的API /库是MFC,Boost或STL.

  • 该链接中的狡辩只是STL是SGI发明的东西,其中大部分都被纳入标准中,并进行了一些更改.STL已成为该标准部分的误称.当他们说"C++/STL"意味着"标准C++,以及SGI的STL"时,没有人会这样做.如果不出意外,这样的野兽就不可能存在,因为一些定义在两者之间发生冲突. (3认同)
  • @dreamlax:如果Ninefingers是正确的,而"C++/STL"意味着"语言+库",并且你正确使用STL的正确定义,那么这个术语本身是错误的,因为不可能将标准C++放在一起与"真正的"STL.由于有些人会说"C++/STL",因此我们不能假设它们意味着STL的正确定义.手头的问题是,它们是什么意思? (2认同)

Jus*_*ier 6

可能是因为STL在C++游戏中来得有点晚了,很多人都编写了不使用任何STL的代码.例如,用MFC思考早期的win32编程.


Hea*_*utt 5

猜测:

当C++首次发布时,STL不存在.它后来作为一个可选的添加产生,然后被纳入标准.

  • 当然,但C++在标准化之前已经存在了10年. (7认同)