Someone brought this article to my attention that claims (I'm paraphrasing) the STL term is misused to refer to the entire C++ Standard Library instead of the parts that were taken from SGI STL.
有人把这篇文章引起了我的注意,声称(我在解释)STL术语被误用来指代整个c++标准库,而不是从SGI STL中提取的部分。
(...) it refers to the "STL", despite the fact that very few people still use the STL (which was designed at SGI).
(……)它指的是“STL”,尽管很少有人使用STL (SGI设计的)。
Parts of the C++ Standard Library were based on parts of the STL, and it is these parts that many people (including several authors and the notoriously error-ridden cplusplus.com) still refer to as "the STL". However, this is inaccurate; indeed, the C++ standard never mentions "STL", and there are content differences between the two.
c++标准库的部分内容是基于STL的部分内容,许多人(包括一些作者和出了名的错误百出的cplusplus.com)仍然将这些部分称为“STL”。然而,这是不准确的;实际上,c++标准从来没有提到“STL”,而且两者之间存在内容差异。
(...) "STL" is rarely used to refer to the bits of the stdlib that happen to be based on the SGI STL. People think it's the entire standard library. It gets put on CVs. And it is misleading.
(…)“STL”很少用于指碰巧基于SGI STL的stdlib的位。人们认为它是整个标准图书馆。它会出现在简历上。这是误导。
I hardly know anything about C++'s history so I can't judge the article's correctness. Should I refrain from using the term STL? Or is this an isolated opinion?
我对c++的历史几乎一无所知,所以我无法判断文章的正确性。我应该避免使用STL这个词吗?或者这只是一个孤立的观点?
5 个解决方案
#1
481
The "STL" was written by Alexander Stepanov in the days long before C++ was standardised. C++ existed through the 80s, but what we now call "C++" is the language standardised in ISO/IEC 14882:2014 (and earlier versions, such as ISO/IEC 14882:2011).
“STL”是Alexander Stepanov在c++标准化之前写的。c++一直存在到80年代,但我们现在所说的“c++”是ISO/IEC 14882:14(以及ISO/IEC 14882:2011)中标准化的语言。
The STL was already widely used as a library for C++, giving programmers access to containers, iterators and algorithms. When the standardisation happened, the language committee designed parts of the C++ Standard Library (which is part of the language standard) to very closely match the STL.
STL已经被广泛用作c++库,程序员可以访问容器、迭代器和算法。当标准化发生时,语言委员会设计了c++标准库的部分(这是语言标准的一部分),以便与STL非常匹配。
Over the years, many people — including prominent book authors, and various websites — have continued to refer to the C++ Standard Library as "the STL", despite the fact that the two entities are separate and that there are some differences. These differences are even more pronounced in the upcoming new C++ standard, which includes various features and significantly alters some classes.
多年来,许多人——包括杰出的图书作者和各种网站——继续将c++标准库称为“STL”,尽管这两个实体是分开的,而且存在一些差异。这些差异在即将推出的c++标准中更为明显,该标准包含各种特性,并且显著地改变了一些类。
The original STL is now often called "an implementation of the C++ Standard Template Library" (rather backwards to actual history!), in the same way that your Microsoft Visual Studio or GCC ships an implementation of the C++ Standard Library. But the "Standard Template Library" and the "Standard Library" are not the same thing.
最初的STL现在通常被称为“c++标准模板库的实现”(更确切地说是实际历史!),就像您的Microsoft Visual Studio或GCC提供c++标准库的实现一样。但是“标准模板库”和“标准库”并不是一回事。
The battle is about whether the current Standard Library should be called "the STL" in whole or in part, and/or whether it matters what it's called.
争论的焦点是,当前的标准库是否应该被全部或部分地称为“STL”,以及/或它的名称是否重要。
For "STL"
“STL”
There is a school of thought that says that everybody knows now that "STL" means the standard library, just as everybody now knows that "C++" is the ISO-standardised language.
有一种观点认为,大家现在都知道“STL”指的是标准库,就像大家现在都知道“c++”是iso标准化语言一样。
It also includes those who believe that it doesn't really matter as long as all parties understand what is being talked about.
它还包括那些认为只要各方都明白正在谈论的是什么,这其实并不重要的人。
It's a term made even more prevalent by the nature of the beast, much of which makes heavy use of the C++ feature known as "templates".
这一术语在《野兽》中更为流行,其中很多都大量使用了c++的“模板”特性。
For "C++ Standard Library" (or stdlib)
“c++标准库”(或stdlib)
However, there is another school of thought — to which I subscribe — that says that this is confusing. People learning C++ for the first time do not know this distinction, and may not notice small language differences.
然而,还有另一种思想流派——我赞同这一学派——认为这是令人困惑的。第一次学习c++的人不知道这种区别,也不会注意到小的语言差异。
The author of that article has numerous times encountered people who believe that the entire C++ Standard Library is the STL, including features that were never part of the STL itself. Most vocal proponents of "the STL", in contrast, know exactly what they mean by it and refuse to believe that not everybody "gets it". Clearly, the term's usage is not uniform.
这篇文章的作者多次遇到这样的人,他们认为整个c++标准库是STL,包括那些从未属于STL本身的特性。相反,大多数“STL”的支持者都清楚自己的意思,拒绝相信不是每个人都“明白”。显然,这个词的用法并不统一。
In addition, there are some STL-like libraries that are in fact implementations of the original STL, not the C++ Standard Library. Until recently, STLPort was one of them (and even there, the confusion abounds!).
此外,有些类STL的库实际上是原始STL的实现,而不是c++标准库。直到最近,STLPort还是其中之一(即使在那里,混乱也随处可见!)
Further, the C++ Standard does not contain the text "STL" anywhere, and some people habitually employ phrases like "the STL is included in the C++ Standard Library", which is plain incorrect.
此外,c++标准在任何地方都不包含“STL”文本,一些人习惯使用“c++标准库中包含了STL”这样的短语,这是完全错误的。
It's my belief that continuing to propagate the usage of the term in this way will just lead to the misunderstanding going on forever. Alas, it may be entirely counter-productive to attempt to change things, even if it's supposed to be for the better. We may just be stuck with double-meanings forever.
我的信念是,继续以这种方式传播这一术语只会导致误解永远持续下去。唉,试图改变事情可能会完全适得其反,即使这是为了更好的结果。我们可能永远都被双重意义困住了。
Conclusion
结论
I appreciate that this post has been a little biased: I wrote the article you linked to. :) Anyway, I hope this helps to explain the battle a bit better.
我很感激这篇文章有一点偏见:我写了你链接的文章。无论如何,我希望这有助于更好地解释这场战役。
Update 13/04/2011
更新13/04/2011
Here are three perfect examples of someone who is using "the STL" to refer to the entire C++ Standard Library. It continues to baffle me that so many people swear blind that nobody ever does this, when it's plain to see almost on a daily basis.
以下是使用“STL”来引用整个c++标准库的三个完美示例。让我困惑的是,如此多的人发誓说没有人会这么做,而事实上几乎每天都能看到。
#2
76
There is no one answer that's really correct. Alexander Stepanov developed a library he called STL (working for HP at the time). That library was then proposed for inclusion in the C++ standard.
没有一个答案是正确的。亚历山大·斯特帕诺夫(Alexander Stepanov)开发了一个名为STL的库(当时为惠普工作)。然后建议将该库包含在c++标准中。
That basically "forked" development. The committee included some parts, rejected others completely, and redesigned a few (with Alexander's participation). Development of the original library was later moved to Silicon Graphics, but continued separately from the C++ standard library.
基本上“分叉”发展。委员会包括一些部分,完全拒绝其他部分,并重新设计了一些(与亚历山大的参与)。最初的库的开发后来被转移到硅图形,但是继续与c++标准库分开。
After those pieces were added to the standard library, some other parts of the standard library were modified to fit better with what was added (e.g., begin
, end
, rbegin
and rend
were added to std::string
so it could be used like a container). Around the same time, most of the library (even pieces that were completely unrelated were made into templates to accommodate different types (e.g., standard streams).
在这些片段被添加到标准库之后,标准库的其他部分被修改以更好地适应所添加的内容(例如,开始、结束、rbegin和rend被添加到std::string中,以便它可以像容器一样使用)。与此同时,大多数库(即使是完全不相关的部分也被做成模板,以适应不同的类型(例如,标准流)。
Some people also use STL as just a short form of "STandard Library".
有些人还将STL作为“标准库”的一种简短形式。
That means when somebody uses the term "STL" they could be referring to any of about half a dozen different things. For better or worse, most people who use it seem to ignore the multiplicity of meanings, and assume that everybody else will recognize what they're referring to. This leads to many misunderstandings, and at least a few serious flame-wars that made most of the participants look foolish because they were simply talking about entirely different things.
这意味着,当有人使用“STL”这个词时,他们可能指的是六种不同事物中的任何一种。不管是好是坏,大多数使用它的人似乎忽视了含义的多样性,并假设其他人都能认识到他们指的是什么。这导致了许多误解,至少有一些严重的火焰之战使大多数参与者看起来很愚蠢,因为他们只是在谈论完全不同的事情。
Unfortunately, the confusion is likely to continue unabated. It's much more convenient to refer to "STL" than something like "the containers, iterators, and algorithms in the C++ standard library, but not including std::string
, even though it can act like a container." Even though "C++ standard library" isn't quite as long and clumsy as that, "STL" is still a lot shorter and simpler still. Until or unless somebody invents terms that are more precise (when necessary), and just as convenient, "STL" will continue to be used and confusion will continue to result.
不幸的是,这种混乱局面可能会持续下去。在c++标准库中,引用“STL”比“容器、迭代器和算法”更方便,但不包括std::string,尽管它可以像容器一样运行。尽管“c++标准库”并没有那么长和笨拙,但是“STL”仍然要短得多,而且更简单。除非或除非有人发明更精确的术语(必要时),而且同样方便,否则“STL”将继续使用,混淆将继续产生。
#3
42
The term "STL" or "Standard Template Library" does not show up anywhere in the ISO 14882 C++ standard. So referring to the C++ standard library as STL is wrong. The term "C++ Standard Library" or "standard library" is what's officially used by ISO 14882:
“STL”或“标准模板库”一词在ISO 14882 c++标准中没有出现。因此,引用c++标准库作为STL是错误的。“c++标准库”或“标准库”是ISO 14882正式使用的术语:
ISO 14882 C++ Standard:
17 - Library introduction [lib.library]:
17 -图书馆简介[图书馆]:
- This clauses describes the contents of the C++ Standard Library, how a well-formed C++ program makes use of the library, and how a conforming implementation may provide the entities in the library.
- 这些子句描述了c++标准库的内容、格式良好的c++程序如何使用该库以及符合标准的实现如何提供库中的实体。
...
…
STL is a library originally designed by Alexander Stepanov, independent of the C++ standard. However, some components of the C++ standard library include STL components like vector
, list
and algorithms like copy
and swap
.
STL是一个库,最初由Alexander Stepanov设计,独立于c++标准。然而,c++标准库的一些组件包括STL组件,如向量、列表和复制和交换算法。
But of course the C++ standard includes much more things outside the STL, so the term "C++ standard library" is more correct (and is what's actually used by the standards documents).
但是,当然,c++标准包含了更多STL之外的内容,所以术语“c++标准库”更加正确(标准文档实际使用的也是这个术语)。
#4
22
I've made this same argument recently, but I believe a little tolerance can be allowed. If Scott Meyers makes the same mistake, you're in good company.
我最近也提出了同样的观点,但我相信,有一点宽容是可以允许的。如果斯科特·迈耶斯犯了同样的错误,那你就是个好公司。
#5
0
From the GNU Standard C++ Library (libstdc++) FAQ:
从GNU标准c++库(libstdc++)常见问题解答:
The STL (Standard Template Library) was the inspiration for large chunks of the C++ Standard Library, but the terms are not interchangeable and they don't mean the same thing. The C++ Standard Library includes lots of things that didn't come from the STL, and some of them aren't even templates, such as std::locale
and std::thread
.
STL(标准模板库)是c++标准库中的大块内容的灵感来源,但是术语不能互换,它们的意思也不一样。c++标准库包含了很多不是来自STL的东西,有些甚至不是模板,比如std::locale和std::thread。
Libstdc++-v3 incorporates a lot of code from the SGI STL (the final merge was from release 3.3). The code in libstdc++ contains many fixes and changes compared to the original SGI code.
Libstdc++-v3包含了大量来自SGI STL的代码(最终的合并来自3.3版本)。libstdc++中的代码与原始的SGI代码相比包含了许多修复和更改。
In particular, string
is not from SGI and makes no use of their "rope" class (although that is included as an optional extension), neither is valarray
nor some others. Classes like vector<>
were from SGI, but have been extensively modified.
特别是,string不是来自SGI,并且不使用它们的“rope”类(尽管它包含在可选扩展中),valarray和其他一些类也不是。向量<>类来自SGI,但已被广泛修改。
More information on the evolution of libstdc++ can be found at the API evolution and backwards compatibility documentation.
关于libstdc++演化的更多信息可以在API演化和向后兼容文档中找到。
The FAQ for SGI's STL is still recommended reading.
SGI的STL的FAQ仍然是推荐阅读的。
FYI, as of March 2018 even the official STL web site www.sgi.com/tech/stl/ is gone.
供大家参考,到2018年3月,甚至连官方的STL网站www.sgi.com/tech/stl/也消失了。
#1
481
The "STL" was written by Alexander Stepanov in the days long before C++ was standardised. C++ existed through the 80s, but what we now call "C++" is the language standardised in ISO/IEC 14882:2014 (and earlier versions, such as ISO/IEC 14882:2011).
“STL”是Alexander Stepanov在c++标准化之前写的。c++一直存在到80年代,但我们现在所说的“c++”是ISO/IEC 14882:14(以及ISO/IEC 14882:2011)中标准化的语言。
The STL was already widely used as a library for C++, giving programmers access to containers, iterators and algorithms. When the standardisation happened, the language committee designed parts of the C++ Standard Library (which is part of the language standard) to very closely match the STL.
STL已经被广泛用作c++库,程序员可以访问容器、迭代器和算法。当标准化发生时,语言委员会设计了c++标准库的部分(这是语言标准的一部分),以便与STL非常匹配。
Over the years, many people — including prominent book authors, and various websites — have continued to refer to the C++ Standard Library as "the STL", despite the fact that the two entities are separate and that there are some differences. These differences are even more pronounced in the upcoming new C++ standard, which includes various features and significantly alters some classes.
多年来,许多人——包括杰出的图书作者和各种网站——继续将c++标准库称为“STL”,尽管这两个实体是分开的,而且存在一些差异。这些差异在即将推出的c++标准中更为明显,该标准包含各种特性,并且显著地改变了一些类。
The original STL is now often called "an implementation of the C++ Standard Template Library" (rather backwards to actual history!), in the same way that your Microsoft Visual Studio or GCC ships an implementation of the C++ Standard Library. But the "Standard Template Library" and the "Standard Library" are not the same thing.
最初的STL现在通常被称为“c++标准模板库的实现”(更确切地说是实际历史!),就像您的Microsoft Visual Studio或GCC提供c++标准库的实现一样。但是“标准模板库”和“标准库”并不是一回事。
The battle is about whether the current Standard Library should be called "the STL" in whole or in part, and/or whether it matters what it's called.
争论的焦点是,当前的标准库是否应该被全部或部分地称为“STL”,以及/或它的名称是否重要。
For "STL"
“STL”
There is a school of thought that says that everybody knows now that "STL" means the standard library, just as everybody now knows that "C++" is the ISO-standardised language.
有一种观点认为,大家现在都知道“STL”指的是标准库,就像大家现在都知道“c++”是iso标准化语言一样。
It also includes those who believe that it doesn't really matter as long as all parties understand what is being talked about.
它还包括那些认为只要各方都明白正在谈论的是什么,这其实并不重要的人。
It's a term made even more prevalent by the nature of the beast, much of which makes heavy use of the C++ feature known as "templates".
这一术语在《野兽》中更为流行,其中很多都大量使用了c++的“模板”特性。
For "C++ Standard Library" (or stdlib)
“c++标准库”(或stdlib)
However, there is another school of thought — to which I subscribe — that says that this is confusing. People learning C++ for the first time do not know this distinction, and may not notice small language differences.
然而,还有另一种思想流派——我赞同这一学派——认为这是令人困惑的。第一次学习c++的人不知道这种区别,也不会注意到小的语言差异。
The author of that article has numerous times encountered people who believe that the entire C++ Standard Library is the STL, including features that were never part of the STL itself. Most vocal proponents of "the STL", in contrast, know exactly what they mean by it and refuse to believe that not everybody "gets it". Clearly, the term's usage is not uniform.
这篇文章的作者多次遇到这样的人,他们认为整个c++标准库是STL,包括那些从未属于STL本身的特性。相反,大多数“STL”的支持者都清楚自己的意思,拒绝相信不是每个人都“明白”。显然,这个词的用法并不统一。
In addition, there are some STL-like libraries that are in fact implementations of the original STL, not the C++ Standard Library. Until recently, STLPort was one of them (and even there, the confusion abounds!).
此外,有些类STL的库实际上是原始STL的实现,而不是c++标准库。直到最近,STLPort还是其中之一(即使在那里,混乱也随处可见!)
Further, the C++ Standard does not contain the text "STL" anywhere, and some people habitually employ phrases like "the STL is included in the C++ Standard Library", which is plain incorrect.
此外,c++标准在任何地方都不包含“STL”文本,一些人习惯使用“c++标准库中包含了STL”这样的短语,这是完全错误的。
It's my belief that continuing to propagate the usage of the term in this way will just lead to the misunderstanding going on forever. Alas, it may be entirely counter-productive to attempt to change things, even if it's supposed to be for the better. We may just be stuck with double-meanings forever.
我的信念是,继续以这种方式传播这一术语只会导致误解永远持续下去。唉,试图改变事情可能会完全适得其反,即使这是为了更好的结果。我们可能永远都被双重意义困住了。
Conclusion
结论
I appreciate that this post has been a little biased: I wrote the article you linked to. :) Anyway, I hope this helps to explain the battle a bit better.
我很感激这篇文章有一点偏见:我写了你链接的文章。无论如何,我希望这有助于更好地解释这场战役。
Update 13/04/2011
更新13/04/2011
Here are three perfect examples of someone who is using "the STL" to refer to the entire C++ Standard Library. It continues to baffle me that so many people swear blind that nobody ever does this, when it's plain to see almost on a daily basis.
以下是使用“STL”来引用整个c++标准库的三个完美示例。让我困惑的是,如此多的人发誓说没有人会这么做,而事实上几乎每天都能看到。
#2
76
There is no one answer that's really correct. Alexander Stepanov developed a library he called STL (working for HP at the time). That library was then proposed for inclusion in the C++ standard.
没有一个答案是正确的。亚历山大·斯特帕诺夫(Alexander Stepanov)开发了一个名为STL的库(当时为惠普工作)。然后建议将该库包含在c++标准中。
That basically "forked" development. The committee included some parts, rejected others completely, and redesigned a few (with Alexander's participation). Development of the original library was later moved to Silicon Graphics, but continued separately from the C++ standard library.
基本上“分叉”发展。委员会包括一些部分,完全拒绝其他部分,并重新设计了一些(与亚历山大的参与)。最初的库的开发后来被转移到硅图形,但是继续与c++标准库分开。
After those pieces were added to the standard library, some other parts of the standard library were modified to fit better with what was added (e.g., begin
, end
, rbegin
and rend
were added to std::string
so it could be used like a container). Around the same time, most of the library (even pieces that were completely unrelated were made into templates to accommodate different types (e.g., standard streams).
在这些片段被添加到标准库之后,标准库的其他部分被修改以更好地适应所添加的内容(例如,开始、结束、rbegin和rend被添加到std::string中,以便它可以像容器一样使用)。与此同时,大多数库(即使是完全不相关的部分也被做成模板,以适应不同的类型(例如,标准流)。
Some people also use STL as just a short form of "STandard Library".
有些人还将STL作为“标准库”的一种简短形式。
That means when somebody uses the term "STL" they could be referring to any of about half a dozen different things. For better or worse, most people who use it seem to ignore the multiplicity of meanings, and assume that everybody else will recognize what they're referring to. This leads to many misunderstandings, and at least a few serious flame-wars that made most of the participants look foolish because they were simply talking about entirely different things.
这意味着,当有人使用“STL”这个词时,他们可能指的是六种不同事物中的任何一种。不管是好是坏,大多数使用它的人似乎忽视了含义的多样性,并假设其他人都能认识到他们指的是什么。这导致了许多误解,至少有一些严重的火焰之战使大多数参与者看起来很愚蠢,因为他们只是在谈论完全不同的事情。
Unfortunately, the confusion is likely to continue unabated. It's much more convenient to refer to "STL" than something like "the containers, iterators, and algorithms in the C++ standard library, but not including std::string
, even though it can act like a container." Even though "C++ standard library" isn't quite as long and clumsy as that, "STL" is still a lot shorter and simpler still. Until or unless somebody invents terms that are more precise (when necessary), and just as convenient, "STL" will continue to be used and confusion will continue to result.
不幸的是,这种混乱局面可能会持续下去。在c++标准库中,引用“STL”比“容器、迭代器和算法”更方便,但不包括std::string,尽管它可以像容器一样运行。尽管“c++标准库”并没有那么长和笨拙,但是“STL”仍然要短得多,而且更简单。除非或除非有人发明更精确的术语(必要时),而且同样方便,否则“STL”将继续使用,混淆将继续产生。
#3
42
The term "STL" or "Standard Template Library" does not show up anywhere in the ISO 14882 C++ standard. So referring to the C++ standard library as STL is wrong. The term "C++ Standard Library" or "standard library" is what's officially used by ISO 14882:
“STL”或“标准模板库”一词在ISO 14882 c++标准中没有出现。因此,引用c++标准库作为STL是错误的。“c++标准库”或“标准库”是ISO 14882正式使用的术语:
ISO 14882 C++ Standard:
17 - Library introduction [lib.library]:
17 -图书馆简介[图书馆]:
- This clauses describes the contents of the C++ Standard Library, how a well-formed C++ program makes use of the library, and how a conforming implementation may provide the entities in the library.
- 这些子句描述了c++标准库的内容、格式良好的c++程序如何使用该库以及符合标准的实现如何提供库中的实体。
...
…
STL is a library originally designed by Alexander Stepanov, independent of the C++ standard. However, some components of the C++ standard library include STL components like vector
, list
and algorithms like copy
and swap
.
STL是一个库,最初由Alexander Stepanov设计,独立于c++标准。然而,c++标准库的一些组件包括STL组件,如向量、列表和复制和交换算法。
But of course the C++ standard includes much more things outside the STL, so the term "C++ standard library" is more correct (and is what's actually used by the standards documents).
但是,当然,c++标准包含了更多STL之外的内容,所以术语“c++标准库”更加正确(标准文档实际使用的也是这个术语)。
#4
22
I've made this same argument recently, but I believe a little tolerance can be allowed. If Scott Meyers makes the same mistake, you're in good company.
我最近也提出了同样的观点,但我相信,有一点宽容是可以允许的。如果斯科特·迈耶斯犯了同样的错误,那你就是个好公司。
#5
0
From the GNU Standard C++ Library (libstdc++) FAQ:
从GNU标准c++库(libstdc++)常见问题解答:
The STL (Standard Template Library) was the inspiration for large chunks of the C++ Standard Library, but the terms are not interchangeable and they don't mean the same thing. The C++ Standard Library includes lots of things that didn't come from the STL, and some of them aren't even templates, such as std::locale
and std::thread
.
STL(标准模板库)是c++标准库中的大块内容的灵感来源,但是术语不能互换,它们的意思也不一样。c++标准库包含了很多不是来自STL的东西,有些甚至不是模板,比如std::locale和std::thread。
Libstdc++-v3 incorporates a lot of code from the SGI STL (the final merge was from release 3.3). The code in libstdc++ contains many fixes and changes compared to the original SGI code.
Libstdc++-v3包含了大量来自SGI STL的代码(最终的合并来自3.3版本)。libstdc++中的代码与原始的SGI代码相比包含了许多修复和更改。
In particular, string
is not from SGI and makes no use of their "rope" class (although that is included as an optional extension), neither is valarray
nor some others. Classes like vector<>
were from SGI, but have been extensively modified.
特别是,string不是来自SGI,并且不使用它们的“rope”类(尽管它包含在可选扩展中),valarray和其他一些类也不是。向量<>类来自SGI,但已被广泛修改。
More information on the evolution of libstdc++ can be found at the API evolution and backwards compatibility documentation.
关于libstdc++演化的更多信息可以在API演化和向后兼容文档中找到。
The FAQ for SGI's STL is still recommended reading.
SGI的STL的FAQ仍然是推荐阅读的。
FYI, as of March 2018 even the official STL web site www.sgi.com/tech/stl/ is gone.
供大家参考,到2018年3月,甚至连官方的STL网站www.sgi.com/tech/stl/也消失了。