Làm thế nào để xác định nếu một ngôn ngữ lập trình là dài dòng hay ngắn gọn?


17

Ngôn ngữ lập trình thường có thể được mô tả là dài dòng hoặc ngắn gọn .

Theo hiểu biết của tôi, một ngôn ngữ dài dòng dễ đọc và dễ hiểu, trong khi một ngôn ngữ ngắn gọn súc tích và gọn gàng, nhưng khó đọc hơn. Có nên có những điều khác để xem xét trong các định nghĩa?

Có vẻ như nhiều ngôn ngữ lập trình phổ biến ngày nay là dài dòng, và hai thuật ngữ này chỉ được sử dụng để mô tả một ngôn ngữ là ít nhiều, liên quan đến ngôn ngữ khác.

Làm thế nào để chúng ta xác định nếu một ngôn ngữ lập trình dài hơn / ngắn hơn ngôn ngữ khác?

Ví dụ: C # dài dòng hơn Java?

Câu trả lời:


30

Theo hiểu biết của tôi, một ngôn ngữ dài dòng dễ đọc và dễ hiểu, trong khi một ngôn ngữ ngắn gọn súc tích và gọn gàng, nhưng khó đọc hơn.

Điều này là sai. Verbose có nghĩa là rất nhiều biểu tượng. Terse có nghĩa là ít biểu tượng hơn.

Điều này không có gì để làm với dễ đọc hoặc dễ hiểu.

Một số người tìm thấy COBOL dài dòng dễ đọc, những người khác thấy khó hiểu vì rất nhiều biểu tượng được yêu cầu phải làm rất ít.

Một số người tìm thấy I / J / K và APL ngắn gọn dễ đọc vì chương trình này rất ngắn. Những người khác cảm thấy khó đọc vì các biểu tượng tối nghĩa.

Terse / Verbose không có mối quan hệ với dễ đọc hoặc dễ hiểu.

Có nên có những điều khác để xem xét trong các định nghĩa?

Không. Các định nghĩa của terse và verbose là tốt.

Điều quan trọng là những định nghĩa này không liên quan gì đến "dễ đọc và dễ hiểu"

Có vẻ như nhiều ngôn ngữ lập trình phổ biến ngày nay là dài dòng.

Có thật không?

Làm thế nào để chúng ta xác định nếu một ngôn ngữ lập trình dài hơn / ngắn hơn ngôn ngữ khác?

Đếm mã thông báo để hoàn thành công việc.

Add 2 TO A GIVING B.

7 mã thông báo

b = a + 2;

6 mã thông báo

http://dipedia.reference.com/browse/verbose

http://dipedia.reference.com/browse/terse


5
+1 cho "Terse / Verbose không có mối quan hệ với dễ đọc hoặc dễ hiểu." Tôi luôn nghĩ về ký hiệu toán học, khi được thực hiện đúng cách, nó rất dày đặc nhưng vẫn tương đối dễ đọc.
Frank Shearar

5
@sunpech: Đó là những từ tiếng Anh có nghĩa. "verbose" có nghĩa là rất nhiều từ. "terse" có nghĩa là ít từ hơn. Không có gì để làm với khả năng đọc. Chỉ đơn giản là đếm từ. Tất cả những gì tôi đã làm là thay thế "từ" bằng "mã thông báo". Nó chỉ là tiếng Anh, không có gì đặc biệt.
S.Lott

1
Chúng tôi cũng có thể xem xét độ dài của các mã thông báo. Lisp thông thường có vẻ dài dòng vì rất nhiều từ khóa dài và điều đó cũng làm tăng thêm tính dài dòng của COBOL.
David Thornley

1
@Frank Shearar: Hoàn toàn không đúng sự thật, hãy nghĩ về thời gian học sinh phải học toán. Nó không thể đọc được như nó có thể có được (toán học nghiêm túc) và thậm chí sau 6 năm học trung học, phần lớn vẫn không thể nghiêm túc đọc nó. Không phải là không thể đọc được là một điều xấu! Nhưng nói rằng toán học là một ký hiệu dễ đọc là một nhận xét thiển cận ot nói ít nhất.
David Mulder

2
@DavidMulder: Ký hiệu toán học thay đổi dữ dội, vì vậy tôi nghi ngờ cả hai chúng ta đều phạm tội cường điệu. Chắc chắn bạn coi ký hiệu cho đại số, lý thuyết tập hợp, tính toán cơ bản là minh bạch? Mặt khác, tôi coi ký hiệu trừu tượng của tenor là vô nghĩa không thể đọc được. (Nhưng sau đó, tôi cũng không dành thời gian để học ký hiệu đúng.)
Frank Shearar

6

Làm thế nào để chúng ta xác định nếu một ngôn ngữ lập trình dài hơn / ngắn hơn ngôn ngữ khác?

Bằng cách so sánh các cấu trúc ngôn ngữ tương đương hoặc tương tự, cụ thể cách giải quyết cùng một nhiệm vụ hoặc tương đương trong một ngôn ngữ so với ngôn ngữ khác.

C # dài dòng hơn Java?

Java nói chung dài dòng hơn C #. Sự khác biệt rõ ràng nhất bao gồm các đại biểu và biểu thức lambda, trong đó Java yêu cầu xác định, phân lớp và khởi tạo một giao diện riêng biệt để đạt được những gì có thể được thực hiện bằng cách sử dụng một biểu thức lambda trong C #.


1
Java hiện hỗ trợ các biểu thức lambda với Java 8 ( docs.oracle.com/javase/tutorial/java/javaOO/ gợi )
shanraisshan

1
@shanraisshan: vâng, nó đã tốt hơn theo thời gian, nhưng Java AFAIK vẫn dài dòng hơn một chút. Ví dụ, trong các tài liệu bạn liên kết đến, mã chứa rất nhiều p.getAge()câu lệnh. Trong C #, tôi sẽ tạo một thuộc tính Age, mang lại mức độ đóng gói tương tự như một hàm thành viên getAge, nhưng làm cho nó có thể viết p.Agethay thế.
Doc Brown

1
Ngoài ra, trong khi Java đã được cải thiện, C # vẫn chưa chính xác là mục tiêu tĩnh ... Các tính năng mới vì câu trả lời này như các hàm tạo và async / await cũng phục vụ để cho phép mã C # ngắn hơn tương đương với Java.
Jules

3

Đưa một đoạn mã cho người không lập trình và yêu cầu anh ta / cô ta giải thích đoạn mã đó đang cố gắng làm gì. Nếu bạn nhận được câu trả lời gần nhất, thì đó là dài dòng. nếu bạn nhận được biểu thức WTF thì thật là ngắn gọn.


2

Các biện pháp được gọi là tính biểu cảm của ngôn ngữ. Số liệu điển hình cho việc này là đo các dòng mã hoặc câu lệnh được tiêu chuẩn hóa để thực hiện cùng chức năng.

Một số giá trị từ Wiki - cần bao nhiêu câu lệnh / dòng mã C để thực hiện một chức năng của một câu lệnh / dòng trong:

  • C - câu lệnh: 1 dòng: 1
  • C ++ - câu lệnh: 2,5 dòng: 1
  • Fortran - báo cáo: 2,5 dòng: 0,8
  • Java - các câu lệnh: 2,5 dòng: 1,5
  • Perl - câu lệnh: 6 dòng: 6
  • Smalltalk - báo cáo: 6 dòng: 6.25
  • Python - câu lệnh: 6 dòng: 6.5

Tôi nghĩ rằng một trong những phép đo này cho thấy FORTRAN biểu cảm hơn C bởi một số lề (!) Trong khi các phép đo khác ngược lại trong khi nói rằng C ++ có ý nghĩa tương đương với C (!!) tổng hợp tính hữu ích của "số liệu" đó ".
Jules
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.