2010-03-15 18 views
8

Điều này có vẻ là một câu hỏi tầm thường, nhưng đó là một câu hỏi khiến tôi lo lắng rất nhiều. Tại sao một số lập trình viên lại đề cập đến "C++/STL" như một ngôn ngữ khác? STL là một phần của thư viện chuẩn C++ - và do đó là một phần của ngôn ngữ, "C++". Nó không phải là một thành phần riêng biệt, và nó không sống một mình trong phạm vi của sự vật C++. Tuy nhiên, một số liên tục hành động như nó là một ngôn ngữ khác nhau hoàn toàn. Tại sao?Tại sao các lập trình viên đôi khi chỉ đến "C++/STL" như một ngôn ngữ riêng biệt?

+3

"một số liên tục hành động như nó là một ngôn ngữ khác nhau" Tôi không tin đây thực sự là động lực, nhưng bạn có thể giải thích điều này là vì C++ là một ngôn ngữ lập trình đa mô hình. Một mô hình (hoặc tập hợp các mô hình) sử dụng các mẫu tiêu chuẩn, một số khác thì không. C++/STL do đó chỉ định một cái gì đó mà cũng có thể là một ngôn ngữ khác nhau từ "C++ \ STL". Ví dụ có C++ - dĩa phong cách như Symbian C++, mà thực sự là ngôn ngữ khác nhau (hoặc là: Tôi nghĩ rằng Symbian là nhiều hơn hoặc ít hơn trong dòng bây giờ mà nó có mẫu thích hợp và STLPort). –

+0

@Steve Jessop: Đặt điều đó vào một câu trả lời để chúng ta có thể upvote nó: P –

+1

Không, đó không phải là câu trả lời bởi vì như tôi nói, tôi không nghĩ đó là lý do tại sao mọi người nói C++/STL. Tôi nghĩ rằng họ có nghĩa là những gì Ignacio nói, "C + +, và tôi muốn bạn biết STL: không phải một số thay thế". Tôi cho rằng tôi có thể thêm họ cũng có nghĩa là "C++, và thực sự biết điều đó, không chỉ thực hiện vài bài giảng đầu tiên của một số khóa học đại học để tìm hiểu cú pháp cơ bản và bỏ qua các bit phức tạp". –

Trả lời

8

Hiểu biết về STL là không cần thiết để hiểu C++. Nó rất hữu ích khi bạn cần ADT, nhưng bạn có thể đi (có thể đã đi?) Thông qua toàn bộ sự nghiệp C++ của bạn mà không cần nó.

+0

+1, có các thư viện tương đương/khác nhau/(tốt hơn?). –

+0

+1 - nhưng tại sao không có C++/Iostream? Bạn có thể không thực sự cần phải hiểu iostreams nhưng không ai đối xử với họ như một ngôn ngữ khác ... –

+0

Điều đó tôi không biết. Có lẽ do kích thước. iostreams là một thủ thuật của quá tải nhà điều hành, nhưng STL là một quả bóng lớn, dính của khoảng hai chục hoặc hơn tiêu đề. –

6

Có lẽ vì STL đến trễ một chút so với trò chơi C++ và nhiều người đã viết mã không sử dụng bất kỳ STL nào. Ví dụ, suy nghĩ lập trình win32 sớm với MFC.

5

Đoán:

Khi C++ được phát hành lần đầu, STL không tồn tại. Nó xuất hiện sau này như là một bổ sung tùy chọn và sau đó được đưa vào tiêu chuẩn.

+1

@SDGator: Bạn không chính xác. "C++ tiêu chuẩn" đầu tiên, C++ 98, bao gồm STL như một phần của thư viện chuẩn. –

+7

Chắc chắn, nhưng C++ đã được khoảng 10 năm trước khi nó được chuẩn hóa. – Gabe

+0

@Gabe và dreamlax: Tôi đã không đề cập đến câu trả lời của Heath, tôi đã đề cập đến một bình luận (nay đã bị xóa) bởi SDGator. Heath hoàn toàn chính xác. –

7

Các câu trả lời trên thực sự tốt; Tôi sẽ chỉ thêm vào nội dung của họ trong một ngữ cảnh rộng hơn.

Nhà phát triển có thể tham khảo ngôn ngữ/api | thư viện, ví dụ: C/Win32, Java/Struts, Java/Spring, C# /. Net MVC vì có hai cơ sở kiến ​​thức cơ bản - kiến ​​thức về ngôn ngữ được đề cập và kiến ​​thức về cách sử dụng thư viện, API hoặc khung công cụ cụ thể đó. Một cái gì đó giống như Win32 là khá lớn, như nói Django, mà tôi hiện đang học. Bản thân Django hoạt động theo một cách rất cụ thể và biết đó là những gì tôi đang học, chứ không phải Python.

Điều tương tự cũng đúng với C++/MFC hoặc C++/Boost hoặc C++/STL. Ngôn ngữ là C++ - API/thư viện bạn đang sử dụng là MFC, Boost hoặc STL.

+0

Nếu đó là một thư viện, tốt hơn, nhưng STL là một phần cốt lõi của ngôn ngữ chính nó, và bằng cách nói C + + bạn đang ngụ ý STL. Nó không phải là thư viện của bên thứ ba. Tôi không thấy Bộ sưu tập Java/Tiêu chuẩn hoặc C#/Generics ở bất kỳ đâu .... –

+1

@BillyONeal: STL không phải là một phần của tiêu chuẩn C++ và nó không phải là phần cốt lõi của ngôn ngữ. – dreamlax

+0

@dreamlax: Vâng, đúng vậy. "C++ tiêu chuẩn" đầu tiên, C++ 98, bao gồm STL như một phần của thư viện chuẩn. C++ 03 là tiêu chuẩn hiện hành, chỉ là C++ 98 với một vài sửa đổi. –

9

Có thể là người lập trình C++ có kinh nghiệm và có kinh nghiệm và không bao giờ sử dụng STL. Bạn có thể sử dụng Boost hoặc ACE, hoặc là một lập trình viên cửa sổ MFC trong 10 năm.

Nếu bạn muốn một người nào đó có kinh nghiệm sử dụng STL, yêu cầu ai đó biết C++ không đảm bảo rằng bạn sẽ nhận được.

Ngoài ra đối với tâm trí của tôi, viết mã phụ thuộc nhiều vào STL cảm thấy rất khác nhau để viết, nói, mã MFC. Họ cũng có thể là ngôn ngữ khác nhau. Họ chắc chắn sẽ không nhìn đặc biệt tương tự.

-1

Khi viết sơ yếu lý lịch, mọi người thường liệt kê C/C++ làm ngôn ngữ, trong nhiều trường hợp có nghĩa là họ cũng không biết.

Thỉnh thoảng hồ sơ sẽ liệt kê "Visual C++" làm ngôn ngữ, cố gắng cho biết họ không biết ngôn ngữ là gì.

Điều này, cùng với báo cáo "tuyệt vời về C++ và PHP", đi thẳng vào thùng rác tại my firm. Không phải vì họ nhất thiết phải là những người lập trình xấu - mà bởi vì chất thải thời gian phỏng vấn không đáng giá.

+2

Có gì sai với những người biết cả C++ và PHP? –

+0

Điều gì là sai đang đề cập đến hai công nghệ phức tạp rất khác nhau trong một câu. –

Các vấn đề liên quan