Decreasing the "standard deviation" of Java

P

peteg1959

Recently, there was an (apparently cyclic) thread on
comp.lang.java.programmer the other day about how Java sucks and why
new developers aren't flocking to bask in its glory.

And, while it started out with a few broad points, the thread quickly
moved into several small points, and the various merits of those
points.

One of them, in an example used by Mike Laurence, discussed the merits
of deprecating inner classes in favor of pure OO, since inner classes
are a superset of pure OO.

However, when I think about the existence of inner classes and pure OO
more, I don't think that it really matters to newbies whether or not
both inner classes and pure OO exist, since either:

1. They don't know about the existence of both
2. They know about the existence of both, but they don't really care

And, as I thought about it more, I came to the conclusion that it is
actually better to have both inner classes and pure OO in Java. This
follows my thinking that the biggest barriers of entry to learning a
new language are focused on a few main things:

1. New vocabulary
2. Grammar, and non-grammatical constructs
3. Various new concepts presented within the language (C: pointers,
ruby: blocks, lisp: macros,functional style)

Note: not meant to be a complete list of new concepts from various
languages, just a few examples.

There are many reasons why languages do well and others don't, but I
think one of main reasons a language does well is that it has
similarities to the current collection of popular languages.

New concepts can be difficult to learn, but if you look at Ruby, C++
and C#, all languages that are less expressive then Java, yet have
concepts not commonly used in Visual Basic/Cobol that are similar to
Java (final classes, bytecode), they tend to do better, IMHO, because
they have strong syntax and lexical similarities to Visual Basic/Cobol.

I think that the difference in the 3 main points up above constitutes
what I call a language's "standard deviation" to the current most
popular languages. The corollary is; a language that offers a low
standard deviation will have a higher appeal then a similar language
with a higher standard deviation. (Note: I'm doing some
pseudo-statistics at work; well, the statistics are real, but I'm not
an real statistician, hence the "pseudo" part)

For example, why did Meyer invent Eiffel? It has a lot of concepts that
Java employs, but its significantly less expressive. Between inventing
Eiffel and just using Java, why didn't Meyer just use Java, or Groovy?

I think one of the big reasons (perhaps unconsciously), is that Meyer
recognized the "standard deviation" between both Java and Groovy, and
set about designing a language that was closer to most developers'
current expectation of a language.

I think that Java would gain broader appeal as well by reducing its
"standard deviation". Since I like the current syntax of Java, and I
suspect a lot of other people do, that only leaves grammar/diction and
concepts.

Also, since I happen to think that Java's concepts (autoboxing) are
some of the best ever invented, I'll nix that idea as well.

This leaves:

1. grammar / vocabulary

I think Java would do well to add extra keywords that are very similar
to the existing favorite languages. Not only would this not invalidate
any existing literature, but it would help ease the learning curve that
new developers face when learning a new language, especially one with a
much different syntax, such as Java.

I'll readily accept that whatever is currently popular may not be the
best way to do something, but by not giving developers a sense of
familiarity, you force them to basically start from scratch. Once
people give Java a chance, they'll come to understand the beauty that
it conveys, but most people already don't have enough time to spend
learning new concepts they can use in their existing language, much
less spend time learning new concepts, a radically different syntax,
and a whole new vocabulary!

I think that we (the Java community) should imitate some vocabulary of
the more popular languages to increase membership. As an example, I was
thinking it would be fairly easy to add things like "Option Explicit",
"GIVING", "COMPUTE RESULT".

They could even be added into a new vocabulary (maybe a "new Java
developers dictionary") so someone could just read that dictionary, and
be greeted with keywords that more closely mirrored their expectations.

Here's a sample:

Option Explicit
Private Sub Test { MULTIPLY 5 BY 3 GIVING X } End Sub


See, that's all I'm talking about. Just creating new keywords that look
an awful lot like existing Java keywords, but have spelling and
pronunciation that are more familiar to new developers. Now, as a new
developer, I can focus on learning the different syntax, those funky
inner classes things, etc, all while having the familiarity of my
favorite language ;)

Note, I think my arguments are implicitly supported by William's blog
post about why Java in an unacceptable Java. Its not that the points
brought up were technically sound, but rather that they represent the
kind of problem I'm talking about; things behaved differently then he
had come to expect from most "mainstream" languages. I also think this
is what Geoff was trying to explain, but that he took a different
approach then I did.

It's all about minimizing standard deviation.
 
C

Chris Uppal

Wibble said:
Heee Heee, it was funny. Had me going until the end.

Me too. Very well done. Almost Xah-ish ;-)

Incidentally, in case you weren't sure, it /is/ a joke. He's posted an amusing
variation to soc.culture.usa: 'Decreasing the "standard deviation" of English",
the punch line being:
I'll join you en un minuto.

-- chris
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,051
Latest member
CarleyMcCr

Latest Threads

Top