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
Mintguy (talk | contribs)
No edit summary
Undid revision 1258378443 by 182.2.100.90 (talk) rv random drive-by post
 
(666 intermediate revisions by more than 100 users not shown)
Line 1: Line 1:
{{talk header}}
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.
{{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 ==
And as usual, if I don't see an object, I will go ahead. -- [[User:TakuyaMurata|Taku]] 13:44 23 May 2003 (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)
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 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)
: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)


: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)
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.


== We could write this more simply ==
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)


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)
: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)


: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)
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 to perform a task and then jump back from continuing execution where you left off.
::انا اول مره [[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? ==
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)


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)
: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)


: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)
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)
== "[[:Criticism of object-oriented programming]]" listed at [[Wikipedia:Redirects for discussion|Redirects for discussion]] ==
[[File:Information.svg|30px]]
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)

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]