Jump to content

Talk:Abstraction (computer science)

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 188.241.40.14 (talk) at 10:46, 16 April 2024 (Old topics). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Abstraction in object oriented programming

Object-oriented languages are commonly claimed to offer data abstraction; however, the inheritance concept tends to put information in the interface that more properly belongs in the implementation; thus, changes to such information ends up impacting client code, leading directly to the fragile base class problem.

[propose a REPLACE of the Animals code with some Object diagram]

I agree with the replace suggestion. IMO many of the computer science articles related to object-orientation do this, they jump into psuedocode or even worse C++ code examples that get into all kinds of hairy etail not all that relevant to the article but they never bother to explain the basic idea. I'm pretty technical, I still program in Java and I've been programming since the 70's and I usually find those examples too detailed and hard to follow. If they are hard for met o follow than they are hard for the vast majority of people who come to these pages. --MadScientistX11 (talk) 14:15, 4 August 2014 (UTC)[reply]

Further Reading

  • Abelson, Harold, Gerald Jay Sussman with Julie Sussman. (1996) ISBN 0262011530 Structure and Interpretation of Computer Programs (Second edition). The MIT Press


[LEAVE this in the abstraction page]

This article needs more inline citations. If people know of references that relate to the topic a far better contribution than putting them in Further Reading is to add them as a reference to the appropriate part of the article. If they AREN'T useful to serve as a reference for any of the article than probably they aren't relevant or important enough to be added to Further Reading in the first place. --MadScientistX11 (talk) 14:17, 4 August 2014 (UTC)[reply]

See also

The opposite of abstraction is instantiation.

This article (or an earlier version of it) contains material from FOLDOC, used with permission. Modify if needed.

169.207.115.74 22:50, 1 Nov 2003 (UTC)


I had a real hard time following your comments 169.207.115.74. I can't tell if you made all those comments or not. I made a recent change to the definition because it seemed to be poorly defined, and I researched it for about two hours online and in my text books. The best I could come up with was the definition found in a textbook used in MIT, which I referenced, and this is the page from that book: http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-10.html.

Your comments about not including a reference to OOP seem to me to be oriented towards optimized for purity at the expense of usefulness. As abstraction is a necessary concept of OOP and OOP has become mainstream, not referencing OOP would be incomplete though the comments about OOP listed above are definitely POV.

While the animal code is not the best, code is helpful and I would recommend it stay or be replaced by better. Adding a diagram could help though.

FWIW MikeSchinkel 11:15, 2 Nov 2003 (UTC)

Layers or Levels of Abstraction

Shouldn't the heading title "Layers of Abtraction" really be "Levels of Abstraction"? If no one objects, I will change it. Montalvo 01:18, 29 November 2005 (UTC)[reply]

The database layers mentioned in the text are not layers of abstraction! —Preceding unsigned comment added by 131.188.36.28 (talk) 14:22, 11 March 2009 (UTC)[reply]

Rationale

What does the use of the word "others" mean in the first sentence? - KitchM (talk) 06:12, 30 August 2009 (UTC)[reply]

No idea. There were/are a bunch silly vague statements in this article. Feel free to fix them. I've fixed some in the lead (see next talk section), but undoubtedly there are more in the body, as you discovered. Pcap ping 19:03, 30 August 2009 (UTC)[reply]

Better Definition

There should be found a better definition than that which is given. It lacks the clarity and simplicity necessary to explain it to the layperson.

One might start with these other definitions: 1. an abstracting or being abstracted; removal 2. formation of an idea, as of the qualities or properties of a thing, by mental separation from particular instances or material objects 3. an idea so formed, or a word or term for it “honesty” and “whiteness” are abstractions 4. an unrealistic or impractical notion

And for "abstract": 1. Considered apart from concrete existence: an abstract concept. 2. Not applied or practical; theoretical. 3. Difficult to understand; abstruse: abstract philosophical problems. 4. Thought of or stated without reference to a specific instance: abstract words like truth and justice.

And yet computing is all about very exacting detail that is applied, practical and concrete.

Perhaps the word "abstraction" within the field of computing may be better defined within the ideas of simple ones and zeros, as well as within the idea of grouping efforts together by finding commonality, and thereby reaching a common point of reference for the definition.

Further, the introduction of the concept should include the reasoning behind using it in the first place within this particular application. - KitchM (talk) 06:35, 30 August 2009 (UTC)[reply]

The intro to this article was even more impenetrable a couple of weeks ago. I've done a little work on it (before you posted the above), which covered some of your suggestions, e.g. finding commonality. Feel free to improve the presentation further. Pcap ping 18:34, 30 August 2009 (UTC)[reply]
Abstraction is much closer related to Polymorphism than what the article makes to believe. As a matter of fact, refactoring towards Polymorphism, quite often would mean the act of doing Abstraction. The article about Polymorphism is much more cleaner, and should be used as the base article. I also do not think there is a need of trying to list all the implementing concepts on a per language basis. They belong maybe on a separate article on how a specific language implements the OOP model as a whole. There is too much too read right now. Jdesmet (talk) 19:27, 4 December 2018 (UTC)[reply]
I think that the scope of this article is currently far too large. I agree with Jdsmet above that listing all of the ways that abstraction can be done is not the proper to build this article as a whole. Perhaps most references to specific ways should be moved to their own articles, and either placed in additional reading, or otherwise have a catagory created that this article simply references to. This article currently depends on defining abstraction by the specific ways that abstraction is done, rather than the core concepts behind it. TheHottestPotato (talk) 10:53, 1 June 2019 (UTC)[reply]
I wonder if the second sentence is correct, it says
(Abstraction is) the process of removing physical, spatial, or temporal details[2] or attributes in the study of objects or systems to focus attention on details of greater importance;[3]
I get it has a reference and I am nobody, but it still strikes me as a subjective point of view since details of very large importance varies with people. If you ask what is important about an object you will get different answers depending on the use case that object is into. So I would say you abstract a real world object into an abstract one to focus your attention on the behaviors and states you are interested in. /end rant Simbioz (talk) 01:06, 7 May 2021 (UTC)[reply]
This sentence does not make much sense to me:
the concept of procedures, functions, or subroutines which represent a specific of implementing control flow in programs;
Simbioz (talk) 02:26, 7 May 2021 (UTC)[reply]

Starting revisions now

This article is currently listed as Start quality while also being of Top' importance. It is for this reason that I will be taking on revisions.

  • I am currently in the process of gathering references. There seems to be literature on treating abstraction as a concept itself, so I'll read those and get back here and edit it.
  • Abstraction is a very fishy term -- there exist different camps (e.g. OOP + functional/type-theorist) which use abstraction differently. For example, the lambda calculus makes use of their abstraction rule to produce terms in the recursive definition of the lambda calculus. Abstraction is also cited as a concept often talked about by the OOP camp.

- Atasato (talk) 21:01, 9 June 2018 (UTC)[reply]

Talking about "abstraction" like it has some special definition throughout computer science is a bad trend in software that misleads new developers. Anyone who finds this page before the math-related one is cursed. Zabublex (talk) 02:25, 19 April 2020 (UTC)[reply]

Data abstraction

Men 2405:201:C001:5B75:A1A1:1938:AB2A:572B (talk) 06:52, 31 December 2022 (UTC)[reply]