What are OOP's Jargons and Complexities?

Mike Meyer mwm at idiom.com
Mon May 23 10:39:35 EDT 2005


"Xah Lee" <xah at xahlee.org> writes:

So now we find out that Xah Lee is as ignorant of other programming
languages as he is of Python and Perl.

> In advanced languages such as LISP family, it is not uncommon to define
> functions inside a function. For example:
> subroutine f (x1, x2, ...) {
>   variables...
>   subroutine f1 (x1...) {...}
>   subroutine f2 (x1...) {...}
> }

Nested subroutines date back to Algol, which was first specified in
the 50s.

> So now, a_surface is no longer viewed as a subroutine, but a boxed set
> of things centered around a piece of data. All functions that work on
> the data are included in the boxed set. This paradigm possible in
> functional languages has refined so much so that it spread to other
> groups and became known as Object Oriented Programing, and complete
> languages with new syntax catered to such scheme emerged.

Actually, classes and other OO concepts come out of simulation programming,
not as an outgrowth of nested functions. Most of the features one
associates with OO languages were present in Simula.

Function nesting and classes were viewed as independent features. Some 
OO languages support nesting, others don't. I think it was Grace Murray
Hopper commenting on Ada who said that "With classes, nesting is for the
birds."

> This style of programing and language have become so fanatical that in
> such dedicated languages like Java, everything in the language are
> “Classes”.

Strictly speaking, this isn't true of *any* language. Even the most
fanatical of languages distinguish between classes, objects and
methods.

But IIRC, Java comes with a set of low-level types that don't have
classes associated with them.

> This Object Oriented Programing style and dedicated languages (such as
> C++, Java)

This is pretty sloppy english. You imply that C++, like Java, is pure OO
language - meaning that there are no freestanding functions or variables.
That's false.

> have become a fad like wild fire among the programing mass
> of ignoramuses in the industry. Partly because of the data-centric new
> perspective, partly because the novelty and mysticism of new syntax and
> jargonization.

Actually, C++ became popular because it promised access to the power of
OO programming while leveraging the programmers familiarity with C. In
reality, it combined the worst features of both. Java became popular
because it fixed some of the problems with C++ while leveraging
programmers familiarity with C++ and promising "run anywhere" capability.

Personally, I think that these two languages are good examples of
someones ability to design a popular language being much better than
their ability to design a good language. But that's a matter of opinion,
and as such is debatable.

> It is especially hyped by the opportunist Sun Microsystems with the
> inception of Java, internet, and web applications booms around 1995. At
> those times, OOP (and Java) were thought to revolutionize the industry
> and solve all software engineering problems, in particular by certain
> "reuse of components" concept that was thought to come with OOP.

At that time, OOP was pushing 30 years old. Some people were using it
and getting that component reuse that it promised. Others were using
it and discovering that designing reusable classes is *hard*. It was
clear to pretty much everyone that OOP wasn't a silver bullet.

> We now know that the jargon Class is originally and effectively just a
> boxed set of data and subroutines, all defined inside a subroutine. And
> the jargon "Object" is just a variable that has been set to this super
> subroutine. And the inner subroutines are what's called Methods.

This is simply ludicruously wrong.

> to be continued tomorrow.

Please don't waste our time.

        <mike
-- 
Mike Meyer <mwm at mired.org>			http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.



More information about the Python-list mailing list