Có đáng đọc đặc tả ngôn ngữ? [đóng cửa]


18

Tôi tự hỏi liệu có đáng để đọc các đặc tả ngôn ngữ / tài liệu chuẩn (ví dụ: Đặc tả ngôn ngữ Java ) nếu bạn không viết trình biên dịch / trình thông dịch cho ngôn ngữ hoặc một cái gì đó tương tự không? Tôi hiểu rằng đọc một cuốn sách như vậy không nên là ngôn ngữ đầu tiên của bất kỳ ai, nhưng nó có thể là một cách tuyệt vời để tìm hiểu các chi tiết tốt hơn của nó.

Bạn đã bao giờ làm phiền, và những người khác nên?


4
Một đặc tả ngôn ngữ không có nghĩa là được đọc từ trang bìa này sang trang bìa khác, nó chỉ đơn giản là một tài liệu tham khảo.
Mahmoud Hossam

Câu trả lời:


18

Về cơ bản, nó đi đến một câu hỏi khá đơn giản: bạn có muốn có kiến ​​thức chi tiết, có thẩm quyền về ngôn ngữ hay bạn có vui khi biết nó đủ để sử dụng nó không, nhận ra rằng có những phần bạn không biết rõ và hoàn toàn có thể khác những phần bạn không biết chút nào?

Về cơ bản, có một số người dường như được sinh ra là "luật sư ngôn ngữ" - họ sẽ không (không thể) nghỉ ngơi miễn là thậm chí có một vài ngóc ngách trong ngôn ngữ mà họ không biết và / hoặc hiểu. Nhiều trong số này hấp dẫn đối với các ngôn ngữ tương đối đơn giản chỉ vì học các ngôn ngữ phức tạp hơn ở mức độ chi tiết này thường là không thể đối với bất kỳ ai.

Đối với hầu hết các lập trình viên, đó sẽ là một sự lãng phí thời gian hoàn toàn - họ khá hạnh phúc và hiệu quả khi biết đủ ngôn ngữ để có thể sử dụng nó một cách hợp lý. Ngoài ra, họ chỉ đơn giản là không quan tâm. Ngôn ngữ là một công cụ và miễn là họ có thể sử dụng công cụ đó đủ tốt cho mục đích của họ, thực tế là có những thứ khác họ không biết phần lớn không liên quan.


3
+1 cho đoạn cuối. Đó là điều mà hầu hết các lập trình viên nên nhận ra - họ có muốn trở thành một John Skeet (người biết mọi thứ về C # nhưng không biết gì về bất cứ điều gì khác - chẳng hạn như đã thấy anh ta trả lời các câu hỏi SQL) hoặc chỉ là một người dùng nhưng nhiều công nghệ khác mà làm cho thực hành thực tế hơn và cuộc sống thú vị hơn.

2
@ Nghệ thuật phát triển: Nhưng Jon Skeet là thượng đế;)
Anto

1
@sbi: Tôi đồng ý rằng ngôn ngữ (và độ phức tạp của nó) rõ ràng là một yếu tố chính. Kích thước tiêu chuẩn không nhất thiết có nghĩa là rất nhiều mặc dù. Ví dụ, một phần của tiêu chuẩn C ++ bao trùm ngôn ngữ phù hợp chỉ dài ~ 400 trang, trong khi thông số ngôn ngữ Java là ~ 500. Mặc dù tôi không thực sự nghĩ rằng Java gần như là C ++ "đã được dọn sạch" mà một số người tuyên bố, tôi cũng khó tin rằng nó phức tạp hơn 25% so với C ++.
Jerry Coffin

3
@ Nghệ thuật phát triển - một chút khắc nghiệt về Jon Skeet, anh ấy có huy hiệu cho mọi thứ (bao gồm cả SQL!)
SHug

2
@dietbuddha: Tôi chắc chắn không có ý bào chữa cho sự thiếu hiểu biết, nhưng công bằng mà nói, đối với hầu hết mọi người, đó không phải là câu hỏi liệu họ có nên học cái gì đó, hơn là những gì họ nên dành thời gian để học. Điều này sẽ có lợi cho một lập trình viên C ++ hơn: học một thuật toán mới hoặc học các quy tắc chính xác được sử dụng để chọn hàm quá tải nào để gọi cho một tập các tham số đã cho? Hãy nhớ rằng nếu bình thường anh ta có nhiều lý do để quan tâm đến việc được gọi, thì dù sao anh ta cũng có thể lạm dụng quá tải!
Jerry Coffin

12

Không bao giờ

Không bao giờ nên đọc một đặc điểm kỹ thuật ngôn ngữ.

Đó là một sự lãng phí hoàn toàn thời gian.

Các lập trình viên tuyệt vời có thể nhập mã ngẫu nhiên, đặt câu hỏi trên Stack Overflow và sử dụng IDE để cuối cùng viết mã không bị sập thường xuyên.

Đừng lãng phí thời gian để hiểu ngôn ngữ. Chỉ cần tìm một IDE tuyệt vời với tự động hoàn thành tốt. Đặt nhiều câu hỏi SO. Đó là tất cả mọi người cần.


3
Không bao giờ? Ngay cả khi bạn đang viết một trình thông dịch / trình biên dịch?
greyfade

1
Bạn đóng đinh nó! Đó là cách nó hoạt động. ;)
x4u

4
@greyfade: Không bao giờ. Đừng bao giờ tin sự thật. Gắn bó với các giả định.
S.Lott

6
Điều gì tinh tế trong đó?
Aditya P

2
Thành thật tôi không thể biết đây có phải là châm biếm hay không. : P
greyfade

5

Đối với Java, đặc tả ngôn ngữ nhằm đưa ra một câu trả lời xác định cho bất kỳ câu hỏi nào về ý nghĩa của cấu trúc nguồn đã cho. Đọc nó như một người học không được khuyến khích - thay vào đó một giáo viên giỏi chỉ cho bạn tất cả các bẫy và ý nghĩa thực sự của chúng.

Đối với một nhà phát triển có kinh nghiệm, Java Puzzlers thực sự tốt để rèn luyện sự hiểu biết của bạn về các trường hợp góc tối.


2

Câu trả lời chung là: Có nó là giá trị.

Nếu bạn muốn viết mã di động, nó là bắt buộc.

Đối với một số ngôn ngữ, điều đó là không thể tránh khỏi, ví dụ: Ada hoặc perl.

Hơn nữa, nếu bạn không chỉ viết mã mà còn đọc mã từ người khác, cuối cùng bạn sẽ phải tham khảo thông số kỹ thuật.


2

Có lẽ đó chỉ là tôi, nhưng câu hỏi này không có ý nghĩa gì. Hiểu các công cụ bạn sử dụng là dấu hiệu của một chuyên gia. Hiểu biết càng sâu, khả năng sử dụng công cụ của bạn càng tốt. Đối với tôi đó là sự lựa chọn giữa việc trở thành một chuyên gia hoặc một chuyên gia.

Bất cứ khi nào tôi học một ngôn ngữ mới, điều đầu tiên tôi tìm kiếm là thông số kỹ thuật.

Tôi đã đọc thông số kỹ thuật cho ANSI C, C ++, Java, Scheme, Python và Javascript. Tôi đã quên hầu hết các chi tiết C, C ++ và Java chỉ vì tôi không sử dụng các ngôn ngữ đó thường xuyên. Đọc xong thông số kỹ thuật tôi là một lập trình viên giỏi hơn vì tôi biết cách sử dụng ngôn ngữ tốt hơn.


1

Nói chung, có thể hữu ích để hiểu những khoảnh khắc khó khăn nhất định mà bạn gặp phải bây giờ và sau đó.

Nhưng nghiêm túc, nếu thành thạo một ngôn ngữ đòi hỏi bạn phải tự làm quen với đặc tả chi tiết của nó, thì có lẽ ngôn ngữ đó là một điều không may. Tương tự như câu nói phổ biến, nếu bạn cần một tài liệu cho ứng dụng của mình, thì nó được thiết kế kém.


Đây chính xác là lý do tại sao tôi giữ một bản sao ECMA-262 tiện dụng.
greyfade

1

Tôi thấy nó hữu ích khi bạn gặp phải một khoảnh khắc, nhưng tôi thấy thật khó để giữ lại như một bài đọc thẳng. Tuy nhiên, khi tôi đã sử dụng sau khi tôi không hiểu điều gì đó, nó luôn giúp tôi hiểu biết nhiều hơn.


1

Nếu bạn là một lập trình viên cốt lõi trong ngôn ngữ đó, và bạn cần có khả năng vặn vẹo mọi sắc thái tinh tế từ nó, vâng. Có lợi nhuận rõ ràng về đầu tư thời gian của bạn trong trường hợp đó .

Nếu không, không. Nếu bạn không sử dụng kiến ​​thức, chắc chắn nó sẽ không gắn bó với bạn. Thông số kỹ thuật ngôn ngữ là về những điều buồn tẻ nhất có thể tưởng tượng để đọc.


1

Tôi thường không đặt nhiều cổ phiếu trong Tiêu chuẩn. Một thực tế đơn giản là Tiêu chuẩn sẽ không bảo bạn không sử dụng ngoại lệ làm luồng kiểm soát. Nó sẽ không bảo bạn không sử dụng Singletons. Nó sẽ không cho bạn biết cách thiết kế giao diện lớp có thể bảo trì. Nó sẽ không cho bạn biết lý do tại sao ứng dụng của bạn bị sập khi bạn không biết tại sao. Bạn có thể có chương trình được xác định rõ nhất trên thế giới và nó vẫn sẽ rất kinh khủng.

Theo tôi, một thực tế đơn giản là phần lớn thách thức lập trình không phải là làm cho ngôn ngữ làm những gì bạn muốn, mà là biết điều gì là đúng. Miễn là bạn biết các tính năng ngôn ngữ cơ bản, thì đó sẽ là cách sử dụng chúng.


1

Nó chắc chắn đáng đọc nó. Một số ngôn ngữ như C ++ và Java và Python đủ phức tạp để bằng cách đọc thông số ngôn ngữ, bạn sẽ học được rất nhiều về các ngôn ngữ đó và tất cả các cú pháp / cú pháp ngữ nghĩa ưa thích mà chúng có.

Tôi đã từng đọc đặc tả ngôn ngữ Scheme R5RS khi đi xe buýt đến trường đại học vì nó ngắn và gọn và tôi đã học tất cả các cú pháp và tất cả các chức năng cơ bản có sẵn.


0

Một phần của doc.python.org được gắn nhãn "tham chiếu ngôn ngữ" là cực kỳ hữu ích. Chương "mô hình dữ liệu" đặc biệt là như vậy.


0

Tôi nghĩ rằng nếu lập trình bằng ngôn ngữ này là công việc của bạn và bạn muốn thực hiện công việc của mình một cách nghiêm túc, bạn nên đọc đặc tả ngôn ngữ, đặc biệt là khi nó tương đối dễ đọc, nhanh chóng và dễ hiểu như đặc tả ngôn ngữ Java mặc dù nó đã recentlymất rất nhiều đó là sự đơn giản với thuốc generic.

Nhưng nếu bạn có kế hoạch học và cuối cùng thành thạo một ngôn ngữ mới mà bạn chưa biết thì việc đọc đặc tả của ngôn ngữ đó trước khi bạn lãng phí thời gian với ngôn ngữ đó là điều rất sâu sắc. Tôi chắc chắn rằng nếu nhiều nhà phát triển C ++ đã đọc và cố gắng hiểu Hướng dẫn tham khảo được chú thích của C ++ trước khi họ bắt đầu sử dụng thì nhiều người sẽ sợ nó.

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.