Lập trình tổng quát

Mẫu hình lập trình
  • x
  • t
  • s

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++ và 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êm

  • en:Concept (generic programming)
  • en:Partial evaluation
  • en:Template metaprogramming
  • Đa hình (khoa học máy tính)

Tham khảo

  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. |ngày truy cập= cần |url= (trợ giúp)
  3. ^ Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1994). Design Patterns. Addison-Wesley. ISBN 0-201-63361-2.

Trích dẫn

  • Musser, D. R.; Stepanov, A. A. (1989). “Generic programming”. Trong P. Gianni (biên tập). Symbolic and Algebraic Computation: International symposium ISSAC 1988. Lecture Notes in Computer Science. 358. tr. 13–25. doi:10.1007/3-540-51084-2_2. ISBN 978-3-540-51084-0.
  • Stroustrup, Bjarne (2007). Evolving a language in and for the real world: C++ 1991-2006 (PDF). ACM HOPL 2007.
  • Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. ISBN 0-201-63361-2.

Đọc thêm

  • Gabriel Dos Reis and Jaakko Järvi, What is Generic Programming?, LCSD 2005 Lưu trữ 2019-08-28 tại Wayback Machine.
  • Gibbons, Jeremy (2007). Backhouse, R.; Gibbons, J.; Hinze, R.; Jeuring, J. (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. CiteSeerX 10.1.1.159.1228.
  • 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ài

  • generic-programming.org
  • Alexander A. Stepanov, Collected Papers of Alexander A. Stepanov (creator of the STL)
C++/D
  • Walter Bright, Templates Revisited.
  • David Vandevoorde, Nicolai M Josuttis, C++ Templates: The Complete Guide, 2003 Addison-Wesley. ISBN 0-201-73484-2
C#/.NET
  • Jason Clark, "Introducing Generics in the Microsoft CLR," September 2003, MSDN Magazine, Microsoft.
  • Jason Clark, "More on Generics in the Microsoft CLR," October 2003, MSDN Magazine, Microsoft.
  • M. Aamir Maniar, Generics.Net. An open source generics library for C#.
Delphi/Object Pascal
  • Nick Hodges, "Delphi 2009 Reviewers Guide Lưu trữ 2009-02-02 tại Wayback Machine," October 2008, CodeGear Developer Network, CodeGear.
  • Craig Stuntz, "Delphi 2009 Generics and Type Constraints Lưu trữ 2009-01-31 tại Wayback Machine," October 2008
  • Dr. Bob, "Delphi 2009 Generics"
  • Free Pascal: Free Pascal Reference guide Chapter 8: Generics, Michaël Van Canneyt, 2007
  • Delphi for Win32: Generics with Delphi 2009 Win32, Sébastien DOERAENE, 2008
  • Delphi for.NET: Delphi Generics, Felix COLIBRI, 2008
Eiffel
  • Eiffel ISO/ECMA specification document
Haskell
  • Johan Jeuring, Sean Leather, José Pedro Magalhães, and Alexey Rodriguez Yakushev. Libraries for Generic Programming in Haskell[liên kết hỏng]. Utrecht University.
  • Dæv Clarke, Johan Jeuring and Andres Löh, The Generic Haskell user's guide Lưu trữ 2016-03-03 tại Wayback Machine
  • Ralf Hinze, "Generics for the Masses," In Proceedings of the ACM SIGPLAN International Conference on Functional Programming (ICFP), 2004.
  • Simon Peyton Jones, editor, The Haskell 98 Language Report, Revised 2002.
  • Ralf Lämmel và Simon Peyton Jones, "Scrap Your Boilerplate: A Practical Design Pattern for Generic Programming," In Proceedings of the ACM SIGPLAN International Workshop on Types in Language Design and Implementation (TLDI'03), 2003. (Also see the website devoted to this research Lưu trữ 2004-12-07 tại Wayback Machine)
  • Andres Löh, Exploring Generic Haskell Lưu trữ 2005-04-04 tại Wayback Machine, Ph.D. thesis, 2004 Utrecht University. ISBN 90-393-3765-9
  • Generic Haskell: a language for generic programming
Java
  • Gilad Bracha, Generics in the Java Programming Language, 2004.
  • Maurice Naftalin and Philip Wadler, Java Generics and Collections, 2006, O'Reilly Media, Inc. ISBN 0-596-52775-6
  • Peter Sestoft, Java Precisely, Second Edition, 2005 MIT Press. ISBN 0-262-69325-9
  • Bản mẫu:Javadoc:SE-guide, 2004 Sun Microsystems, Inc.
  • Angelika Langer, Java Generics FAQs
  • x
  • t
  • s
Không xác định
Số
  • Độ chính xác tùy ý hay bignum
  • Phức
  • Thập phân
  • Dấu phẩy tĩnh
  • Dấu phẩy động
    • Độ chính xác thấp
      • Minifloat
      • Bán chính xác
      • bfloat16
    • Độ chính xác đơn
    • Độ chính xác kép
    • Độ chính xác bậc bốn
    • Độ chính xác bậc tám
    • Độ chính xác mở rộng
      • Long double
  • Nguyên
    • có dấu và không dấu
  • Khoảng
  • Hữu tỉ
Con trỏ
Văn bản
  • Ký tự
  • Chuỗi
    • kết thúc rỗng
Phức hợp
  • Kiểu dữ liệu đại số
    • tổng quát
  • Mảng
  • Mảng kết hợp
  • Lớp
  • Phụ thuộc
  • Equality
  • Quy nạp
  • Giao
  • Danh sách
  • Đối tượng
    • siêu đối tượng
  • Kiểu tùy chọn
  • Tích
  • Bản ghi hay Struct
  • Refinement
  • Tập hợp
  • Hợp
    • tagged
Khác
  • Boole
  • Kiểu đáy
  • Collection
  • Kiểu liệt kê
  • Ngoại lệ
  • Kiểu hàm
  • Kiểu dữ liệu mờ
  • Kiểu dữ liệu đệ quy
  • Đèn báo
  • Stream
  • Kiểu đỉnh
  • Lớp kiểu
  • Kiểu đơn vị
  • Void
Chủ đề
liên quan
Tiêu đề chuẩn Sửa dữ liệu tại Wikidata
  • BNF: cb15025202q (data)
  • GND: 4431718-9
  • LCCN: sh00000132