Strange this should be posted today.
Just yesterday I read the following link:
Comments by Bruce Eckel stating that Python is superior, and Ruby is
not worth learning. Unless you just like learning new languages.
I don’t agree, but the comments are interesting.
Bruce Eckel wrote “Thinking in C++” and “Thinking in Java”.
http://www.mindview.net/Etc/FAQ.html#Ruby
I have been on a bit of language learning quest lately.
There are many many interesting languages out there.
In no particular order:
Ruby, Python, Perl, Haskel, (OCaml, SML, ML, F#), Lisp, Lua,
Dylan, GOO, Self, Sather, Mercury, Merd, and I am sure many more.
I used to love C++. After much VB and Java programming, I decided
some things were just harder to do in C++ and C++ was not always the
best choice. VB is a beyond belief crappy language. However, the
development environment is very nice and it generates tons of code for
you at the push of a button. For some things it is hard to beat, but
I never liked it. Java seemed liked the perfect compromise. Easy to
learn, easy to use, reasonably consistent. Most of the power of C++
without the headaches. I fell out of love with Java because of Swing.
It is my belief that a windowing tookit must support native widgets
or it will never be accepted by end users. It might be fine for in
house development, but not for the world at large. This led me to
Python and WxWindows. However, before I really got there I found
Ruby. So far I like Ruby, but the only native windowing toolkits are
Tk(primitive widget support) and VRuby(documentation in Japanese). So
I tried Python and wxWindows.
However, the first wxWindows program that I wrote, contained just six
buttons on a form and it had problems. It would not repaint correctly
when sized.
At this point, two lights went on in my head.
One, there is a big problem with all languages other than C and C++.
They don’t integrate easily with C/C++ code. All languages provide a
way to integrate, but it is not easy. If you must leave your
languages standard library to make an OS call, it is going to be
difficult. Maybe not for one call, but for many like the GUI calls,
it is tough going. Thankfully there is SWIG. However, a couple days
ago I tried running SWIG on WinUser.h and it failed miserably. I am
not going to be calling CreateWindow from Ruby anytime soon.
Two, Java is a really boring language compared to Python and Ruby. It
really added nothing new to the world of programming languages. I
don’t really understand why Sun created it. It is simplified C++ with
garbage collection. I suppose somebody had to do it.
So where does that leave us.
If you need a quality GUI, C++, C# and VB are about the only way to
go.
If you don’t need a quality GUI or you’re willing to build a sockets
interface from the GUI to your code, then the world of languages opens
up. I have realized that I received a poor education in functional
and logical languages.
You can write Quicksort in 4 lines of Haskell code. That alone tells
me that there is something about Haskell that might be worth learning.
But of the 15 languages that I listed how to choose which ones to
learn? Which are best? Impossible to tell (In Yoda voice).
I decided to learn Ruby and Haskell for now, just for educational
purposes.
I can’t see getting to use either on a job anytime soon.