Làm thế nào quan trọng là bạn biết tiêu chuẩn C ++?


10

Tôi đã thử tìm kiếm, nhưng tôi không thấy một câu hỏi tương tự (hoặc đó là thuật ngữ tìm kiếm của tôi không chính xác - nếu vậy, hãy thoải mái đóng lại).

Tôi là một người thích sử dụng SO và tôi nhận thấy rằng có rất nhiều tài liệu tham khảo về tiêu chuẩn C ++ trong các cuộc thảo luận và câu trả lời - và tôi phải thừa nhận, tôi chưa bao giờ đọc tài liệu đặc biệt này, ngôn ngữ khiến mắt tôi đau ... , câu hỏi là, một nhà phát triển C ++ có thể thực sự viết mã để kiếm sống mà không cần phải đọc tài liệu này không? Có thực sự quan trọng đối với chúng ta chỉ là những người không phải là người trong lĩnh vực viết trình biên dịch?


Sự tồn tại của các câu hỏi được trả lời với trích dẫn ngắn gọn từ tiêu chuẩn nên có bằng chứng đủ để đọc nó không phải là một điều kiện tiên quyết cho việc sử dụng ngôn ngữ ... (miễn là bạn có một nơi nào để bật khi bạn gặp khó khăn)
Shog9

Câu trả lời:


16

Không - bạn có thể hòa thuận tốt mà không cần nó

Tuy nhiên, bạn sẽ hiểu sâu hơn nhiều nếu bạn dành thời gian để tìm hiểu nó. Có lẽ làm theo các tài liệu tham khảo từ những câu hỏi gây rắc rối cho bạn và học một đoạn nhỏ tại một thời điểm.


8

Nếu bạn muốn tranh luận về ngữ nghĩa và tiêu chuẩn ngôn ngữ, thì tiêu chuẩn là rất quan trọng. (Tôi không có ý này hoàn toàn derogatorily.) Nếu bạn chỉ muốn hoàn thành công việc trong các ngôn ngữ (so với trên các ngôn ngữ), sau đó nó là ít hơn nhiều như vậy.

Tiêu chuẩn có thể tạo một tài liệu tham khảo hợp lý cho thư viện chuẩn (không quá nhiều cho chính ngôn ngữ) một khi bạn cảm thấy thoải mái với nó, nhưng tôi ngần ngại khuyên bạn nên sử dụng nó theo cách đó. Hầu hết mọi người dường như làm tốt hơn với các vật liệu khác. Điều đó nói rằng, tôi chuyển sang tiêu chuẩn thường xuyên hơn không khi tôi cần tìm kiếm một cái gì đó về stdlib.

Tuy nhiên, đọc các bản nháp và giấy tờ của ủy ban là một cách để theo kịp C ++ 0x - trên thực tế, một trong số rất ít cách, hiện tại.

Đối với SO và các diễn đàn khác, tôi ngần ngại trích dẫn tiêu chuẩn trừ khi có vẻ như poster sẽ rõ ràng và chắc chắn có lợi - có lẽ họ đã yêu cầu điều đó hoặc tôi nghĩ họ đang mong đợi điều đó. Trong hầu hết các trường hợp và đặc biệt là với các lập trình viên mới sử dụng C ++, trích dẫn nó thường dường như không giúp được gì nhiều.


Nếu ai đó muốn biết những gì ngôn ngữ nên làm, Tiêu chuẩn là vô giá. Nếu họ muốn biết lý do tại sao trình biên dịch làm một cái gì đó, nó thường rất hữu ích. Đối với các câu hỏi khác, không quá nhiều.
David Thornley

1
@DavidThornley: Thật khó để đánh giá sau một thời gian dài quen với việc đọc tiêu chuẩn, nhưng dường như hầu hết mọi người đều tìm thấy các văn bản như TC ++ PL dễ tiếp cận hơn ngay cả để tìm hiểu ngôn ngữ nên làm gì.
Fred Nurk

1
@Fred Nurk: Hầu như mọi thứ đều dễ tiếp cận hơn so với Tiêu chuẩn. Tôi có nghĩa là để trả lời các câu hỏi về SO và tương tự, và không rõ ràng về nó. Nó thêm một chút thẩm quyền khi mọi người đang trích dẫn cplusplus.com và các nguồn khác.
David Thornley

@DavidThornley: Tôi sẽ hiếm khi trích dẫn các trang web như vậy (đặc biệt là cplusplus.com có ​​quá nhiều vấn đề đối với sở thích của tôi), nhưng đối với hầu hết các áp phích trên SO, chúng cũng có vẻ hữu ích hơn, thậm chí có lỗi, so với tiêu chuẩn - và dễ dàng Thật không may, trực tuyến là một phần lớn của điều đó.
Fred Nurk

@Fred, thật thú vị khi biết, tôi luôn nghĩ rằng cplusplus là một tài liệu tham khảo tốt (nhược điểm là nguồn quảng cáo của họ - rất không phù hợp!), Bây giờ tôi phải nhớ tham khảo chéo với tham chiếu sgi.
Nim

6

Bạn nên có sẵn nó để tham khảo nhưng tôi không nghĩ ai khác ngoài các tác giả của nó đã đọc toàn bộ ... nếu họ thậm chí đã làm (họ làm việc trong các nhóm tập trung vào các lĩnh vực nên tôi nghi ngờ về điều đó).

Lý do bạn nên có sẵn là đôi khi một câu hỏi về tính chính xác của mã chỉ có thể được trả lời bằng cách tham khảo tiêu chuẩn.


3
Trong hầu hết các tình huống bạn không cần nó. Những gì bạn cần được bao gồm trong các cuốn sách khác. Chỉ khi bạn đến những trường hợp góc đó hoặc không bao giờ sử dụng các góc của ngôn ngữ mà bạn cần kiểm tra định nghĩa trong tiêu chuẩn (và thường có một cách khác để sử dụng các trường hợp góc trong ngôn ngữ). Để lại tiêu chuẩn cho các nhà phát triển trình biên dịch và nhà phát triển chung có thể hòa hợp với các văn bản không chính thức khác.
Martin York

2

Có lẽ điều quan trọng hơn là bạn biết tiêu chuẩn ở đâu và biết khi nào nên tìm kiếm mọi thứ.

Nếu không có gì khác, bạn nên kiểm tra định kỳ để đảm bảo rằng bạn đang tuân thủ phiên bản mới nhất và không để mã của bạn bị trôi.


2

Trong một nhóm lớn, bạn thường nên có một người (nhưng thường không còn nữa) biết rõ tiêu chuẩn ít nhất là hợp lý, để họ có thể làm những việc như giải quyết bất kỳ đối số / câu hỏi nào về những điều như liệu mã cụ thể có phù hợp với yêu cầu của tiêu chuẩn hay không.

Tuy nhiên, trên thực tế, những câu trả lời đó cần được tôi luyện bằng phán đoán và kinh nghiệm. Tiêu chuẩn (hiện tại) nói exportlà một từ khóa và cho biết những gì nó làm. Trong thực tế, nó chỉ đơn giản là không hoạt động theo cách đó với hầu hết các trình biên dịch. Tương tự như vậy, trong nhiều trường hợp, nếu bạn có ba người không đồng ý về một số mã cụ thể và tiêu chuẩn có thể nói gì về nó, đó có thể là một dấu hiệu cho thấy mã có thể cần viết lại để đơn giản hơn.

Đồng thời, hầu hết các nhóm sẽ làm việc hầu hết trên một nền tảng và có một tiêu chuẩn (và ai đó ít nhất là quen thuộc với nó) xung quanh để kiểm tra xem những gì bạn đang làm không quá chặt chẽ với nền tảng đó chắc chắn có thể có ích


"Không hơn" có lẽ rất quan trọng - trừ khi bạn muốn tranh luận giữa các chuyên gia về cách diễn giải tiêu chuẩn <g>
Steve314

2

Tôi đã kiếm được bánh mì của mình như một nhà phát triển C ++ trong khoảng 4 năm, mà không cần đọc tiêu chuẩn. Trên thực tế, trong hai năm đầu tiên, tôi thậm chí còn không đọc nhiều hơn C ++ Primer của các bài báo của Stan Lippman và MSDN. Vì vậy, có thể - thực tế tôi sợ rằng hầu hết những người sản xuất mã C ++ thậm chí không đọc các tác phẩm cơ bản như Hiệu quả C ++ và cộng sự. mà bản thân tôi chỉ phát hiện ra sau này

IMHO để trở thành một nhà phát triển C ++ giỏi, người ta phải hiểu logic bên trong của ngôn ngữ (như Scott Meyers lưu ý, C ++ là về 4 ngôn ngữ khác nhau) và các thành ngữ và cạm bẫy phổ biến, và sẵn sàng luôn học hỏi thêm. Đọc các chủ đề trên SO có thể dạy rất nhiều về các trường hợp góc, trong đó đến lượt nó có thể đáng đọc lên các phần có liên quan của tiêu chuẩn, nếu ai đó muốn thực sự đào sâu hơn. Nhưng đọc toàn bộ nó có lẽ hiếm khi cần thiết cho hầu hết chúng ta.


Điểm hay là có những cuốn sách thiết yếu rất cần thiết (đối với hầu hết các lập trình viên không viết trình biên dịch) so với tiêu chuẩn. +1 - nhưng có một số lượng lớn các cuốn sách "thiết yếu".
Steve314

@ Steve314, thực sự - bắt đầu liệt kê chúng sẽ không giúp trả lời câu hỏi cụ thể này. Nhưng tôi đã thêm một liên kết đến các chủ đề có liên quan trên SO bây giờ.
Péter Török

@ Péter - liên lạc tốt đẹp, nhưng quan điểm không rõ ràng của tôi là không có ai trong số những cuốn sách "thiết yếu" là thực sự cần thiết. Hầu hết các lập trình viên C ++ nên đọc một số tiêu đề từ danh sách đó, nhưng tất cả chúng? Không có khả năng. Ngay cả khi bạn đã làm, tôi nghi ngờ bạn thực sự có thể giữ lại tất cả những kiến ​​thức đó. "C ++ hiệu quả" nằm trong danh sách chưa đọc của tôi, vì vậy tôi rõ ràng coi nó là một cuốn sách thiết yếu ít cần thiết hơn.
Steve314

@ Steve314, tôi không có nghĩa là người ta phải đọc tất cả những thứ đó - Tôi cũng không, và một số trong số chúng tôi đã đọc nhưng không ấn tượng bởi :-) Cũng có một số trùng lặp giữa một số trong số này, vì vậy đó là một câu hỏi về sở thích cá nhân và cơ hội mà một nhà phát triển gặp đầu tiên và / hoặc cái nào anh ta gắn nhãn "thiết yếu". Tôi tin rằng điều quan trọng là có một số thành ngữ phổ biến nên theo, và những cạm bẫy phổ biến nên tránh, và người ta nên biết về hầu hết những điều này, và cách ít đau đớn nhất để học những điều này là từ (một số) những cuốn sách này .
Péter Török

Tất nhiên tôi sẽ không thực sự biết làm thế nào quan trọng là nó cho đến khi tôi đọc nó.
Steve314

1

"Biết tiêu chuẩn" là một vấn đề mức độ, và không nhất thiết có nghĩa là ghi nhớ tài liệu gốc.

Một tài liệu tiêu chuẩn được thiết kế để có thẩm quyền - không nhất thiết phải có thể truy cập. Có rất nhiều nguồn loại bỏ một bước dễ tiếp cận hơn nhiều. Đúng, có một chút thì thầm của Trung Quốc trong đó, nhưng nó hiếm khi là một vấn đề lớn - chắc chắn ở cấp độ một bước.

Tiết lộ đầy đủ - Tôi buộc phải nói điều này - Tôi chưa bao giờ đọc tiêu chuẩn. Mặc dù tôi có thể sẽ nỗ lực để có được tài liệu C ++ 0x đầy đủ khi nó được hoàn thành.

EDIT tất nhiên nếu Stroustrup phát hành phiên bản mới của "Ngôn ngữ lập trình C ++", tôi có thể giải quyết vấn đề đó một lần nữa.


1

Khi tôi lập trình trong C ++, tôi thường nhắc đến tiêu chuẩn ngôn ngữ để biết thông tin về các chức năng thư viện tiêu chuẩn. Thư viện chuẩn C ++ khá lớn và tôi thấy tiêu chuẩn ngôn ngữ là nguồn thuận tiện nhất.


1
wow thật sao? Tôi luôn tìm thấy các tài nguyên trực tuyến như cplusplus không thể thiếu theo nghĩa này ...
Nim

1

Tôi có thể đã thề rằng tôi đã trả lời câu hỏi này trước đây, nhưng tôi không thể tìm thấy nó. Về cơ bản, C ++ không giống như Java ở chỗ nó dự định có lỗ hổng trong đặc tả mà các thông số kỹ thuật nền tảng khác có thể lấp đầy (ví dụ POSIX, hoặc đặc tả ABI của kiến ​​trúc hoặc trình biên dịch của bạn). Do đó, khi trả lời các câu hỏi trên các trang web như StackOverflow, thông thường sẽ đưa ra thông số kỹ thuật để chỉ ra rằng chỉ vì một cái gì đó hoạt động trên một trình biên dịch không ngụ ý rằng nó hoạt động ở mọi nơi. Nói cách khác, rất nhiều lý do để tham khảo các thông số kỹ thuật cụ thể khi làm việc với C ++ là để làm rõ chính xác mức độ sử dụng cụ thể của ngôn ngữ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.