From: jcb@... (MetalOne) Date: 2002-09-20T08:59:29+09:00 Subject: Re: Python the new Lisp, what about Ruby then? 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.