2009-10-08 43 views
10

Tôi tình cờ gặp phải 'ngôn ngữ lập trình' danh sách này và thấy rằng các ngôn ngữ phổ biến như Python không được chuẩn hóa? Tại sao vậy, và 'Chuẩn hóa' có nghĩa là gì?Python không phải là ngôn ngữ chuẩn?

Trả lời

29

"chuẩn hóa" có nghĩa là ngôn ngữ có một tiêu chuẩn đã được phê duyệt chính thức, thường được viết bởi ISO hoặc ANSI hoặc ECMA. Nhiều ngôn ngữ nguồn mở hiện đại, như Python, Perl và Ruby, không được chuẩn hóa chính thức bởi cơ thể bên ngoài và thay vào đó có tiêu chuẩn de-facto: bất kể việc triển khai làm việc ban đầu nào.

Lợi ích của việc chuẩn hóa ngôn ngữ là a) bạn biết ngôn ngữ sẽ không thay đổi ngẫu nhiên, b) nếu bạn muốn viết trình biên dịch/thông dịch viên của riêng mình cho ngôn ngữ, bạn có một tài liệu rất rõ ràng cho bạn biết mọi hành vi nên làm gì, thay vì phải tự kiểm tra hành vi đó trong quá trình thực hiện ban đầu. Do đó, các ngôn ngữ chuẩn hóa thay đổi chậm và thường có nhiều triển khai chính.

Ngôn ngữ không thực sự phải được chuẩn hóa để hữu ích. Hầu hết các ngôn ngữ không chuẩn sẽ không tạo ra những thay đổi ngược lại không có lý do gì (và nếu có, chúng mất mười năm để quyết định cách * ho * Perl6 * cough *), và các ngôn ngữ không chuẩn có thể thêm các tính năng thử nghiệm mới nhanh hơn nhiều (và dễ hiểu hơn) so với các ngôn ngữ tiêu chuẩn hóa.

Một vài ngôn ngữ chuẩn:

  • C
  • C++
  • Common Lisp
  • Scheme
  • JavaScript (ECMAScript)
  • C#
  • của Ruby
(?)

ngôn ngữ Nonstandardized:

  • Perl
  • Python
  • PHP
  • Objective-C

Một danh sách đầy đủ là trên Wikipedia.

+4

Câu trả lời hay nhất, lý do duy nhất của tôi là nếu tiêu chuẩn chỉ mơ hồ một chút về một tính năng nhất định, bạn có thể đảm bảo rằng phiên bản Microsoft sẽ sử dụng giải thích tối nghĩa và bất thường nhất định. hợp lý. –

+0

Ruby bây giờ là một ngôn ngữ chuẩn hóa theo tiêu chuẩn ISO/IEC 30170 – harsha

2

Phương tiện được chuẩn hóa tồn tại đặc điểm kỹ thuật cho ngôn ngữ ("chuẩn"). Java, ví dụ, có một đặc điểm kỹ thuật. Perl 5 không (mã nguồn là "chuẩn") nhưng Perl 6 sẽ.

Xem Is there a Python language specification?

3

Có "tiêu chuẩn" và có "tiêu chuẩn".

Hầu hết mọi người chủ yếu có nghĩa là một tiêu chuẩn được thông qua bởi một tổ chức tiêu chuẩn viết: ISO, ECMA, EIA, vv Luật sư gọi các tiêu chuẩn De Jure này. Có sức mạnh của pháp luật.

Hơn nữa, có "Tiêu chuẩn thực tế".

Một số người, cũng đã làm hỏng từ bằng cách thêm "Tiêu chuẩn ngành" hoặc "vendorname tiêu chuẩn".Đây chỉ là tiếng ồn tiếp thị vô nghĩa.

Tiêu chuẩn De Facto là tiêu chuẩn được thực hành (vì mọi người thực hiện và đồng ý họ đang thực hiện theo cách đó) nhưng nó là không phải được một số tổ chức tiêu chuẩn hỗ trợ.

Python có tiêu chuẩn De Facto, không phải là tiêu chuẩn De Jure.

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