in defense of Java, again [was: Re: Task Scheduling]

Hans Fugal hans at fugal.net
Wed Jan 25 19:25:09 MST 2006


On Wed, 25 Jan 2006 at 16:37 -0700, Bryan Sant wrote:
> Another example is Rails.  Rails is cool.  Now make a GUI app.  Make
> an image manipulation program.  Make an enterprise scale system.  I
> don't think Ruby is up to the task.  I gain some things but loose a
> lot more.  Nonetheless, I'll surely learn Ruby because it's fun.

I don't understand why you feel that dynamic languages are not "up to
the task" of doing what you feel are "serious" tasks. 

Let's step back and rewind a few years. When I first learned Java, GUI
apps were much more painful to create than they are now in ruby. Swing
came along and things improved, but my memory of swing implies that
doing it in ruby is still easier. Haven't tried SWT.

Was java always enterprise-scale? I'm sure Sun had that in mind from the
beginning, so maybe it had that potential, but it really was slow. The
whole world didn't just imagine that part. Its performance is good now,
but it was slow.

Image manipulation program... I'm not sure what you're referring to, is
there a popular one written in java? I'm not much into image
manipulation so I may have just missed it. I am an audio guy though, and
I have written audio processing in C/C++ and ruby both, so I feel like I
can speak to this point to a degree. It's slower in ruby, just like it
(is|was) slower in java than in C. Even so, in some cases I might choose
ruby over C even in this domain - where speed wasn't as critical. Where
UI and speed both are critical, I'd probably do the signal processing in
C and the UI in ruby. There's certainly nothing stopping me from taking
that approach, and it works well.

Will ruby overcome the speed/"enterprise" issue? Only time will tell but
I believe it will. Some very smart people are working hard on that as we
speak. When Java started out, it was the crazy language doing this OO
stuff that nobody could possibly make fast like C. Just remember that.

Oh, and you're right, rails is cool and ruby is fun. Make the right
choice for your needs today, but don't underestimate the up-and-comings.
It's not _ruby_ that "isn't up to" your tasks, it's the current
implementation thereof.
 
> These other languages are improvements for certain problem domains. 
> But I personally haven't seen anything in another language that just
> made me want to dump Java because it was so much better (if better at
> all).  Perhaps I just see what I want to see.

Perhaps you have too much invested in Java. I'm not saying you're the
devil for it, don't get me wrong. I've got this C# book sitting on my
shelf that I've been meaning to read, and I've always wanted to take a
look at python. But my needs have always been served by C++ and ruby, so
I don't. Fact is, even a language like ruby does take effort to learn.
Those of us over here will tell you it's worth the effort, but only you
can really decide whether to take that plunge. If you're really
interested in doing some osmosis on ruby, stick Jim Weirich's blog in
your RSS feeds: http://onestepback.org/index.cgi He's a ruby bigshot
that comes from a java background, and still does java by day if I'm not
mistaken.

> Partly I feel this is why dynamic languages are praised so much.  They
> are often used for small projects that require fewer people.  The
> natural consequence is that the team is more productive (because it's
> small, not necessarily because of language X per se).

I don't have statistics, but I believe the majority of programmers out
there are on small teams doing in-house applications. So this is a big
deal. I agree with you though, different tasks take different tools.
Sometimes java is that tool (I would argue primarily because of the
prior work rather than the language itself, but the fact remains),
sometimes C is that tool, etc. But a lot of the time, a dynamic language
does the job and does it with less pain.

> As dynamic languages gain popularity, they will be used for bigger and
> bigger projects with bigger and bigger teams and I believe we'll see
> productivity tank.  The human dynamic is a far bigger productivity
> issue than any underlying programming language used.

Time will tell. I believe you are erroneously equating dynamic language
with some language you saw once that had scaling problems and happened
to be dynamic. It is my belief that some dynamic languages are
definitely capable of scaling. I'd put ruby in that category, probably
python, certainly smalltalk, lisp if you have masochists like
levi to write it (j/k), and there's probably others.

Wow, I rambled more than I thought I would. Let me wrap up by saying I
like java. When I think back on my java days I get some of that same
feeling I get when I think back to my first girlfriend. I like to think
that I liked java then because it was worth liking, so even though we've
grown apart I still keep a cup of tea on for it. Even typing
"System.out.println" and "public static void main" brings back some good
feelings instead of evoking utter horror as it should.

-- 
Hans Fugal ; http://hans.fugal.net
 
There's nothing remarkable about it. All one has to do is hit the 
right keys at the right time and the instrument plays itself.
    -- Johann Sebastian Bach
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://plug.org/pipermail/plug/attachments/20060125/60569db3/attachment.bin 


More information about the PLUG mailing list