Apstrakcija (računarstvo)

(Preusmjereno sa Računarska apstrakcija)

U softverskom inženjerstvu i računarstvu, apstrakcija je:

  • proces uklanjanja fizičkih, prostornih ili vremenskih detalja[1] ili atributa u izučavanju objekata ili sistema da bi se pažnja usmjerila na detalje veće važnosti;[2] slično prirodnom procesu generalizacije;
  • kreiranje objekata apstraknih koncepata oponašanjem zajedničkih karakteristika ili atributa različitih neapstraktnih objekata ili sistema ili studija[2] – rezultat procesa apstrakcije.

Apstrakcija generalno, fundamentalni je koncept u računarstvu i razvoju softvera.[3] Proces apstrakcije može se također definisati kao modeliranje i usko je povezan konceptima teorije i dizajna.[4] Modeli također mogu biti smatrani tipovima apstrakcija zbog njihovih generalizacija aspekata realnosti.

Apstrakcija u računarstvu je usko povezano s apstrakcijom u matematici zbog zajedničkog fokusa na građenju apstrakcija kao objekata,[1] ali je također povezano sa pojmovima apstrakcije korištenim u ostalim poljima kao što je umjetnost.[2]

Apstrakcije se također mogu odnositi na objekte i sisteme iz stvarnog svijeta, na pravila računarskih sistema ili pravila programskih jezika koji nose ili primjenjuju karakteristike same apstrakcije, npr:

  • korištenje tipova podataka za obavljanje podatkovne apstrakcije za odvajanje reprezentacija korištenja od reprezentacije rada podatkovnih struktura unutar programa;[5]
  • koncept procedura, funkcija ili subrutina koje predstavljaju specifikaciju implementacije kontrolnih tokova u programima;
  • pravila zajednički nazvana "apstrakcija" koja generaliziraju izraze korištenjem slobodne i vezane varijable u različitim sistemima lambda računa;[6][7]
  • korištenje S-izraza kao apstraktne podatkovne strukture i programe u Lisp programskom jeziku;[8]
  • proces reorganizacije zajedničkih ponašanja iz neapstraktnih klasa u "apstraktne klase" korištenjem nasljeđivanja za apstrakciju preko podklasa kao što je slučaj kod objektno orijentiranih C++ i Java programskih jezika.

Također pogledajte uredi

Reference uredi

  1. ^ a b Colburn, Timothy; Shute, Gary (5. 6. 2007). "Abstraction in Computer Science". Minds and Machines (jezik: engleski). 17 (2): 169–184. doi:10.1007/s11023-007-9061-7. ISSN 0924-6495.
  2. ^ a b c Kramer, Jeff (1. 4. 2007). "Is abstraction the key to computing?". Communications of the ACM. 50 (4): 36–42. doi:10.1145/1232743.1232745. ISSN 0001-0782.
  3. ^ Ben-Ari, Mordechai (1. 3. 1998). "Constructivism in computer science education". ACM SIGCSE Bulletin. 30 (1): 257, 257–261. doi:10.1145/274790.274308. ISSN 0097-8418.
  4. ^ Comer, D. E.; Gries, David; Mulder, Michael C.; Tucker, Allen; Turner, A. Joe; Young, Paul R. /Denning (1. 1. 1989). "Computing as a discipline". Communications of the ACM. 32 (1): 9–23. doi:10.1145/63238.63239. ISSN 0001-0782.
  5. ^ Liskov, Barbara (1. 5. 1988). "Keynote address – data abstraction and hierarchy". ACM SIGPLAN Notices. ACM. 23: 17–34. doi:10.1145/62138.62141. ISBN 0897912667.
  6. ^ Barendregt, Hendrik Pieter (1984). The lambda calculus : its syntax and semantics (Revised izd.). Amsterdam: North-Holland. ISBN 0444867481. OCLC 10559084.
  7. ^ 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.
  8. ^ Newell, Allen; Simon, Herbert A. (1. 1. 2007). Computer science as empirical inquiry: symbols and search. ACM. str. 1975. doi:10.1145/1283920.1283930. ISBN 9781450310499.