Keith's profileKeith's "do over"BlogListsNetworkMore ![]() | Help |
|
|
March 20 "object-oriented" WHAT?@#%???This week’s discussion topic ("try to understand what 'object-oriented' really means and summarize it in your own words") in my Object-Oriented Programming Concepts college course is super-relevant for me. For a long time, I’ve had trouble mentally making the jump from the procedural programming that I learned years ago, to the object-oriented programming that I’m trying to comprehend, practically implement, and ultimately master. I’ve read about and dabbled in so-called “object-oriented programming” environments, never really understanding and internalizing the theory and benefits boasted by its proponents and latent underneath. I kinda, sorta got some of the concepts but largely never got beyond copying somebody else’s code to quickly cobble together a makeshift solution for the latest, hot project. And then this morning, I read an article that makes me wonder if the authors might not have hit on the problem.
In an October 2003 article entitled “On Pseudo Object-Oriented Programming Considered Harmful” (see Communications of the ACM; Oct2003, Vol. 46 Issue 10, p115-117), Cong-cong Xing and Boumediene Belkhouche assert that educators—and I would add authors in the tech press—need to “address ways to differentiate between object-oriented programming and object-oriented programming languages;”. Xing and Belkhouche say that by the implication that a language like, say, Java necessarily equals a good and right representation of object-oriented programming and design philosophy, educators and writers may confuse learners if said language isn’t truly representative of the essentials. And they say that those essentials are “1) An object is a finite set of components. Each component of an object can be either a piece of data or an operation (over the data components by default). Objects, not classes, should be used as the data-modeling mechanism when computations are considered.” and “2) Computations under OOP are carried out by invoking components of objects (again not classes).” Whether they are right or not, I have yet to decide, but I agree with their essential point on the origin of the confusion.
I searched other, less high-brow, sources to respond to the topic like Britannica Online (which had, I thought, an utterly laughable, presumptuous brief paragraph on the subject that did more to confuse than enlighten an average reader), Wikipedia (which had much more depth and usefulness but which granted “Attempts to find a consensus definition or theory behind objects have not proven very successful, and often diverge widely.”), and other, largely unhelpful library database articles. But the bottom line for me this morning is that by divorcing specific “production” languages like Java, C#, or VB.NET from my early learning for the moment while I ponder object-oriented design and programming at its most fundamental level, I am more likely to really get it (my ultimate goal); to internalize, and therefore learn. In this regard, I think the Alice computer programming teaching language will help...and already has. Charles W. Herbert, author of An Introduction to Programming Using Alice, has so far helped me understand object-oriented as relates to information systems design and computer programming more than anyone else. He spoke on page 2 in a language I understand: airplanes. In system design (OOD) and programming (OOP), “object-oriented” simply means that things and information about things (objects and descriptions of those objects, combined, an "object") can be in either the real or virtual worlds and exist in relation to other things (objects). The things themselves, like a Boeing 777, are made up of smaller things, some of which share information to make the whole plane fly, keep the passengers comfortable, and the crew and others informed so that everybody does what they're supposed to do and nobody dies. Further, I understand that these things use the information resident in them, or brought into them by other objects (things) to make calculations and change either themselves or other parts of the system to keep the whole thing going. I’ve not captured all of the essentials of OOD and OOP, but I’m beginning to get a glimpse…for the first time! TrackbacksThe trackback URL for this entry is: http://keithparish.spaces.live.com/blog/cns!37A2E91D1EFF0214!180.trak Weblogs that reference this entry
|
|
|