Trừu tượng (công nghệ phần mềm)
– John V. Guttag[1]
Trong công nghệ phần mềm và khoa học máy tính, trừu tượng (tiếng Anh: abstraction) là:
- Quá trình loại bỏ hoặc khái quát các chi tiết vật lý, không gian hoặc thời gian[2] hoặc thuộc tính trong nghiên cứu các đối tượng hoặc hệ thống để tập trung vào các chi tiết quan trọng hơn;[3] nó tương tự như quá trình của khái quát;
- Quá trình tạo ra các trừu tượng khái niệm-đối tượng bằng cách phản ánh các đặc điểm hoặc thuộc tính chung của nhiều đối tượng hoặc hệ thống không trừu tượng trong nghiên cứu[3] - kết quả của quá trình trừu tượng hóa.
Trừu tượng, nói chung, là một khái niệm cơ bản trong khoa học máy tính và phát triển phần mềm.[4] Quá trình trừu tượng hóa cũng có thể được gọi là mô hình hóa và có liên quan chặt chẽ với các khái niệm lý thuyết và thiết kế.[5] Mô hình cũng có thể được xem là các loại trừu tượng hóa do chúng khái quát các khía cạnh của thực tế.
Trừu tượng hóa trong khoa học máy tính có liên quan chặt chẽ với trừu tượng hóa trong toán học do cùng tập trung vào việc xây dựng các trừu tượng như các đối tượng,[2] nhưng cũng liên quan đến các khái niệm trừu tượng khác được sử dụng trong các lĩnh vực khác như nghệ thuật.[3]
Các trừu tượng cũng có thể liên quan đến các đối tượng và hệ thống thế giới thực, các quy tắc của hệ thống tính toán hoặc quy tắc của ngôn ngữ lập trình mang hoặc sử dụng các đặc điểm của trừu tượng hóa, chẳng hạn như:
- việc sử dụng kiểu dữ liệu để thực hiện trừu tượng hóa dữ liệu để tách biệt việc sử dụng khỏi các biểu diễn công việc của cấu trúc dữ liệu trong chương trình;[6]
- khái niệm về thủ tục, hàm số hoặc hàm con đại diện cho một cách cụ thể để thực hiện luồng điều khiển trong các chương trình;
- các quy tắc thông thường có tên "trừu tượng" khái quát các biểu thức bằng cách sử dụng biến tự do và biến liên kết trong các phiên bản khác nhau của giải tích lambda;[7][8]
- việc sử dụng S-expressions như một trừu tượng của cấu trúc dữ liệu và chương trình trong ngôn ngữ lập trình Lisp;[9]
- quá trình tái tổ chức hành vi chung từ các lớp không trừu tượng thành các "lớp trừu tượng" bằng cách sử dụng thừa kế để trừu tượng hóa về lớp con như đã thấy trong các ngôn ngữ lập trình đối tượng C++ và Java.
Trừu tượng có thể áp dụng cho kiểm soát hoặc cho dữ liệu: trừu tượng kiểm soát (control abstraction) là trừu tượng của hành động trong khi trừu tượng dữ liệu (data abstraction) là cấu trúc dữ liệu.
Xem thêm
[sửa | sửa mã nguồn]- Nguyên tắc trừu tượng (lập trình máy tính)
- Kiểu dữ liệu trừu tượng
- Thuật toán
- Mô hình hóa dữ liệu
- Đóng gói (lập trình máy tính)
- Hàm thứ bậc cao
- Phép tính lambda
Tham khảo
[sửa | sửa mã nguồn]- ^ Guttag, John V. (ngày 18 tháng 1 năm 2013). Introduction to Computation and Programming Using Python . Cambridge, Massachusetts: The MIT Press. ISBN 9780262519632.
- ^ a b Colburn, Timothy; Shute, Gary (5 tháng 6 năm 2007). “Abstraction in Computer Science”. Minds and Machines (bằng tiếng Anh). 17 (2): 169–184. doi:10.1007/s11023-007-9061-7. ISSN 0924-6495. S2CID 5927969.
- ^ a b c Kramer, Jeff (1 tháng 4 năm 2007). “Is abstraction the key to computing?”. Communications of the ACM. 50 (4): 36–42. doi:10.1145/1232743.1232745. ISSN 0001-0782. S2CID 12481509.
- ^ Ben-Ari, Mordechai (1 tháng 3 năm 1998). “Constructivism in computer science education”. ACM SIGCSE Bulletin. 30 (1): 257, 257–261. doi:10.1145/274790.274308. ISSN 0097-8418.
- ^ Comer, D. E.; Gries, David; Mulder, Michael C.; Tucker, Allen; Turner, A. Joe; Young, Paul R. /Denning (1 tháng 1 năm 1989). “Computing as a discipline”. Communications of the ACM. 32 (1): 9–23. doi:10.1145/63238.63239. ISSN 0001-0782. S2CID 723103.
- ^ Liskov, Barbara (1 tháng 5 năm 1988). “Keynote address – data abstraction and hierarchy”. ACM SIGPLAN Notices. ACM. 23: 17–34. doi:10.1145/62138.62141. ISBN 0897912667. S2CID 14219043.
- ^ Barendregt, Hendrik Pieter (1984). The lambda calculus : its syntax and semantics . Amsterdam: North-Holland. ISBN 0444867481. OCLC 10559084.
- ^ Barendregt, Hendrik Pieter (2013). Lambda calculus with types. Dekkers, Wil., Statman, Richard., Alessi, Fabio., Association for Symbolic Logic. Cambridge, UK: Cambridge University Press. ISBN 9780521766142. OCLC 852197712.
- ^ Newell, Allen; Simon, Herbert A. (1 tháng 1 năm 2007). Computer science as empirical inquiry: symbols and search. ACM. tr. 1975. doi:10.1145/1283920.1283930. ISBN 9781450310499.
Bài viết này dựa trên nguồn lấy từ Từ điển trực tuyến miễn phí về máy tính trước ngày 1 tháng 11 năm 2008 và được hợp nhất theo các điều khoản "cấp lại giấy phép" của GFDL, phiên bản 1.3 hoặc mới hơn.
Đọc thêm
[sửa | sửa mã nguồn]- Harold Abelson; Gerald Jay Sussman; Julie Sussman (ngày 25 tháng 7 năm 1996). Structure and Interpretation of Computer Programs (ấn bản thứ 2). MIT Press. ISBN 978-0-262-01153-2. Bản gốc lưu trữ ngày 26 tháng 2 năm 2009. Truy cập ngày 22 tháng 6 năm 2012.
- Spolsky, Joel (ngày 11 tháng 11 năm 2002). “The Law of Leaky Abstractions”. Joel on Software.
- Abstraction/information hiding - CS211 course, Cornell University.
- Eric S. Roberts (1997). Programming Abstractions in C A Second Course in Computer Science.
- Palermo, Jeffrey (ngày 29 tháng 7 năm 2008). “The Onion Architecture”. Jeffrey Palermo.
Liên kết ngoài
[sửa | sửa mã nguồn]- SimArch example of layered architecture for distributed simulation systems.