"STL" được viết bởi Alexander Stepanov trong những ngày trước khi C ++ được chuẩn hóa. C ++ tồn tại qua những năm 80, nhưng cái mà chúng ta gọi là " C ++ " là ngôn ngữ được tiêu chuẩn hóa trong ISO / IEC 14882: 2014 (và các phiên bản trước đó, chẳng hạn như ISO / IEC 14882: 2011).
STL đã được sử dụng rộng rãi như một thư viện cho C ++, cho phép các lập trình viên truy cập vào các thùng chứa, các trình lặp và thuật toán. Khi tiêu chuẩn hóa xảy ra, ủy ban ngôn ngữ đã thiết kế các phần của Thư viện chuẩn C ++ (là một phần của tiêu chuẩn ngôn ngữ) để rất khớp với STL.
Trong những năm qua, nhiều người - bao gồm các tác giả sách nổi tiếng và các trang web khác nhau - đã tiếp tục gọi Thư viện tiêu chuẩn C ++ là "STL", mặc dù thực tế là hai thực thể riêng biệt và có một số khác biệt. Những khác biệt này thậm chí còn rõ rệt hơn trong tiêu chuẩn C ++ mới sắp ra mắt, bao gồm các tính năng khác nhau và làm thay đổi đáng kể một số lớp.
STL ban đầu thường được gọi là "triển khai Thư viện mẫu tiêu chuẩn C ++" (ngược với lịch sử thực tế!), Giống như cách Microsoft Visual Studio hoặc GCC của bạn triển khai Thư viện chuẩn C ++. Nhưng "Thư viện mẫu tiêu chuẩn" và "Thư viện chuẩn" không giống nhau.
Trận chiến là về việc Thư viện tiêu chuẩn hiện tại nên được gọi là "STL" toàn bộ hay một phần, và / hoặc liệu nó có quan trọng với những gì nó được gọi hay không.
Đối với "STL"
Có một trường phái cho rằng mọi người đều biết rằng "STL" có nghĩa là thư viện chuẩn, giống như mọi người đều biết rằng "C ++" là ngôn ngữ được tiêu chuẩn hóa ISO.
Nó cũng bao gồm những người tin rằng nó không thực sự quan trọng miễn là tất cả các bên hiểu những gì đang được nói đến.
Đó là một thuật ngữ thậm chí còn phổ biến hơn bởi bản chất của quái thú, phần lớn sử dụng tính năng C ++ được gọi là "mẫu".
Đối với "Thư viện chuẩn C ++" (hoặc stdlib)
Tuy nhiên, có một trường phái khác về suy nghĩ - mà tôi đăng ký - nói rằng điều này thật khó hiểu. Những người học C ++ lần đầu tiên không biết sự khác biệt này và có thể không nhận thấy sự khác biệt ngôn ngữ nhỏ.
Tác giả của bài viết đó đã nhiều lần bắt gặp những người tin rằng toàn bộ Thư viện chuẩn C ++ là STL, bao gồm các tính năng không bao giờ là một phần của chính STL. Hầu hết những người đề xướng "STL", ngược lại, biết chính xác ý nghĩa của nó và từ chối tin rằng không phải ai cũng "hiểu". Rõ ràng, thuật ngữ sử dụng không thống nhất.
Ngoài ra, có một số thư viện giống STL trên thực tế là triển khai STL gốc, không phải Thư viện chuẩn C ++. Cho đến gần đây, STLPort là một trong số đó (và thậm chí ở đó, sự nhầm lẫn rất nhiều!).
Hơn nữa, Tiêu chuẩn C ++ không chứa văn bản "STL" ở bất cứ đâu và một số người thường sử dụng các cụm từ như "STL được bao gồm trong Thư viện chuẩn C ++", không rõ ràng.
Tôi tin rằng việc tiếp tục tuyên truyền việc sử dụng thuật ngữ theo cách này sẽ chỉ dẫn đến sự hiểu lầm xảy ra mãi mãi. Than ôi, nó có thể hoàn toàn phản tác dụng khi cố gắng thay đổi mọi thứ, ngay cả khi nó được cho là tốt hơn. Chúng ta có thể chỉ bị mắc kẹt với ý nghĩa kép mãi mãi.
Phần kết luận
Tôi đánh giá cao rằng bài đăng này đã được một chút thiên vị: Tôi đã viết bài viết mà bạn liên kết đến. :) Dù sao, tôi hy vọng điều này sẽ giúp giải thích trận chiến tốt hơn một chút.
Cập nhật ngày 13 tháng 4 năm 2011
Dưới đây là ba ví dụ hoàn hảo về người đang sử dụng "STL" để chỉ toàn bộ Thư viện chuẩn C ++. Nó tiếp tục gây trở ngại cho tôi rằng rất nhiều người thề mù mà không ai từng làm điều này, khi nó đơn giản để nhìn thấy gần như hàng ngày.