| The bomb. The bee's knees. Uncut cool. The True Way. |
|
| A good approach to many problems, though not the only one. |
|
| Useful for really big projects, perhaps, but mostly overrated. |
|
| Slow, bloated, and boring. I'm a coder, not a theorist. |
|
| For the weak. As are scoped variables and control structures. Goto++ |
|
| Something I've been meaning to figure out. |
|
| So poorly defined, it's hard to venture an opinion. |
|
| None of the above. |
|
| 352 total votes |
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Object Orientation is:
by frankus (Priest) on Sep 03, 2002 at 10:48 UTC | |
I dislike the importance attached to it, I mean I never heard people enthusing about Relational Databases in the same way.
It seems, these days, that knowledge of OO counts as much as knowledge of protocols, systems and computer science.
OO is a way of saving time and making robust systems,
it's a methodology, take it off the pedestal, learn it, move on. Err, good poll, sorry about the rant. † Really like in the "evangelising" sense -- ¤ | [reply] |
by ichimunki (Priest) on Sep 03, 2002 at 18:13 UTC | |
C++ looks laborious to me. I haven't learned to code to OO in C++ because I've never had time/need (to even learn C++). Ditto Java. Ditto Python. Perl OO -- while not instantaneous-- is a great way to learn how OO actually works because all of the internals are exposed. It's almost annoying the way you have to shift $self off the argument list for $self to recognize it-$self, but you really do learn to see an object for just a (blessed) reference to a data structure. I mean, you're there building that structure and manually blessing it. You really get to learn the difference between the namespaces, and how to share data (exporter, etc), and how instance/local variables interact. Then what about a language like Ruby. How much more instantaneous could a langugage get? It has a interactive mode (irb) where your program runs as you type it. You can define a class in very few keystrokes, redefine classes and methods after you've already started using them (existing objects can learn new behavior), pick up the objects, classes, and shake them and see what falls out. It couldn't get more interactive or instantaneous. But is OO enough all by itself? Of course not. A good language will have a simple way to write a straight-forward imperative program. It will also have things from functional programming, like the ability to pass a block as an argument or creating closures. And no, I haven't heard anyone going on about relational databases lately... but I have heard a lot of really enthusiastic discussion of star schema methodology for them. <grin /> | [reply] |
by perrin (Chancellor) on Sep 03, 2002 at 21:53 UTC | |
I couldn't agree more. I learned OO with Perl, and I find that it gave me a unique perspective on the meaning and purpose of inheritance, polymorphism, and encapsulation. Because it's so out in the open, it's less magical and more understandable. | [reply] |
by frankus (Priest) on Sep 04, 2002 at 08:43 UTC | |
In effect, you've proved my point. In defending OO, you've missed the salient points and started with the premise that I'm a novice. OO Development isn't instantaneous, invariably you'll need to "reign in" the analyst who's so busy producing a design that match the "problem set" rather than observing what goes into the system and what comes out. When running OO code, in Perl at least using OO has an overhead. I think you know these things already. Perl OO isn't a good way to learn how OO works as it doesn't protect you from bad things, it'll take you longer as you stumble across means of implementing singletons and avoiding diamond inheritance structures. Of course when you do, you'll be a hardened veteran, whereas other langauages will not tell you of these horrors, simply avoid them silently, by means of the language design (mostly). This is where Damian Conway's book is indispensable. OO is fun in Perl, but Perl isn't meant to teach you OO. If you're using Perl and nothing else, of course you'll learn OO using Perl makes sense, but it's only maginally less stressful than learning a new language and OO at the same time. Of course I'm speaking as one who learnt C++, Perl then Java then OO Perl. -- | [reply] |
by ichimunki (Priest) on Sep 04, 2002 at 14:22 UTC | |
by frankus (Priest) on Sep 04, 2002 at 15:37 UTC | |
|
Re: Object Orientation is:
by Courage (Parson) on Sep 03, 2002 at 11:23 UTC | |
:) Courage, the Cowardly Dog | [reply] [d/l] |
by sfink (Deacon) on Sep 04, 2002 at 01:25 UTC | |
If you disagree with it, then it's probably more right than wrong for you. If you agree with it (like I do!), then it's most likely more wrong than right. We humans are funny that way. | [reply] |
by agentv (Friar) on Sep 05, 2002 at 06:18 UTC | |
It's easy to laugh at the idea that encapsulation leads to the possibility that we could replace the heart with a vacuum cleaner or a rooster. But imagine a real-world situation that concerns something almost as dear to many of us, the filesystem. Most Unix filesystem afficionados are aware that files are based upon a construct known as the inode. (An inode contains all of the relevant information that defines a file with the exception of the file's name.) In order to support the notion of remotely available files through the NFS filesystem, designers had to choose between either modifying the core code in the kernel to make special exceptions for files that are seen in a mounted NFS filesystem, or finding an abstract layer that encompassed all of the things that are common to both types of files. It would not have been difficult to account for both types of files in the kernel, but then there was this other form of networking that was common in the early days of NFS. A lot of people called this the "sneaker net." People wanted to put floppy disks with PC filesystems into their systems and be able to read them. So without an abstract representation of the inode concept, there would have had to be changes in the kernel to account for every new filesystem that came along. (So the S5 filesystem, the UFS filesystem, the PCFS filesystem and NFS filesystems were just the beginning of the problem.) By throwing some plaster around the problem (not a meter thick perhaps, but maybe only a few centimeters), it became possible to support a virtually unlimited number of new filesystem types without much change to the kernel core. In the end, OO programming is over-hyped, but then so are Tiger Woods, Michael Jordan, and Barry Bonds. This does not detract from their greatness. On the other hand, you probably wouldn't hire Tiger Woods to clean your carpets. A simple Perl one-liner would be a better choice.
...All the world looks like -well- all the world,
when your hammer is Perl.
| [reply] |
by agentv (Friar) on Sep 06, 2002 at 16:16 UTC | |
...All the world looks like -well- all the world,
when your hammer is Perl.
| [reply] |
|
(jeffa) Re: Object Orientation is:
by jeffa (Bishop) on Sep 03, 2002 at 13:44 UTC | |
jeffa L-LL-L--L-LL-L--L-LL-L-- -R--R-RR-R--R-RR-R--R-RR B--B--B--B--B--B--B--B-- H---H---H---H---H---H--- (the triplet paradiddle with high-hat) | [reply] [d/l] |
by Aristotle (Chancellor) on Sep 07, 2002 at 04:43 UTC | |
Makeshifts last the longest. | [reply] |
|
Re: Object Orientation is:
by tbone1 (Monsignor) on Sep 03, 2002 at 12:35 UTC | |
If I may go into "grumpy old pfhardt" mode, I have worked with some fresh-from-college whippersnappers who can evangelize about OO and all that rot, but when you ask them something about real-world programming (like, say, dealing with user input errors), their jaws drop, the saliva begins to drip, and in my mind I hear "Duh, gee, Tennesse, let's ask Mr. Whooppee." Well, that or "Gosh, Mr. Obvious; I never made the connection." I think that, because the OO paradigm hides many things, they sometimes have trouble dealing with things that shouldn't be hidden to the programmer.
-- | [reply] |
|
Re: Object Orientation is:
by talexb (Chancellor) on Sep 03, 2002 at 17:42 UTC | |
For example .. I'm writing a quick script to mirror a web site. Am I using OO? No, not really. I'm just getting the job done. Another project I'm working on is quite large. Will I be using OO? Perhaps it's not pure OO, but I will certainly write modules to handle the two (so far) classes I have. And, yes, one class inherits the other. But I'm doing it that way because it's the right tool for the job. Not because everything looks like a nail. It seems that if you mention a project you worked on was 'OO' you suddenly appear much more intelligent, technically competent and attractive to the other sex. Bollocks. 'OO' is one way to do the job. Period.
--t. alex
| [reply] |
|
Re: Object Orientation is:
by krisahoch (Deacon) on Sep 03, 2002 at 11:18 UTC | |
When the only tool you have is a hammer, then every problem looks like a nail
Kristofer A. Hoch | [reply] |
|
Re: Object Orientation is:
by chip (Curate) on Sep 03, 2002 at 14:56 UTC | |
-- Chip Salzenberg, Free-Floating Agent of Chaos | [reply] |
|
Re: Object Orientation is:
by NAstyed (Chaplain) on Sep 03, 2002 at 14:22 UTC | |
That's true, but this days there are people that hate the words OO, and others that just love them, i think the diference is inside us. I would suggest another poll "Are you a OO lover?" | [reply] |
|
Re: Object Orientation is:
by beamsack (Scribe) on Sep 03, 2002 at 19:23 UTC | |
I have converted small elegant programs from functional to OO with dismal results. As a OO programmer, I have found that the most important design and code techniques come from Structural programming. Most of the powerful design patterns can be related to things done Functionally, but by using OO techniques. Heck I think the Observer pattern is nothing more than a smart GOTO. I have seen some OO designs with classes containing nothing but attributes (Data Objects) and classes containing nothing but methods (Editor Objects). Why not. The problem with OO projects is that designs get rejected for not being OO enough. In summary - good OO does not reject or ignore structural programming - it attempts to stand on the shoulders of structural programming to achieve maintainable industrial strength programs. | [reply] |
|
Re: Object Orientation is:
by zakzebrowski (Curate) on Sep 03, 2002 at 15:08 UTC | |
---- Zak "There is no room in this country for hyphenated Americanism" ~ Theodore Roosevelt (1915) | [reply] [d/l] |
|
Re: Object Orientation is:
by elusion (Curate) on Sep 03, 2002 at 21:12 UTC | |
Then again, when I write OO, I write the the methods with a functional paradigm. Some OO languages (ruby, maybe even python) are great, but being limited to one paradigm really stinks. | [reply] |
|
Re: Object Orientation is:
by digiryde (Pilgrim) on Sep 04, 2002 at 10:53 UTC | |
My point: I have written programs that OO saved 100s to 1000s of man hours programming. I have seen programs written that added 100s of man hours by going OO. Like all great projects, map it out from a thousand feet, but land and see the ground around you before you decide on a coding method. DigirydeNothing clever here, move along. | [reply] |
|
Re: Object Orientation is:
by blaze (Friar) on Sep 03, 2002 at 20:50 UTC | |
| [reply] |
|
Re: Object Orientation is:
by feloniousMonk (Pilgrim) on Sep 04, 2002 at 14:45 UTC | |
I can't say I've ever written any OO Perl. Never, and I've done quite a bit of Perl programming. Using an OO interface to a module, yes I've dont that. But for my style of programming and problems I tackle with Perl, OO doesn't seem to fit well. But I've written my share of OO code in C++ and Java - which when the problem fit an OO solution well then team programming sent very smoothly. Lots of design work and typical design tweakage along the way :-) but overall, depending on the problem, my experience with OO based projects is very positive. -felonious-- | [reply] |
|
Re: Object Orientation is:
by cybear (Monk) on Sep 05, 2002 at 13:40 UTC | |
is really useful to us "new kids". Reading the comments herein (that's lawyer talk) is helping me to decide whether to learn OOOr not. :-) - cybear | [reply] |
by lzcd (Pilgrim) on Sep 08, 2002 at 22:28 UTC | |
| [reply] |
by systems (Pilgrim) on Sep 09, 2002 at 05:59 UTC | |
No matter what you see in the comments, either it's pro-OOP or anit-OOP, you should learn about OOP. First its not that hard to learn (it's not nuclear science, it's not even math, relational database used to be math whatever that means!). If there is one thing I learned about programming from PerlMonks website; it's there is several pardigms for programming(I dont remember the node name or author, sorry, but there is a specific node that I mean): functional, procedural, OOP, and ... well and more to come I hope! OOP will not corrupt your mind if you learn it. Mostly people who attack it, are just turned off by other people who are so very ooh-no ooh-my pro-OOP. But OOP is really interesting, as many ppl say, and will continue to say. OOP can be thought of in many ways, you can think of it as an upgrade to procedural programming, or the next logical step in the comp.lang evolution. In a procedural lang you manipulates data. Just data you cannot manipulate anything that can not be seen as data! Data are of course: Numbers(int, floats) and characters (strings!),data here is basically what ever you can insert from your keys in your keyboard...did i miss anything thing. And functions are functions, anything you cannot describe as data, you had to code a functions to represent it, and still those function can only manipulates data! OOP offers you a real way (by real I mean OOP is not just a theory, you have real implementation of its concepts) to manipulate more then just data, you can manipulate objects (and that is part why I think OOP implementations that don't support operator overload are missing a great deal!). Of course data can be objects, and objects can be anything. The gotcha here is, objects can only be anything that can be described in functions/methods and data; but hey, look around (at the different programs that exist today), that really almost anything! So why not think of a button as a function that draw a button! Don't you think it's better (a better and easier way to think when designing a program) to put a button object, on your window object (function..eek!), and add textArea objects and label objects to make a form! Yes GUI programming is one area of design that benefits a lot from OOP. So the bottom line is OOP is way of thinking when designing a program that is actually supported by langs that implement the concept and allow you to code what think the way you think it. And yes if all you wanted to manipulate is just numbers and characters, OOP would not give you much of and edge. But still its great to be here when you need it! And believe it or not OOP offer you a lot more then what I said, take Inheritence, this feature proved to be a great way to organize and upgrade object. And offered a great maner of code reuse. Abstract object at the top more detailled ones as subs, and subs for subs... A change in the the father Object with affect all its sons! WOW..thats impressive, not impressive to do, but to think about this way, and you know what you really code it that way, you can probably still do the same with regular modules. But isn't a lot more logical and fun to think about it in term of objects! It really reduce the gap between modelling a program/system and the actual code. I guess this is all. | [reply] |
by cybear (Monk) on Sep 10, 2002 at 15:29 UTC | |
Got a good book to recommend? - cybear | [reply] |
|
Re: Object Orientation is:
by rir (Vicar) on Sep 03, 2002 at 23:32 UTC | |
| [reply] |
|
Re: Object Orientation is:
by nacka (Friar) on Sep 04, 2002 at 20:02 UTC | |
But when I sit down to actually write the code? No thanks! Object orientation gives you bloated syntax, tries to force you to behave with regards to coding standards etc without giving something in return. What's needed is discipline and standards. Don't expose every sub, var etc to the world, don't change interface every release cycle, etc etc etc. Have a consistent naming scheme for subs and vars. Think before you type, don't reinvent the wheel and Keep It Simple, Stupid. None of these things is automagically taken care of by a OO-language. So I really don't see the point in using one. If OO was the answer, shouldn't apps written in a OO-languages have fewer bugs, less maintainence headache, quicker adoption of coolest-feature-of-the-day? | [reply] |
|
Re: Object Orientation is:
by NaSe77 (Monk) on Sep 03, 2002 at 11:06 UTC | |
---- | [reply] |
by agentv (Friar) on Sep 05, 2002 at 06:02 UTC | |
...some days you wish that you could -- more than once. I know several "true men" at Sun who work on the kernel internal design, many of them pee sitting down (and bunked in the womens' dorm at school), and they have developed several object-oriented artifacts that make the system what it is. Thanks to the magic of encapsulation (forget about code reuse and modularity, that junk is for the trade shows) we have the virtual filesystem (thanks guys (and gals) for the swapfs, the specfs, the tmpfs, and the procfs), the virtual memory system (the vnode layer made the virtual filesystem possible), and the creation of scheduling classes (now we have timeshare, realtime, system, fairshare, and fixed priority scheduling classes). All this is done without a line of Java, C++, Ruby, Python or Smalltalk. Using only C and assembler, the designers of the OS kernel have given us the best of OO design without too much in the way of overhead. And it makes possible the solutions to problems that would never have been solved without a tremendous amount of overhead in the kernel code itself. No, OO programming is not for every problem, but it should be mastered by every serious programmer at this point. There's not much to it actually, and it doesn't actually demand a heroic ability for abstract thought. I actually cover most of the core principles in my Advanced Perl class in about an hour. On the other hand, I don't think that Perl is the ideal language to use for initially exploring OO concepts. But if you start out that way, you'll be able to do anything in other OO languages as soon as you become accustomed to how they work. I would guess that programmers who learn OO with Smalltalk or Java will only struggle a bit with Perl for OO, but those who learn first in Perl may chafe at the strictures imposed by more typesafe languages like Java. (I also found high levels of resistance in C++ programmers trying to move to Java.) Bottom line for me is this: If you think loops, switch constructs and the conditional operator are really slick, then don't worry about OO. You'll find plenty to amuse you in procedural programming. If you had enough of writing simple logic structures in school, then maybe you want to move up to the world in which you program the behavior of such program constructs that are already encapsulated in an object that regulates behavior so that it remains rational most of the time. That's an important part of what we talk about when we teach new Java programmers. Trying to ensure rational access to things so that bank accounts don't magically have their balances set to $-1,000,000 or that life support systems don't magically shut down due to a minor error condition. Encapsulation is a big win, and it helps us to build more robust structures in our programs. But there are many ways to tackle any problem and all of them are good as long as they succeed. Once more with feeling folks:
...All the world looks like -well- all the world,
when your hammer is Perl.
| [reply] |
by perrin (Chancellor) on Sep 04, 2002 at 22:51 UTC | |
| [reply] |
by NaSe77 (Monk) on Sep 06, 2002 at 07:58 UTC | |
in german there is a joke like this ("das ist was für sitzpinkler") and i tried to translate it into english but obviously it didnt work out. sorry.
---- | [reply] |
|
Re: Object Orientation is:
by malaga (Pilgrim) on Sep 05, 2002 at 08:15 UTC | |
| [reply] |
by tretin (Friar) on Sep 05, 2002 at 12:35 UTC | |
work it harder make it better do it faster makes us stronger more than ever hour after our work is never over. | [reply] |
by frankus (Priest) on Sep 06, 2002 at 09:02 UTC | |
FIRSTPOST!!!! ;-P -- | [reply] |
by malaga (Pilgrim) on Sep 18, 2002 at 20:45 UTC | |
| [reply] |
by frankus (Priest) on Sep 20, 2002 at 10:06 UTC | |