Kiểm tra kiểu tĩnh và động
Kiểm tra kiểu tĩnh kiểm tra các kiểu trước khi chương trình chạy, trong khi kiểm tra kiểu động kiểm tra chúng trong quá trình thực thi; kiểm tra kiểu dần dần tìm cách kết hợp cả hai trong một ngôn ngữ.
Definition
Kiểm tra kiểu tĩnh xác minh các ràng buộc kiểu tại thời điểm biên dịch để các chương trình đúng kiểu được chấp nhận trước khi thực thi; kiểm tra kiểu động trì hoãn việc kiểm tra kiểu đến thời điểm chạy, gây ra lỗi khi các thao tác được áp dụng cho các giá trị có kiểu không phù hợp.
Scope
Chủ đề này bao gồm phạm vi thời điểm và cách thức kiểm tra kiểu diễn ra: kiểm tra tĩnh từ chối các chương trình sai kiểu tại thời điểm biên dịch, kiểm tra động phát hiện lỗi kiểu tại thời điểm chạy, và kiểm tra kiểu dần dần hoặc tùy chọn cho phép cả hai cùng tồn tại. Nó đề cập đến các đảm bảo, tính linh hoạt và ý nghĩa về hiệu suất của từng loại, cùng với tính đúng đắn của quy tắc kiểm tra kiểu.
Core questions
- Những loại lỗi nào mà kiểm tra tĩnh ngăn chặn được mà kiểm tra động không thể ngăn chặn trước?
- Kiểm tra kiểu động mang lại sự linh hoạt nào và phải trả giá bằng gì?
- Làm thế nào kiểm tra kiểu dần dần có thể kết hợp một cách đúng đắn mã có kiểu và không có kiểu?
- Tính đúng đắn của một quy tắc kiểu tĩnh được thiết lập như thế nào?
Key theories
- Kiểm tra kiểu dần dần
- Siek và Taha đã định nghĩa một hệ thống kiểu cho phép các phần của chương trình được kiểm tra kiểu tĩnh và các phần khác được kiểm tra kiểu động, với một mối quan hệ nhất quán chi phối sự tương tác an toàn tại ranh giới.
- Tính đúng đắn của kiểu tĩnh
- Phương pháp tiến trình và bảo toàn của Wright và Felleisen cho thấy rằng một hệ thống kiểu tĩnh đúng đắn đảm bảo các chương trình đúng kiểu không bao giờ đạt đến trạng thái bị kẹt, chính thức hóa sự an toàn của kiểm tra tĩnh.
Clinical relevance
Sự lựa chọn giữa tĩnh và động định hình quy trình làm việc của nhà phát triển, công cụ và độ tin cậy. Các hệ thống kiểm tra kiểu dần dần và tùy chọn, chẳng hạn như những hệ thống được xếp lớp trên các ngôn ngữ động, cho phép các nhóm thêm các đảm bảo tĩnh một cách tăng dần vào các cơ sở mã lớn hiện có.
History
Các ngôn ngữ ban đầu được chia thành các dòng kiểm tra kiểu tĩnh (Algol, Pascal, ML) và kiểm tra kiểu động (Lisp, Smalltalk). Khi các ngôn ngữ động trở nên phổ biến vì năng suất, các nhà nghiên cứu đã tìm cách dung hòa các phương pháp tiếp cận; kiểm tra kiểu dần dần của Siek và Taha năm 2006 và các công trình đồng thời về các kiểu tùy chọn đã dẫn đến các hệ thống kiểm tra kiểu dần dần được sử dụng rộng rãi được xây dựng trên các ngôn ngữ động.
Debates
- Chi phí và tính đúng đắn của kiểm tra kiểu dần dần
- Các nhà nghiên cứu tranh luận liệu kiểm tra kiểu dần dần đúng đắn có thể tránh được chi phí kiểm tra thời gian chạy quá cao tại các ranh giới có kiểu/không có kiểu hay không, và liệu kiểm tra kiểu 'tùy chọn' không đúng đắn có phải là một sự đánh đổi thực tế tốt hơn hay không.
Key figures
- Benjamin Pierce
- Jeremy Siek
- Walid Taha
- Matthias Felleisen
Related topics
Seminal works
- pierce2002
- siek2006
- wright1994
Frequently asked questions
- Kiểm tra kiểu tĩnh có luôn tốt hơn kiểm tra kiểu động không?
- Không có cái nào tốt hơn cái nào một cách phổ biến; kiểm tra kiểu tĩnh phát hiện nhiều lỗi hơn sớm và hỗ trợ công cụ, trong khi kiểm tra kiểu động mang lại sự linh hoạt và tạo mẫu nhanh hơn, vì vậy lựa chọn đúng đắn phụ thuộc vào nhu cầu về độ tin cậy và sự linh hoạt của dự án.
- Kiểm tra kiểu dần dần là gì?
- Kiểm tra kiểu dần dần cho phép một chương trình duy nhất kết hợp các phần được kiểm tra kiểu tĩnh và động, chèn các kiểm tra thời gian chạy tại các ranh giới để mã có kiểu giữ được các đảm bảo của nó trong khi mã không có kiểu vẫn linh hoạt.