Có sự khác biệt giữa loại an toàn và loại âm thanh?


9

Tôi đã cố gắng để trêu chọc các định nghĩa về an toàn loại và âm thanh loại và tôi đang có một thời gian của nó. Tôi đã hỏi một giáo sư gần đây và sau một chút suy nghĩ, anh ấy nói rằng thực sự không có gì khác biệt. Tuy nhiên sau khi đọc này nó có vẻ như:

  • Loại An toàn là một thuộc tính của ngôn ngữ nói rằng việc áp dụng các hàm (và toán tử) cho dữ liệu là có ý nghĩa (nghĩa là 1 / "Xin chào" là vô nghĩa và không được phép)
  • Loại Soundness là một thuộc tính của hệ thống kiểm tra loại đảm bảo rằng các dự đoán loại tĩnh của nó là chính xác trong thời gian chạy.

Đây rõ ràng chỉ là một ghi chú của một người và tôi tự hỏi liệu có một số tiêu chuẩn trong cộng đồng PL. Tôi đã thực hiện một số tìm kiếm và tôi không tìm thấy một câu trả lời thỏa mãn.

Câu trả lời:


13

Loại an toàn và âm thanh loại là từ đồng nghĩa trong hầu hết các công việc lý thuyết. Loại âm thanh thường được xây dựng liên quan đến một ngữ nghĩa hoạt động như bảo tồn và tiến trình (loại). Bảo toàn nói rằng nếu một biểu thức có một số loại, thì sau một bước đánh giá (thông qua ngữ nghĩa hoạt động), biểu thức kết quả có thể được đưa ra cùng loại. Tiến trình tuyên bố rằng nếu một biểu thức không phải là một giá trị, nghĩa là nó không được đánh giá đầy đủ và nó được đánh máy tốt, thì nó có thể được đánh giá thêm.

"An toàn loại" và "âm thanh", nhưng đặc biệt là "an toàn loại", cũng được sử dụng rộng rãi bởi cộng đồng lập trình (phi lý thuyết) thường theo những cách mơ hồ, mơ hồ hoặc hoàn toàn không chính xác. Ví dụ: API sử dụng các kiểu liệt kê thay vì cho phép các chuỗi tùy ý khi chỉ một tập hợp con có ý nghĩa, có thể được gọi là "an toàn hơn loại", nhưng tuyên bố này không có nghĩa khi sử dụng định nghĩa lý thuyết về loại " an toàn "là một thuộc tính nhị phân của ngôn ngữ nói chung.

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.