Why I've Learned to Love Interpreted Languages

30 Jan 2013

I’ve spent the most of my development career working in the .NET stack. I loved it but was ready for a change. So I switched to ruby and little did I know how much I was missing. Granted, some of my bias might be due to the tooling (or lack of) around the languages. However, as you’ll see, I didn’t work at the typical .NET shop.

Let’s begin with my experience with C#. I worked for a company called ExtendHealth. They were unlike any .NET shop I’ve known. Not only was everyone incredibly smart, but they were open minded. They had seen the sort comings in the languages they used and looked for improvements. They had moved from CSS to SCSS. They used rake to automate development tasks. Coolest of all, they teamed up with a company called Dovetail to create an open-source alternative to ASP.NET. If you haven’t heard of FubuMVC, I’d highly recommend it!

FubuMVC has some incredible features. Probably the most jaw-dropping are what they call Behavior Chains. They are similar to ActionController filters. In fact, a lot of awesome things you have in rails, they have in Fubu. They have an asset pipeline, promote convention over configuration, and provide a ton of hooks to override/enhance behavior. So my love for ruby isn’t from moving to rails from Fubu. But the compiling!

Visual Studio is crazy slow! It has gotten tons better over the years. Probably the biggest reason I love ruby is the lack of waiting for something to build. .NET is doing some interesting things and in the future you might have the option to have a hybrid approach. See “The Future of C#” for more on C# repl. Fubu supports a lot of interpreted-like features by scanning all the files on startup. This allows some awesome conventions that would normally seem impossible in .NET.

Rails isn’t blazing fast either on startup. But the ability to change any controller without waiting for a re-compile more than makes up for it. Ditching Visual Studio for VIM sure helps also. Those huge projects with hundreds of files don’t take 30 seconds to load. I know, I’m ranting about the tools and not the language. I’ve been extremely surprised at the difference this has made.

The benefits of not compiling start with the hardware. I’ve got a similar setup on ruby as I did with .NET. Same Intel I7 processor, 8GB RAM and an SSD. When debugging in .NET I noticed my machine would sometimes be brought to it’s knees. While in ruby I have yet to use half the resources. This lifts the burden of upgrading the hardware with each web framework upgrade. It also has allowed me to stay more focus when debugging. Rather than those short times while I wait for something to compile, I can keep my train of thought and continue on the problem. I wouldn’t have thought this would make such a big difference as it has.

All in all, interpreted languages aren’t the silver bullet. But they sure have their place. As they continue to improve in speed, I think the reasons to not use them are diminishing!

How do you feel?