Dave Boland wrote:
What they seem to be looking for is:
1. High level language, but not necessarly VB compatible.
2. OOP
3. Reasonalble learning curve
4. Cross-platform
Ruby has all these features. Blocks are a very handy tool for high-level programming and Ruby's OOP model is part of its design and is very consistently used throughout the language. The basics of Ruby are easy to understand and I guess that new users will be able to program simple things in it fluently in ~3 days. There'll be more to learn after that, but it should all feel like natural extensions of the basics.
5. IDE and ability to graphically design windows.
There are IDEs, ArachnoRuby[1], and FreeRide[2] come to mind. There's also a plug-in for Eclipse[3], but it still looks to be in an early stage. AFAIK there's no way of using Ruby in a Delphi-style way for designing windows yes, but this should be possible with Gtk[4]. (Gtk lets you load windows from XML files and there are stand-alone editors like Glade[5] available for that format.)
But still, I'd say that there's nothing that's as polished as Visual Basic's IDE available yet.
6. Distribute programs as .exe's, so some sort of compiler needed.
This is possible with ExeRb[6] or RubyScript2Exe[7].
7. Serial communications library (RS-232, 485, USB)
A search on the Ruby Application Archive[8] turned up Ruby/SerialPort[9] and Win32Serial[10] -- I've not used them yet so I don't know if they're able to do everything you need. However Ruby lets you easily (way easier than the other languages on your list) write extensions in C and other languages so you could still add functionality in this area yourself in case everything else fails.
8. SNMP library
I'm no expert in this area. A quick search on Google turned up http://blog.humlab.umu.se/samuel/archives/000495.html -- it appears that Ruby only has basic functionality for this right now, but that you can still use the snmpget tool directly.
9. Good performance (not expected to be as fast as C/C++)
Ruby is slower than both Perl and Python -- I don't know if it's too slow for you, but I'd suppose that some benchmarks might give you definitive answers. Ruby's performance might change with Rite or a Parrot-based Ruby. (But both won't be released in the closer future.)
10. Windows are native to each O.S.
This is possible with RubyGtk if you use a native renderer. Such a native renderer for windows is WIMP[11]. I've used this and it seems to look nifty. Here are some screen shots:
- http://noegnud.sourceforge.net/flgr/der_nativ.png (Gtk-based X-Chat2)
- http://noegnud.sourceforge.net/flgr/als_ob_flgr_arbeitet.png
(Freeciv, a Gtk-based game and a custom Ruby application which uses
RubyGtk. I'm using a non-standard Windows XP theme here.)
There are also other Toolkits available from within Ruby. I've heard that wxRuby[12] (wrapper for wxWidgets) aims to look native on a lot of platforms, but I've not really used myself yet. Another one you might want to have a look at is FXRuby[13].
I've only really used Ruby/Gtk myself yet (for my usage it seemed to have the nicest Ruby bindings) -- maybe somebody else can offer a detailed comparison between the different toolkits...
11. Database support of Access and MySQL
You can either use MySQL directly via MySQL/Ruby[14] or you can use the higher-level Ruby/DBI[15].
There's also the very high-level ActiveRecord[16] which tries to abstract SQL away as efficiently as possible. It's a very impressive project and has received great feedback.
The only way I can find for using access is directly via COM right now. This would be done with Win32Ole[17].
Here are the URLs for the libraries and projects I mentioned:
[1] http://www.scriptolutions.com/arachno_ruby.php
[2] http://freeride.rubyforge.org/wiki/wiki.pl
[3] http://rubyeclipse.sourceforge.net/
[4] http://ruby-gnome2.sourceforge.jp/
[5] http://glade.gnome.org/
[6] http://exerb.sourceforge.jp/index.en.html
[7] http://www.erikveen.dds.nl/rubyscript2exe/index.html
[8] http://raa.ruby-lang.org/
[9] http://ruby-serialport.rubyforge.org/
[10] http://grub.ath.cx/win32serial/
[11] http://gtk-wimp.sourceforge.net/
[12] http://wxruby.rubyforge.org/
[13] http://www.fxruby.org/
[14] MySQL/Ruby
[15] http://ruby-dbi.rubyforge.org/
[16] http://activerecord.rubyonrails.org/
[17] http://raa.ruby-lang.org/project/win32ole/
Regards,
Florian Gross