From: jcb@... (MetalOne) Date: 2003-08-28T17:43:03+09:00 Subject: Re: Why would you abandon Ruby? (was) > I appreciated your synopsis. But you didn't mention Smalltalk. I'm curious > why. There are many factors to choosing a language. 1. Language Syntax. 2. Built in Libraries 3. O/S API support 4. 3rd party libraries 5. Ease of creating bindings to external libraries 6. Tools (debugger, profiler, refactorer, IDE) 7. Execution speed 8. Memory footprint 9. Start up speed 10. Quality of implementation 11. Dynamically typed or Statically typed. .... I think my previous post focused heavily on execution speed and issues that arise when the tools you need are not in the built in libraries. The post kind of implied that even though there are hundreds or thousands of languages, these two issues often force C or C++ upon the developer. If these two issues do not come into play, then C and C++ may be the worst choice for language. At this point you could start comparing all the others against each other. I don't know Smalltalk, but I am aware that it is interpreted and dynamically typed. Thus, it has speed in the range of Perl/Python/Ruby. Ruby is purely interpreted thus on the slower end of these. Perl/Python/Smalltalk are translated to byte code first, and thus a little faster. LISP is interpreted and dynamically typed, but often can be compiled to native code. Thus LISP can have a significant speed advantage. Perl/Python/Ruby/Smalltalk are all so much slower than "C" though, that I tend to consider them to be the same. I did not intend to write up subtle differences between languages that I think are basically in the same category. From what I here Smalltalk has a great standard library and great tool support. Perhaps those two factors would make Smalltalk a superior choice. I imagine choosing amongst Python/Smalltalk/Ruby to be quite difficult. I personally do not like the Smalltalk syntax, but I am unfamiliar with it. Some people love it. Ruby syntax, I liked immediately. I think Ruby has the best syntax of any language. Ruby needs more bindings and more documentation. More speed would be nice, if native compilation could improve speed to Java and LISP levels. The choices can get really tough depending upon what you need to do. I want a great tool for creating GUIs. I abandoned Java because I dislike Swing. When it comes to GUIs, there are 2 classes. Widget emulation, also called lightweight, and native widgets. There is somewhat of a religious war as to which is best. I like native widgets and Swing is an emulation model. AWT is a native toolkit, but incomplete. Depending upon the version of Smalltalk you use, you will get native widgets or emulated widgets. IBM's Smalltalk uses native widgets and the SWT for Java is derived from this. Maybe someday I will play with SWT. It takes considerable playing around with a GUI toolkit to know if you like it, and it varies from platform to platform. With Smalltalk, you will most likely use the built in GUI toolkit. With Java, Sun encourages the use of Swing. You might be able to use SWT, but you'll never get a Java certified product that way. With Perl/Python/Ruby you're free to choose amongst Tk, GTK, FLTK, WxWindows, FOX, etc. depending upon binding availability. Of these, only Tk and WxWindows use native widgets. Both of these have an X-Windows bias when it comes to displaying bitmaps. For example, it is not possible to display 256 level grayscale bitmaps using only 8 bits for each pixel. 24 bits must be used. This is less than optimal on a Win32 system. I seem to end up just writing C++ code to Win32 to get stuff done efficiently. I am sorry I rambled a bit. I hoped that helped somebody. I am just frustrated because I dislike C++ and I can't seem to get away from it.