From: Florian Gross Date: 2004-07-21T03:17:10+09:00 Subject: Re: VB(ish) replacement 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] http://www.tmtm.org/en/mysql/ruby/ [15] http://ruby-dbi.rubyforge.org/ [16] http://activerecord.rubyonrails.org/ [17] http://raa.ruby-lang.org/project/win32ole/ Regards, Florian Gross