I heard an interesting comment at Devs4Devs on Saturday. We were talking about Ruby when a point was raised - that an enterprise application handling sensitive information (such as credit card details) should not be written in a scripting language. The argument was that a compiled language such as C# is far more appropriate.
While I love C# and the .NET Framework as a whole, I disagree with this notion.
Ruby is a powerful language and its been getting a lot of attention lately - particularly with the popularity of Rails in the last few years. Several of the more common websites have been written using Rails (TekPub, Yellow Pages, Shopify, GitHub) - it isn’t just the socialites like Twitter anymore. These guys have proven that Ruby is a stable platform worth considering.
The natural argument is that C# compiles to IL code which is more secure than a script. Granted it’s easier to open up a .rb file and edit a statement or two than open up a .dll or *.exe file, but with Mono.Cecil and the Reflexil plugin to Reflector, it’s also possible to open up an IL assembly and modify it. You can even save a patched version with the same strong name key!
It comes down to using the right tool for the job. C# is a great language and the .NET Framework supports it well, but sometimes the scripting languages like Ruby or Python are more concise and can save time. Be pragmatic, analyze the situation and choose the right tool for the job. C# is not a silver bullet, nor is Ruby.