Why Ruby on .NET - Learning from Experience
Back when .NET was brand new I remember looking around and feeling a little lost. Lost because when you’re learning an alpha or beta version *platform* you’re on new ground. It’s not that the syntax or base class library were difficult - they weren’t - since those are really just details. The big question was how do I design “good” .NET applications. In the VB/C++/COM world I’d grown up in much of what I knew was not applicable. Additionally in that world there were plenty of resources I could turn to learn “good” design. In the early days of .NET such resources were few and far between. But what I (and obviously so many others) quickly discovered was that this new platform wasn’t really that new. It was “standing on the shoulders of giants”, and so were the best practices. I learned a ton about how to design and implement .NET applications from reading the literature on Java (and to some extent C++). Even today must read books for .NET developers/architects are works like DDD and PoEAA, which are not .NET specific, most sample code is not .NET and whose authors come from non-.NET backgrounds.
Fast forward 5 or 6 years in the .NET world and the C# language we thought we knew is starting to look very strange. We’re reading about things like lambdas, extension methods, closures, and on and on. We’ve been trying to grasp good OO design since before .NET and now this term “functional” programming keeps getting thrown around.
I’m glad I started playing around with Ruby several years ago, because those “new” C# concepts are old hat. Which means if you really want to understand how, when and why to use such features you’re going to end up bumping into Ruby. (Or LISP which is still on my “must grok someday” list). When C#2.0 came out much of the discussion that I read referenced Ruby. (for see this post)
One of the top reasons I think that a .NET developer should learn Ruby is to gain a deeper understanding of these features so they can be a better C# developer.
(But it’s important to keep in mind that while Ruby is helpful for understanding these feature, it is different. I don’t want to get into negative C# v Ruby bash, but I think I can safely assert that Ruby is still ahead of C# in it’s implementation of these and other features making it a useful .NET language in it’s own right but that’s another argument for another day.)
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Leave a Reply