I've recently started doing enough work in Ruby that I felt I'd justified needing to become an idiomatic programmer in Ruby. It's been a long-held ambition since I read Martin Fowler's rave about Ruby and then the book Code Generation in Action.
The projects that justify it are a rewrite of the AppMaker code generator, the need to write scripts for a new client who also has Ruby on Rails developers (and no trace of Python) and a faint ambition to script Google Sketchup which I'm using for carpentry and DiY projects.
The choice of Ruby vs Python for writing code generator templates generated some comment last time I raised it. I basically came to no conclusion other than nervousness over Python whitespace vulnerabilities. I decided I needed more real experience with Ruby to educate my gut.
I've been a software developer, with a few forays into system management, for about 25 years and much of that in object-oriented langauges, leading a Macintosh-originated trail through:
- Object Pascal (the Apple/Wirth version)
- Think C (simplified C++)
- C++
- Objective-C
- Python
- REALbasic
- C#
- Ruby
I'm using all bar the first two concurrently for various clients.
I've dabbled in Smalltalk along the years due to fascination in OO thinking and desire to self-educate but not managed to find a client project where I could use it for serious development. I'm also a fan of Smalltalk-style IDEs.
On the topic of IDEs, whilst I sit with a terminal window and irb running to test expressions, I'm more comfortable with some kind of GUI IDE and so I'm using Komodo. As I start exploring IronRuby I will be looking for Visual Studio integration of some kind. Part of my justification for wimpishly using IDEs is that I have to live in an IDE environment for much of my desktop development and it's easier to keep an IDE mindset than to flip between using an IDE and thinking command line.
My main Python use has been testing infrastructures and writing complex XML processing and generation code in the OGC standard geospatial information world. I've become fond of mixing XPath expressions with simple iterative logic, as an alternative to XSLT. I fell in love with the Haskell-inspired list comprehensions and generator expressions.
I'm a natural toolsmith and lean towards declarative systems and a compositional style. This is the bias I take into Ruby. In particular, I'm looking for how to move my Pythonic style of data processing into Ruby idioms.