Jump to content

Talk:Object-oriented programming: Difference between revisions

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
Content deleted Content added
Truly Object oriented
Undid revision 1258378443 by 182.2.100.90 (talk) rv random drive-by post
 
(628 intermediate revisions by more than 100 users not shown)
Line 1: Line 1:
{{talk header}}
Know nothing about this article or its dicusssions, just saw it on [[List_of_controversial_issues]] and thought that was a bit strange. Should it be there, considering that the controversial issue boilerplate is not here, and this doesn't sound like something controversial either?
{{WikiProject banner shell|class=B|vital=yes|1=
{{WikiProject Computer science |importance=Top}}
{{WikiProject Computing|importance=High|software=y |software-importance=Top |science=y |science-importance=Top}}
{{WikiProject Software|importance=top|computing-importance=high}}
}}
{{findsources|object-oriented}}
{{User:MiszaBot/config
| algo = old(180d)
| archive = Talk:Object-oriented programming/Archive %(counter)d
| counter = 3
| maxarchivesize = 100K
| archiveheader = {{Talk archive navigation}}
| minthreadstoarchive = 2
| minthreadsleft = 4
}}


== Common Lisp ==
[[User:Brianjd|Brianjd]] 06:31, 2004 Jun 19 (UTC)
:Yes, I too am curious for the same reason. [[User:Johnleemk|Johnleemk]] | [[User talk:Johnleemk|Talk]] 13:33, 20 Jun 2004 (UTC)


Common Lisp is NOT a object oriented language.You can do object oriented programming in Common Lisp (it even has its own set of operators for that: the Common Lisp Object System. Or you can write your own), but you don't have to, and most of the time, you won't need the extra garbage. [[Special:Contributions/77.171.29.82|77.171.29.82]] ([[User talk:77.171.29.82|talk]]) 23:59, 15 February 2024 (UTC)
::The page [[List of controversial issues]] refers to ''past'' controversial issues. Read this talk page to find out just how controversial OOP has become! ''Anonymous''


:I'm a bit confused. The argument I see here is that because one can avoid doing object oriented programming in Common Lisp, Common Lisp is not object oriented. But that applies to many languages, e.g. C++ can be used procedurally (in its C subset). There is a term in the article "pure OO languages" which is defined as languages where everything is treated consistently as an object, which clearly Common Lisp and C++ do not satisfy. But the general concepts of OO seem present in CLOS. [[User:Mathnerd314159|Mathnerd314159]] ([[User talk:Mathnerd314159|talk]]) 01:18, 16 February 2024 (UTC)
----
I would like to rename this to [[object theory]]. I understand object-oriented programming is the most common term and nearly no one uses a word like object theory instead of it. But the trouble with the current title is OOP is a POV'd term. The situation is similar to that in socialism or communism. The majority of people claim class, inheritance and encapslation are foundamental aspects of OOP but some argue inheritance is not always necessary, for instance. It doesn't matter who is right. The fact is there are disputes regarding the definition of object-oriented programming. So it would be troublesome with the current name as some claim inheritance is an aspect of class-based OOP then the article sholdn't cover, while some say inheritance is a foundamental of OOP and there is no reason that the article doesn't cover it. I don't think such debate would be settled. The benefit of the title [[object theory]] is it is more abstract term. It can discuss languages before object-oriented programming. Ada8 something supports objects but is usually considered not OOP. Then where we should discuss such? A separate article? The title object theory implies it is about programming aspect regarding objects. It is a broader term that can contain class-based OOP, object-based programming and so on. [[Subprogram]] is an good example. People hardly uses a term subprogram over subroutines or functions. But in encyclopedia, use of such an abstract term is preferable because if the article named function, it implies a subprogram should be a function like in math, which is not the case. If named subroutine, it tends to emphasizes a behavior as side-effect and it makes hard to talk about function in functional languages. OOP is a similar case.


:But all values in Common Lisp are objects and instances of some class. See for example the [https://www.lispworks.com/documentation/HyperSpec/Body/t_intege.htm integer class]. You do not have to write your own classes, still, and you can use normal functions instead of generic functions. But all classes (including structure classes made by defstruct) can be dispatched on by generic functions. I find using classes and generic functions in Common Lisp is useful and not garbage, and certainly people do use those features of CLOS, but "the extra garbage" would not be starting that discussion on the right foot. [[Special:Contributions/150.203.65.55|150.203.65.55]] ([[User talk:150.203.65.55|talk]]) 11:16, 19 March 2024 (UTC)
And as usual, if I don't see an object, I will go ahead. -- [[User:TakuyaMurata|Taku]] 13:44 23 May 2003 (UTC)


== We could write this more simply ==
If you want a separate article called [[object theory]] that explains differnet methods of using objects in programming languages then fine. But the aspects of the OO paradigm discussed in this article (abstraction, encapsulation, polymorphism and inheritance) is a vast subject that deserves a least a whole page devoted to it. What you have us call it? OOP is the universally understood term used for these concepts. [[User:Mintguy|Mintguy]] 14:01 23 May 2003 (UTC)


I'm taking an entry-level computer class and I can't make heads or tails of this article. Procedural programming seems simple but I don't know what the teacher means by "objects". [[Special:Contributions/136.223.34.54|136.223.34.54]] ([[User talk:136.223.34.54|talk]]) 15:19, 15 April 2024 (UTC)
:Please don't use the current content as an excuse. I want to rename first because otherwise, people will claim it is not OOP. Certainly we want to discuss what is OOP? But the more important is, history of OOP, point of views, variants, and so on. They are certainly beyond an article named object-oriented programming. Again, oftentimes, broader term serves well in encyclopedia. I showed an example above. -- [[User:TakuyaMurata|Taku]] 15:11 23 May 2003 (UTC)


:OOP is complex and vague - it is hard to discuss it concisely. I think the article structure is about as good as it gets. But you are right that the "objects" section does not define objects, I have added a definition. [[User:Mathnerd314159|Mathnerd314159]] ([[User talk:Mathnerd314159|talk]]) 21:43, 15 April 2024 (UTC)
I happen to disagree with your choice of the word subprogram, in all my 25 years experience of being a programmer I can't recall anyone ever using the term subprogram for subroutine, function or procedure or method. However those four words that that you've grouped under subprogram do have different meanings to different people, usually depending on what language you are talking about. i.e. C programmers talk about functions when they mean procedures. I personally think subroutine is a better word because it is one that is in common usage and I beleive it has a longer history than the other words. But that is another issue.
::انا اول مره [[Special:Contributions/185.133.180.19|185.133.180.19]] ([[User talk:185.133.180.19|talk]]) 12:43, 17 April 2024 (UTC)
:@[[User:136.223.34.54|136.223.34.54]] i agree. this article is written poorly. OOP Is not a complex and vague topic as other says. people make it more complicated than it is. [[User:Stevebroshar|Stevebroshar]] ([[User talk:Stevebroshar|talk]]) 01:07, 25 October 2024 (UTC)
::That is a problem with WP. Perhaps articles are written by subject experts who are used to talking with other subject experts and put things in terms that others can't understand.
::Or maybe it is that so many make amendments it becomes an unintelligible mess, like C++.
::Or maybe it is because of things like C++ and UML that OO itself has become this mess that it should not be. [[User:Ian.joyner|Ian.joyner]] ([[User talk:Ian.joyner|talk]]) 07:27, 25 October 2024 (UTC)
:OOP helps organise projects, but in a disciplined and mathematical way. You should read [[Object-Oriented Software Construction]]. This is true and clean OO, but not one that simplifies the most sophisticated aspects of OO or programming.
:An object, in itself is a self-contained computer that handles one kind of data. Objects interact via messages.
:Don't get misled by horrors such as C++ or UML. [[User:Ian.joyner|Ian.joyner]] ([[User talk:Ian.joyner|talk]]) 07:21, 25 October 2024 (UTC)


== Criticism section no longer present? ==
Why don't we try to resolve this issue sensibly. Why don't you start writng an article about [[object theory]] and we'll see needs to be merged in from OOP? [[User:Mintguy|Mintguy]] 15:21 23 May 2003 (UTC)


In the 'Real-world modeling and relationships' section, a 'criticism' section is referenced. This seems to be no longer present. [[User:BartYgor|BartYgor]] ([[User talk:BartYgor|talk]]) 07:19, 3 May 2024 (UTC)
:About subprogram. That is exactly my point. There are a lot of concepts related to subroutine, function, procedure and methods. But we don't want to have a separate article for each one. What I am trying to do here is the same thing. Because for programmers, the difference is a huge matter, but for general audience, they want to know more about what is happening in cs. We don't want to teach them OOP should be bah bah bah. That is a difference seen in articles of wikipedia and textbooks. Because most of textbooks or websites have a POV such as OOP should be. Yeah, I can start certainly I can start an article called object theory but the trouble is we need to make sure history is combined. What about renaming this first, add more about object-based OOP and difference between class-based and object-based and then decide what name should be given or without renaming, start adding such point. This is just a chiken and egg problem. I don't care which one is first. -- [[User:TakuyaMurata|Taku]] 16:17 23 May 2003 (UTC)


:Good catch, indeed the criticism was added to the section (the Yegge quotes). [[User:Mathnerd314159|Mathnerd314159]] ([[User talk:Mathnerd314159|talk]]) 14:26, 3 May 2024 (UTC)
But why choose a word that no-one uses. That makes no sense whatsoever. I wouldn't expect to find an article about [[fishing]] under [[fish hunting]]. To the best of my knowledge, few people if any use the word subprogram to mean a subroutine or procedure. Subroutine is a word that assembler programmers generally use and it makes no assumption about whether there is a return value of side effect, or whether it is a member of a class or not. It just means a group of instructions that you jump to perform a task and then jump back from continuing execution where you left off.
== "[[:Criticism of object-oriented programming]]" listed at [[Wikipedia:Redirects for discussion|Redirects for discussion]] ==

[[File:Information.svg|30px]]
I am against the idea of moving this page, because by adding stuff about other systems with objects or if you like widgets that do not embody OO principles you are diluting it and moving away from OOP. [[User:Mintguy|Mintguy]] 16:30 23 May 2003 (UTC)
The redirect <span class="plainlinks">[//en.wikipedia.org/enwiki/w/index.php?title=Criticism_of_object-oriented_programming&redirect=no Criticism of object-oriented programming]</span> has been listed at [[Wikipedia:Redirects for discussion|redirects for discussion]] to determine whether its use and function meets the [[Wikipedia:Redirect|redirect guidelines]]. Readers of this page are welcome to comment on this redirect at '''{{slink|Wikipedia:Redirects for discussion/Log/2024 November 11#Criticism of object-oriented programming}}''' until a consensus is reached. <!-- Template:RFDNote --> [[User:Tea2min|Tea2min]] ([[User talk:Tea2min|talk]]) 09:55, 11 November 2024 (UTC)

:See this is why I need to rename first. Anyway, we always make a redirect so of course, you can find out the article, object theory. If I don't mean to stick only to that term, but other possibilities are:
* object theory
* object-orientation
* object-oriented
* object-oriented paradigm
I just want to make the title more abstract, so that the article can contain parts beyond your strict definition of object-oriented programming. -- [[User:TakuyaMurata|Taku]] 16:45 23 May 2003 (UTC)

Taku I am not going to argue with you anymore can we just leave this until we get some arbitration. [[User:Mintguy|Mintguy]] 16:55 23 May 2003 (UTC)

:You mean mailing-list? Sure. By the way, I rewrote the subprogram so that it is more apparent that why the article is named as subprogram. Sometimes, we need to avoid common terms because they are too POV'd. -- [[User:TakuyaMurata|Taku]] 17:04 23 May 2003 (UTC)

::(NB I wrote the following before having read the latest round of your comments, Mintguy, Taku, but had an 'edit conflict')

:: I've just read and understood your arguments, Taku, but have to say I agree with Mintguy. Moving the content of this page to title that very few people use is not a good thing to do. With this in mind, am I correct in saying that you see two problems?:

::# There are aspects of programming (e.g inheritance) that some people call OOP and some people do not. i.e. there are different POVs about what OOP is.
::# There are uses of objects in programming (e.g. the objects in Ada) that no-one calls OOP.
::::Quick note: I presume you mean the old Ada83, which didn't have inheritance. The usual term for that was "object-based" programming, and it generally was NOT accepted as object-oriented programming. However, the current version of Ada (since 1995) has inheritance, and complete support for OOP. (Note added by [[User:dwheeler]])
:::::Yes, sorry, Taku writes above about "Ada 8 something". I should have written that too. [[User:Pcb21|Pcb21]] 18:08 23 May 2003 (UTC)

::My view is that the best solution is that issue 1) can be discussed quite happily in this article. 2) requires a separate article e.g [[object (programming)]] or maybe [[object theory]] (not sure how widespread this term is and so am hesistant to agree to use it all), which links to this one, and devolves significant chunks of work to this article. That article could have more historical information than this article. Naturally this article would also link back to that one ... 'Programming languages may support objects but are rarely described as object-''oriented'' languages. See [[object_(programming)]] for a more general article'. What do you think? [[User:Pcb21|Pcb21]] 17:16 23 May 2003 (UTC)

[[object theory]] would be a good additional place to discuss fine points of theory, but this article should be the general explanation of the range of what is called "object-oriented programming". It's not that big of a deal to say that there is a disagreement; NPOV means reporting points of view without trying to anoint any particular opinion as the "truth". ABC's assertion that "XYZ is not true object-oriented programming" just means that you report it as an assertion of ABC; removing the report entirely is taking the POV that ABC is so wrong that the assertion should be censored from the article. People that think they know the definition of object-oriented programming should probably excuse themselves from touching this article; a bald list of all the multiple definitions that have been used will make a longish article all by itself. (BTW, I have heard people use "subprogram" and even used it myself a couple times, but it's a somewhat archaic usage from the heyday of Fortran and Cobol - yes, I was there, but just a teenager I swear :-) ). [[User:Stan Shebs|Stan]] 19:13 23 May 2003 (UTC)

:I was thinking and I agree that it's possible to discuss object-oriented programming in general, if not easy. There is a term that is quite popular and it should be strange if wikipedia doesn't cover that term mainly not as part of some article. But still I also think we should cover use of object in general, which can be part of OOP but can be outside. Besides, I realized it's possible to merge the article latter if needed. So I will write an article [[object theory]] I proposed. We will see and we can discuss again we should combine them or rename or anything else. -- [[User:TakuyaMurata|Taku]] 21:45 25 May 2003 (UTC)

----

I disagree that "abstraction" is a standard definition of OOP nor does OOP have a monopoly on abstraction. For example, functions provide black boxing of implementation, and relational algebra is sometimes regarded as being highly abstract. The main text makes it appear that "abstraction" belongs with the "classic three". It does not.

-----

* [http://www.geocities.com/tablizer/oopbad.htm OOP Criticism]

----

I think this sentence has no bearing on OOP and should be removed:

:Indeed, the rise of GUIs changed the user focus from the sequential instructions of text-based interfaces to the more dynamic manipulation of tangible components.

----

Discussion of classes doesn't belong in the first paragraph. Plenty of OO languages have objects but no classes (eg. [[self programming language|self]], [[cecil programming language|cecil]]). -- [[User:P3d0|P3d0]]

----

Taku, my friend, I appreciate your intent, but I think your latest changes to this page have only made it worse. I'm fighting the urge to back them out, and instead I'll think about it for a while and see if I can combine the best of the old and new versions...

Most of all, I don't claim to be an expert, but I have been in the field of OO programming for some time now; I have read on the topic fairly extensively; I have participated in (and even moderated for a time) the comp.object newsgroup; and I have never heard the term "Object Theory" used by actual practitioners of the OO programming paradigm. An encyclopedia is the place to document terminology, not to invent it, so I think all references to "Object Theory" ought to be deleted unless you can provide a reference to some external definition of the term. -- [[User:P3d0|P3d0]] 01:29, 3 Oct 2003 (UTC)

:Because I just made up the term. I just couldn't come up with good termiologies. You may know or not, there is a heated dispute about what is OOP between me and Mitguy. You are right; the article is too much inclined to particular kind of OOP. Classes, for example, are not main parts of OOP, so I just went editing. Let me know what parts you disagree with or just go ahead state your view. I know you have good knowledge and I will certainly apprecite your contributions. -- [[User:TakuyaMurata|Taku]]


----

I've created these three class diagrams to show how Aggregation, Composition and Inheritance appears in UML.

* http://en.wikipedia.org/upload/c/cb/UmlAggregatateClassDiagram.png
* http://en.wikipedia.org/upload/5/5a/UmlCompositionClassDiagram.png
* http://en.wikipedia.org/upload/1/15/UmlInheritanceDiagram.png

----

[[User:TakuyaMurata|Taku]],

Stop reverting to old versions that are incorrect and pushing your own uniformed POV.

OOP is most certainly a [http://dictionary.reference.com/search?q=paradigm paradigm] not a [http://dictionary.reference.com/search?q=style style]. Abstraction is a fundemental property of OOP. You should not confuse your own or others lack of understand of OO as meaning that OO is vague.

AIH I ''AM'' an expert in OO. I hold a BSc(Hons) in Computing Science, 15 years development expertise, including 10 in OO Software.

:I think you are new to here presumablly. The definition of OOP is always disputed if you know the history of this article. OOP with use of classes is called class-based OOP and OOP without classes is called object-based OOP. It is a paradigm if you put that in the context of software development, but a style if you compare that with other programming sytles.

Abstraction is tricky question. In some sense, any programming style promotes abstraction. I think reusability and encapsulation is more specific and unique to OOP. I will show my points more in the article.

Besides, some people with good education and good professional experience understand nothing about OOP, though I don't know if you are the case or not. Please show us evidence of your POV not who you are. I hope you can be accustomed to the wikistyle. -- [[User:TakuyaMurata|Taku]] 18:00, Oct 21, 2003 (UTC)
----
This argument is obnoxious. Worse, there is a distinct shortage of evidence for and against different approaches. Who you are and what you know is irrelevant to whether the information is generally correct. If an issue is debatable, leave it in talk or put it on your user page and link your user page here.

I suggest that it makes no sense to call OOP a "style" of programming. If something is part of a language, it's use can hardly be a style, on par with indenting and variable naming conventions. Paradigm is an abused word, but it is much more suitable to describe a feature of a language which is built in and common to a whole group of different languages with different but related approaches.

I would request that anyone of sufficient knowledge consider expanding on the distinction between OOP and standard procedural languages, especially since many OOP languages, notably the two most popular (Java and C++) are still procedural. Many discussions of OOP seem to suggest that objects have a sort of independent existence, as if they were autonomous entities like processes. The idea, for example, that they "communicate", while nice in abstraction, is really not correct, at least not in any way especially different from how functions talk to one another. Objects are not agents, after all, they are special data structures. [[User:Brent Gulanowski|Brent Gulanowski]] 20:05, 24 Oct 2003 (UTC)

:You have a point. My apology for stating OOP as style. Now I think the intro and the definition section is good enough, it is time to rework more following details. -- [[User:TakuyaMurata|Taku]]

Taku,

The dispute between us is not about the definition of OOP. I think we agree well enough on that paradigm and the elements section described in this article. My disagreement is with you saying that a structured programming design (the Windows API) was originally designed as an OOP design. The two are different concepts. OOP includes structured programming as one of its component concepts but that doesn't make all structured design OOP design. [[User:JamesDay|JamesDay]] 20:48, 25 Oct 2003 (UTC)

----
Hope I'm not entering a hot-bed or starting a fire-storm. I made changes to the basic definition of OOP. I've studied OOP (in college and outside) and taught OOP (to corporate and government clients) over the past 20 years, and the consensus I have always found was OOP means: 1.) use of objects (duh; this often goes unstated), 2.) abstraction (yes, its used elsewhere but OOP requires), 3.) encapsulation, 4.) polymorphism (I added this; wasn't there; how could it be forgotten? OOP absolutely requires this), and 5.) inheritance (yes object-based can omit inheritance, but OOP requires.)

I dropped "reusability" because it is more of a "state of mind" than a tenet of OOP. Yes OOP encourages reusability, but my reusable component may not be sufficient for someone else, so reusability is something you approach, not something you are. We can look at the other items (abs,enc,poly,inh) and say definitively (in most cases; I'm sure some wise-a** can find an obscured example to the contrary) that a given language either does or does not have those attributes.

So, I hope my thinking is not off base and you like my edits (enough to keep them :)

[[User:MikeSchinkel|MikeSchinkel]] 02:19, 26 Oct 2003 (UTC)

:No one mind your contribution. An attempt is more hopeful than giving up. I think four points you pointed out are quite accepted--that's what I have learned and have seen in many books of OOP. My intial motivation to omit them is I wanted to turn the article into more general term rather than common one. The explanation of polymorphism is a good instance. Not every OOP language has a data type. I mean when you teach OOP, it is inevitable to explain about porymophism but it is actually rather an implementation choice and detail. Anyway, this is my reason. -- [[User:TakuyaMurata|Taku]] 02:39, Oct 26, 2003 (UTC)

Thanks. Can you give me examples of OOP languages that don't have data types? Or are you meaning ones don't differentiate between integer, boolean, etc? My use of data type here, by the way, was specifically to avoid the concept of "class" because a class is a type of data type though not vice-versa, and some languages don't support class in the traditional sense and I didn't want to have to go into the intense detail required to explain. A good definition should be consise, no? :) [[User:MikeSchinkel|MikeSchinkel]] 02:51, 26 Oct 2003 (UTC)

:I think OOP without any data type can be possible, or of course it depends on the definition of OOP though. -- [[User:TakuyaMurata|Taku]] 04:39, Oct 29, 2003 (UTC)

----
Can someone provide examples of "object-based" languages? Are we talking languages like JavaScript/JScript? Can someone fill out more what "object-based" means? TIA. [[User:MikeSchinkel|MikeSchinkel]] 02:58, 26 Oct 2003 (UTC)

:I think so, [[JavaScript]], [[Visual Basic]] and such. I know we usually classify them as non-OOP. -- [[User:TakuyaMurata|Taku]] 04:39, Oct 29, 2003 (UTC)

Ahh! I read your reply and thought "Of course! What was I thinking?" Then I went back and read the entry on [[Object-oriented_programming]] and remembered what I was thinking. The confusion I had was the distinction between "class-based" and "object-based" languages. I had never heard it explained that way so I was confused. Now I find it not only confusing but also pretty much inaccurate. The entry describes "Class-based" as "In this model, objects are entities that combine both state (i.e., data) and behavior (i.e., procedures, or methods)." That applies to "object-based" as well. I would say the inclusion of the term "class-based" should be removed, and then a reference to "object-based" be left in that describes it as "object-oriented minus inheritance."

There is another spin that could be added to this; that of OOP languages with staticly defined classes (i.e. most of them) and then ones with dynamically defined classes (i.e. javascript and a few others I'm sure.) However, I don't have enough experience with javascript to elaborate correctly.

Thoughts? [[User:MikeSchinkel|MikeSchinkel]] 10:54, 2 Nov 2003 (UTC)

----
Somewhere I got the idea that there now existed one or more examples of object-oriented functional languages, but come to think of it, is that possible? Hmm, I guess it is if the objects never change, meaning no side effects, but what is an object if it isn't an abstract data type? How do you have ADTs without primitive data types?

... well, google helped: http://www.pasteur.fr/~letondal/object-based.html (Object-based PLs). OScheme would be a good example, and its interesting because it's untyped, I think. I guess that's the functional one I was thinking of. [[User:Brent Gulanowski|Brent Gulanowski]] 18:53, 26 Oct 2003 (UTC)
[[User:Brent Gulanowski|Brent Gulanowski]] 18:53, 26 Oct 2003 (UTC)

----
If we must talk about OOP modelling the "real world" then can we please do it less prominently? OOP applies quite well in situations where there is no "real world" (eg. nodes in a control-flow graph) so I don't consider real-world fidelity to be very important at all. However, some disagree, so if someone feels like putting that back in, I won't remove it again. --[[User:P3d0|P3d0]] 13:37, 3 Jan 2004 (UTC)
----
I think the description on abstraction is misleading. How would that abstraction be different from composition? Composition is a way of grouping multiple entities into a single entity. Abstraction should be thought more as ignoring irrelevant details. -- [[User:Esap|esap]]
----
Two things.

First, I do not think that Smalltalk was implemented in Simula; in fact, I have never heard of a Smalltalk implementation in Simula. The article says so, but where did this info come from? It is safe to say that Simula was a heavy influence on Smalltalk, but was it actually implemented in it?

Second, a very good read about where objects come from is The Early History of Smalltalk[http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html].

- Lex Spoon
:Hello, [[Wikipedia:Welcome, newcomers|welcome to Wikipedia]]! We welcome your contributions. Wikipedia is a [[wiki]], and anyone- including you! - can edit nearly any article, at any time, by clicking the '''Edit This Page''' link at the bottom of the article. You don't even need to [[Special:Userlogin|login]], although there are several [[Wikipedia:Why create an account?|reasons why you might want to]]. So, feel free to make this correction yourself! If you are unsure about [[Wikipedia:how to edit a page|how to edit a page]], try out the [[Wikipedia:Sandbox|Sandbox]] to test your editing skills. - [[User:Fennec|Fennec]] 04:01, 10 Apr 2004 (UTC)

== Truly Object oriented ==

I also think that this page isn't about Object-oriented Programming, but about Object-oriented languages, or structure. I picture an entry on Object-oriented programming giving information about programming, not the languages underneath.

But my real question is about strict OO Languages. What does it take to be truly OO? I've heard it argued (its being argued in my apartment of 4 CS geeks ATM), and I've seen textbooks say that C++ isn't strictly object-oriented, but is merely object-compatible. Any thoughts on the matter?

[[User:Mckaysalisbury|McKay]] 07:12, 2 Aug 2004 (UTC)

Latest revision as of 23:41, 19 November 2024

Find sources: Google (books · news · scholar · free images · WP refs· FENS · JSTOR · TWL

Common Lisp

[edit]

Common Lisp is NOT a object oriented language.You can do object oriented programming in Common Lisp (it even has its own set of operators for that: the Common Lisp Object System. Or you can write your own), but you don't have to, and most of the time, you won't need the extra garbage. 77.171.29.82 (talk) 23:59, 15 February 2024 (UTC)[reply]

I'm a bit confused. The argument I see here is that because one can avoid doing object oriented programming in Common Lisp, Common Lisp is not object oriented. But that applies to many languages, e.g. C++ can be used procedurally (in its C subset). There is a term in the article "pure OO languages" which is defined as languages where everything is treated consistently as an object, which clearly Common Lisp and C++ do not satisfy. But the general concepts of OO seem present in CLOS. Mathnerd314159 (talk) 01:18, 16 February 2024 (UTC)[reply]
But all values in Common Lisp are objects and instances of some class. See for example the integer class. You do not have to write your own classes, still, and you can use normal functions instead of generic functions. But all classes (including structure classes made by defstruct) can be dispatched on by generic functions. I find using classes and generic functions in Common Lisp is useful and not garbage, and certainly people do use those features of CLOS, but "the extra garbage" would not be starting that discussion on the right foot. 150.203.65.55 (talk) 11:16, 19 March 2024 (UTC)[reply]

We could write this more simply

[edit]

I'm taking an entry-level computer class and I can't make heads or tails of this article. Procedural programming seems simple but I don't know what the teacher means by "objects". 136.223.34.54 (talk) 15:19, 15 April 2024 (UTC)[reply]

OOP is complex and vague - it is hard to discuss it concisely. I think the article structure is about as good as it gets. But you are right that the "objects" section does not define objects, I have added a definition. Mathnerd314159 (talk) 21:43, 15 April 2024 (UTC)[reply]
انا اول مره 185.133.180.19 (talk) 12:43, 17 April 2024 (UTC)[reply]
@136.223.34.54 i agree. this article is written poorly. OOP Is not a complex and vague topic as other says. people make it more complicated than it is. Stevebroshar (talk) 01:07, 25 October 2024 (UTC)[reply]
That is a problem with WP. Perhaps articles are written by subject experts who are used to talking with other subject experts and put things in terms that others can't understand.
Or maybe it is that so many make amendments it becomes an unintelligible mess, like C++.
Or maybe it is because of things like C++ and UML that OO itself has become this mess that it should not be. Ian.joyner (talk) 07:27, 25 October 2024 (UTC)[reply]
OOP helps organise projects, but in a disciplined and mathematical way. You should read Object-Oriented Software Construction. This is true and clean OO, but not one that simplifies the most sophisticated aspects of OO or programming.
An object, in itself is a self-contained computer that handles one kind of data. Objects interact via messages.
Don't get misled by horrors such as C++ or UML. Ian.joyner (talk) 07:21, 25 October 2024 (UTC)[reply]

Criticism section no longer present?

[edit]

In the 'Real-world modeling and relationships' section, a 'criticism' section is referenced. This seems to be no longer present. BartYgor (talk) 07:19, 3 May 2024 (UTC)[reply]

Good catch, indeed the criticism was added to the section (the Yegge quotes). Mathnerd314159 (talk) 14:26, 3 May 2024 (UTC)[reply]

The redirect Criticism of object-oriented programming has been listed at redirects for discussion to determine whether its use and function meets the redirect guidelines. Readers of this page are welcome to comment on this redirect at Wikipedia:Redirects for discussion/Log/2024 November 11 § Criticism of object-oriented programming until a consensus is reached. Tea2min (talk) 09:55, 11 November 2024 (UTC)[reply]