Mở trình đơn chính

Lập trình tổng quát (tiếng Anh: generic programming) là một dạng lập trình máy tính mà trong đó thuật toán được viết theo cách kiểu được-xác-định-sau và sau đó được khởi tạo (instantiate) nếu cần cho một kiểu cụ thể mà được cung cấp như tham số. Cách tiếp cận này, được tiên phong bởi ML vào năm 1973,[1][2] cho phép viết các hàm hay kiểu chung mà chỉ khác nhau ở tập các kiểu mà chúng dùng, do vậy giảm thiểu được sự trùng lặp. Các thực thể phần mềm như vậy gọi là generic trong Ada, C#, Delphi, Eiffel, F#, Java, Objective-C, Rust, Swift, và Visual Basic.NET. Chúng còn được gọi là đa hình tham số (parametric polymorphism) trong ML, Scala, Haskell (cộng đồng Haskell cũng sử dụng thuật ngữ "generic" cho khái niệm liên quan nhưng với ý nghĩa hơi khác biệt) và Julia; template trong C++D; và kiểu tham số (parameterized type) trong cuốn sách có nhiều ảnh hưởng năm 1994 Design Patterns.[3]

Xem thêmSửa đổi

Tham khảoSửa đổi

  1. ^ Lee, Kent D. (ngày 15 tháng 12 năm 2008). Programming Languages: An Active Learning Approach. Springer Science & Business Media. tr. 9–10. ISBN 978-0-387-79422-8. 
  2. ^ Milner, R.; Morris, L.; Newey, M. (1975). “A Logic for Computable Functions with Reflexive and Polymorphic Types”. Proceedings of the Conference on Proving and Improving Programs. 
  3. ^ Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1994). Design Patterns. Addison-Wesley. ISBN 0-201-63361-2. 

Trích dẫnSửa đổi

Đọc thêmSửa đổi

  • Gabriel Dos Reis and Jaakko Järvi, What is Generic Programming?, LCSD 2005.
  • Gibbons, Jeremy (2007). Backhouse, R.; Gibbons, J.; Hinze, R. và đồng nghiệp, biên tập. Datatype-generic programming. Spring School on Datatype-Generic Programming 2006. Lecture Notes in Computer Science 4719. Heidelberg: Springer. tr. 1–71.  Đã bỏ qua tham số không rõ |citeseerx= (trợ giúp);
  • Bertrand Meyer. "Genericity vs Inheritance." In OOPSLA (First ACM Conference on Object-Oriented Programming Systems, Languages and Applications), Portland (Oregon), 29 September–ngày 2 tháng 10 năm 1986, pages 391–405.

Liên kết ngoàiSửa đổi

C++/D
C#/.NET
Delphi/Object Pascal
Eiffel
Haskell
Java