One argument script pimps use frequently is that it doesn’t
matter what tools a contractor uses to build a house as long as the finished
product is the same.
The problem with this argument is that the premise and the
analogy are flawed. Comparing the language to the tools is not quite
accurate. The language is more aptly compared to the building materials
used instead of the tools. The tools would instead include things like
the IDE. With the analogy corrected we now see that the choice of
building material is very important. Using 2x4's instead 2x6's will have
a big impact on insulation properties (thicker wall cavities) and cost.
Is this important? Absolutely!
Unfortunately, too many scripting language fans (script pimps) make the same
flawed analogy in order to justify the use of their pet language instead of a
higher performance language like C++ (or C#, Java, etc). Scripting
languages like Ruby are slower then compiled languages. Also their nature precludes them from having
good IDE support. This is because much
of the meaning (context) can’t be derived until runtime so things like IntelliSense
become difficult if not impossible to implement.
Following the scripter’s analysis we are supposed to assume
that scripting languages allow faster construction which I would say is another
falsehood. Yes, some contractors might
be able to cut wood just as fast with a handsaw but most want to use as much
automation as possible. Hence, table
saws, compound miter saws with laser guides, etc. These automation tools are closer to Visual
Studio than VIM.
In my experience with Ruby (among other languages) I found
that the resulting programs were usually slower, which a scripting language
will be by its nature. I also found that
the emperor wears no clothes!
Shockingly, developing in a scripting language is slower because of the
lack of automation tools. Example, try
to find all references to variable in a Ruby on Rails project. Now try the same thing in a C# project using
Visual Studio. In Visual Studio it’s a
right click and “Find All References”.
In VIM you could search for the references but you don’t have any
support for context. You don’t know that
is the only reference to that variable.
You are using a handsaw instead of the best tools available.
I'm sorry but reality demands that 1 = 1 and slower is slower and speed is
important.