Java Performance/Python etc

Simon Bowring pmmail@rpglink.com
Wed, 20 Sep 2000 12:40:11 +0100 (BST)


On Tue, 19 Sep 2000 10:54:16 -0700, Steve Lamb wrote:

Tut, tut, Steve, you really don't mind "laying in" when you're
half-informed at best! If there's one thing I really know about 
it's programming languages!

Firstly, I'm sure you'll agree that the facilities in a language 
are much more important than what they're called, though it helps 
if the terminology is descriptive, and in Java this is mostly true,
and far, far  more true than in C++. But python arguably has the best 
terminology of the three.

As you point out "java bean" is a crap term. However it's not 
really a language term at all, a java bean is simply a separately 
packagable resuable component (which is a normal java class 
with appropriate methods implemented to work with java's 
excellent and simple component model). As you say, the term is 
a vile cutesy name, but you incorreclty say a bean is java's 
term for a class; it just isn't! Java classes are (unsurprisingly) 
called "classes"! So, no reinvention of terms here!

One new innapropriate term does not constitute "a whole new 
set of terms for concepts already defined!" C++ was *far* worse 
for that! 

>    Well, what is a method?  It is a function in the class.  Member
>/function/.  At least you have links back to the terminology of the past.
>Also C++ and other OO languages were jockeying for terminology.

The term "method" pre-dates java and C++, and is *the* standard 
terminology used in OOP! It's used by all other OO languages 
I'ved ever encountered, including Python(!), SmallTalk and Scheme.
So who reinvented what?  

An OO programmer who doesn't understand the term "method", isn't an 
OO Programmer, but an OO Programmer who doesn't understand the term 
"member function", is simply not a C++ Programmer (C++ being a general 
purpose programming language *allowing* OO constructs, as opposed to 
Java, smalltalk etc which are "pure" OO languages)!

C++ has many stupid, reinvented and overloaded terms (like static 
which has several completely unrelated separate specific meanings 
dependent on the context!).  The reason for this (and many other 
dumb terms, "overloadings" and notations in C++ has been stated by 
Soupstrap(sp?) as not being due to technical reasons, not even 
being due to marketting reasons, but simply because introducing 
new terms for new features slows down the standardisation process, 
so they overload existing reserved words (like static) and other
symbols (like "0") instead! Not a great way to extend a 
language! A different example of this is when Soupstrap wanted to 
introduce a keyword "virtual" for pure virtual member functions, 
instead you have to say: "void myVirtualFunction()=0;".  

So in this context "=0" means "virtual" (i.e. that the implementation 
of the method/member-function needs to be supplied by derived 
classes). Hmmm - obvious!

Do you hear programmers saying "I won't look at C++ because of 
stupid terminology? Rarely, so how come this is one of two major 
reasons that you cite for not considering the language (bearing 
in mind that this "terminology" reason is simply untrue, and 
merely demonstrates how little you apparaently *know* about 
java!)?

>I guarantee you "Member function" and "static" would not
>have gotten the same reaction!
LOL! Perhaps you or your room full of 20 (C/C++ background?) 
programmers are too "parochial" to appreciate the stupidity of the 
above C++ terms, or that they are shared by no other languages, or 
that this language is alone in deviating from commonly used OO 
terminology!?  This seems especially "odd" to me since you
assert they also apparently know python which (like java) has 
far saner and more "common" terminology than C++!

>That is the biggest problem, the terminology was dictated by /MARKETING/,
Bollocks as we say over here! A few of the later terms were probably 
invented by marketting (not that you or I know which if any at all) 
but none of the the core *language* terms were because the language 
(originally called Oak at the time) was initially designed and 
implemented by Sun techies for Sun techies (embedded systems 
programmers like me!) and their original terminology (*all* of
which predated Oak/Java) survives intact to this day in Java!
  
BTW: Even the "Swing" library (marketting term only - no meaning 
in the language itself) was dreamt up by one of the software 
engineer's that designed and implemented this (second to none)
UI class library (I met him at a Sun jamboree once)!

Simon