Hi Tom,

On Sat, Dec 22, 2001 at 12:14:12AM +0900, Tom Karas wrote:
> Hello rubiest,
> 
> i am willing to learn either a script-language (python, ruby) or a
> non-script-language (c++,java,delphi-kylix). 

These questions end up being all about personal opinion, but I'd like to
share my own thoughts.  Maybe the balance of everybody's ideas will help
you make your decision.  This is a pretty long rant, so folks can feel
free to just hit "Delete" and move on ...

First off, don't start with C++.  That's what I did.  It's a very hard
language to learn "first".  If you were learning in a classroom environment,
or with a guru to offer advice, it might be a little easier.  I didn't, and
ended up spending roughly three years of my spare time before I felt like I
really had the hang of C++.  Of course, I could be just a little slow in
the head :-)

Java is okay, and you will be able to find plenty of reading material, both
online and in printed form.  I have philosophical issues with the language,
though.  I keep bumping into things that I'm used to doing in C++, Ruby,
and Python, but am prevented from doing by Java's language rules.  Also,
the sluggishness of Java makes me reluctant to go in and fiddle with my
programs for experimentation.  Changing a few lines of a large file can result
in several minutes waiting for compilation, and a few more minutes waiting
for Linux to get the Java application warmed up and running.  I'm very
impatient, so that sort of thing turns me away quickly.

Ruby, Perl, and Python are a lot of fun to learn.  Scripting languages
give you a sort of "instant feedback" that's very satisfying.  Building
useful programs takes much less time, and the libraries of available code
make it easy to create complicated applications with little effort.

Python was largely written to make it easier for people to learn programming.
I'd say it succeeded.  It's a great language to learn, and fun to teach.
Heck, I taught Python to my Dad last year, and he'd never programmed in his
life - well, a little BASIC, but that doesn't count as programming :-) 

My main problem with Python is that it's now moving too quick for the
tutorials to keep up.  My favorite beginner's book ("The Quick Python
Book") is now woefully out of date with the current features of the language.
Your neighborhood Python expert may be really good with version 1.5, but
still hasn't had a chance to get up to date on 2.0, and doesn't even know
about all the new stuff in 2.1 or 2.2.

My favorite language (today) is Ruby.  It has clear, consistent rules which
make it almost as easy to learn as Python.  It also has the flexibility of
Perl, which basically means that you can build any kind of application.

Ruby is all OO.  As an Object Oriented language, it succeeds beyond anything
that I've ever seen.  If you are interested in learning a conceptually clean
language that makes it easier to learn and experiment with OO programming,
Ruby is definitely the way to go.  It will make life much easier when you
decide to pick up a language like C++ (although you will wonder why C++ 
doesn't implement feature "x", "y", or "z").

Ruby's Tk interface is nice.  It's not something I focus on, since I mostly do
Web stuff and system administration.  It looks consistent with Perl::Tk and
Python's Tkinter, though.  I've not heard any complaints, at least.

The only disadvantage of Ruby is its youth.  Because Ruby has not been in
wide use (in the US) for very long, there is not much English
documentation compared to Python.  There are also minor technical issues that
are being ironed out as the language evolves.  It's still kind of a "bleeding
edge" language - very powerful, but with some rough edges that could catch
you at unexpected moments.

The documentation problem is getting fixed in a hurry, though.  Last year, 
there was only one book.  Now there's two.  Within the next year,
I think the number goes up to a half-dozen.  I'd guess that Ruby's
documentation is roughly where Python's was two or three years ago, but
it's catching up quickly.  And that documentation is very up-to-date.

The Ruby community is also the friendliest I've seen.  Actually, most of the
language communities are friendly, but Ruby's is new enough that experts
haven't had time to get exasperated answering the same questions over and
over.  Even though I mostly lurk in the Ruby mailing list, I feel like I'm
taking part in something new, exciting, and fun.  That attitude makes a
language much easier to learn, believe me!

Okay, I think that's it.  You would be very satisfied with either Python or 
Ruby for a first language.  Ruby is younger than Python, but has the advantages
of clean OO and a very friendly community.  Python has the advantage of
maturity and a large collection of tutorials and documentation, but the
disadvantage of moving too quickly for the documentation to be current.

Wow.  This was a much longer rant than I was expecting.  I hope it didn't
put anybody to sleep.  Good luck with your choice!

Brian Wisti
brian / coolnamehere.com

-- 
------------------------------------------------------------
Visit http://www.coolnamehere.com/
It'll kill some time.