# STRONG dynamic typing favors tools..?

**URL:** <https://www.ruby-forum.com/t/strong-dynamic-typing-favors-tools/125266>\
**Category:** Ruby\
**Created:** [January 7, 2008, 4:39pm UTC](https://www.ruby-forum.com/t/strong-dynamic-typing-favors-tools/125266 "2008-01-07T16:39:34Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![John\_Papas](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e9a140/32.png) [@John\_Papas](https://www.ruby-forum.com/u/John_Papas)\
**Post date:** [January 7, 2008, 4:39pm UTC](https://www.ruby-forum.com/t/strong-dynamic-typing-favors-tools/125266/1 "2008-01-07T16:39:34Z")

</div>

One of the things I like about languages like Java is that since it is  
statically typed I get tools that assist me when I write code, for  
example if I misspell a function name.

What I really hate about dynamic languages is that, for example in  
JavaScript if I misspell something there is no tool to find it and no  
(deterministic) test locate this bug. I could actually deploy and find  
the mispelled name only when I get its use case.

Does the fact that Ruby is STRONG dynaically typed, assist tool  
developers? Can I have tools with minimal analysis capabilities?

---

<div class="post-metadata">

**Author:** ![John\_Papas](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e9a140/32.png) [@John\_Papas](https://www.ruby-forum.com/u/John_Papas)\
**Post date:** [January 7, 2008, 5:20pm UTC](https://www.ruby-forum.com/t/strong-dynamic-typing-favors-tools/125266/2 "2008-01-07T17:20:30Z")

</div>

Ruby In Steel Developer analyzes code as it is written to provide  
correct code completion (IntelliSense). You can also add optional ‘type  
assertions’ in comment blocks to provide extra typing information for  
parameter completion. More info here:

[http://www.sapphiresteel.com/Ruby-In-Steel-Developer-Overview](http://www.sapphiresteel.com/Ruby-In-Steel-Developer-Overview)

best wishes  
Huw

SapphireSteel Software  
Ruby and Rails In Visual Studio  
[http://www.sapphiresteel.com](http://www.sapphiresteel.com)

---

<div class="post-metadata">

**Author:** ![John\_Papas](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e9a140/32.png) [@John\_Papas](https://www.ruby-forum.com/u/John_Papas)\
**Post date:** [January 7, 2008, 4:55pm UTC](https://www.ruby-forum.com/t/strong-dynamic-typing-favors-tools/125266/3 "2008-01-07T16:55:57Z")

</div>

John Papas wrote:

> developers? Can I have tools with minimal analysis capabilities?  
> NetBeans warns you about many of the “usual” cases of misspelling and  
> coding errors in Ruby. (Be aware that all types of checks are not  
> enabled out of the box. Look at the tutorials to get a feeling of what’s  
> available.) There seems to be other editors around with intelligent code  
> parsing as well.

Best regards,

Jari W.

---

<div class="post-metadata">

**Author:** ![John\_Papas](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e9a140/32.png) [@John\_Papas](https://www.ruby-forum.com/u/John_Papas)\
**Post date:** [January 7, 2008, 6:03pm UTC](https://www.ruby-forum.com/t/strong-dynamic-typing-favors-tools/125266/4 "2008-01-07T18:03:38Z")

</div>

John Papas:

> What I really hate about dynamic languages is that, for example in  
> JavaScript if I misspell something there is no tool to find it and  
> no (deterministic) test locate this bug.

The idea behind unit testing is that they catch such things for you.  
Better yet, Test- (or Behaviour-) Driven Development means your code  
does what itâ€™s asked to do, so it doesnâ€™t really matter if there are  
any misspellings inside or not.

– Shot

---

<div class="post-metadata">

**Author:** ![John\_Papas](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e9a140/32.png) [@John\_Papas](https://www.ruby-forum.com/u/John_Papas)\
**Post date:** [January 7, 2008, 6:33pm UTC](https://www.ruby-forum.com/t/strong-dynamic-typing-favors-tools/125266/5 "2008-01-07T18:33:43Z")

</div>

On Jan 7, 2008, at 10:03 AM, Shot (Piotr S.) wrote:

> > What I really hate about dynamic languages is that, for example in  
> > JavaScript if I misspell something there is no tool to find it and  
> > no (deterministic) test locate this bug.

it’s a bit tangental, but you really shouldn’t be spelling anything if  
you are comfortable with your editor - at least not more than once.  
for instance, in vim, after i say something like

foobar = 42

i would just type

fo and the foobar var is auto completed in much the same  
way as the shell auto completes.

it’s extremely rare that i would actually spell out any var longer  
than two chars. using this technique i find that i rarely, perhaps  
once per month, make a spelling error that causes me an issue.

regards.

---

<div class="post-metadata">

**Author:** ![John\_Papas](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e9a140/32.png) [@John\_Papas](https://www.ruby-forum.com/u/John_Papas)\
**Post date:** [January 8, 2008, 6:53am UTC](https://www.ruby-forum.com/t/strong-dynamic-typing-favors-tools/125266/6 "2008-01-08T06:53:02Z")

</div>

Shot (Piotr S.) wrote:

> John Papas:
> 
> > What I really hate about dynamic languages is that, for example in  
> > JavaScript if I misspell something there is no tool to find it and  
> > no (deterministic) test locate this bug.
> 
> The idea behind unit testing is that they catch such things for you.  
> Better yet, Test- (or Behaviour-) Driven Development means your code  
> does what itâ€™s asked to do, so it doesnâ€™t really matter if there are  
> any misspellings inside or not.

Ah, but then there’s “heckle”. Heckle inserts random bugs in your code,  
and if your tests don’t catch them, then the tests aren’t sufficient. 🙂

---

<div class="post-metadata">

**Author:** ![John\_Papas](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e9a140/32.png) [@John\_Papas](https://www.ruby-forum.com/u/John_Papas)\
**Post date:** [January 8, 2008, 3:45pm UTC](https://www.ruby-forum.com/t/strong-dynamic-typing-favors-tools/125266/7 "2008-01-08T15:45:36Z")

</div>

John Papas wrote:

> One of the things I like about languages like Java is that since it is  
> statically typed I get tools that assist me when I write code, for  
> example if I misspell a function name.

This doesn’t actually have anything to do with Java being statically  
typed.

> What I really hate about dynamic languages is that, for example in  
> JavaScript if I misspell something there is no tool to find it […]

Again, this doesn’t actually have anything to do with the dynamic  
nature of those languages.

In fact, pretty much all of the features that are now associated with  
IDEs for static languages, were invented in Smalltalk IDEs: code  
completion, class browsers, automated refactoring tools, automated  
unit testing.

The _only_ reason for the differences between IDEs for static and  
dynamic languages is money: the Eclipse Java Development Tools are  
developed by dozens of highly paid full-time engineers with million  
dollar research budgets by IBM, Oracle, BEA etc.

The Eclipse Ruby Development Tools were developed by a couple of  
hobbyists in their spare time, without getting paid, with no research  
budget at all, and even without knowing Eclipse programming.

> Does the fact that Ruby is STRONG dynaically typed, assist tool  
> developers? Can I have tools with minimal analysis capabilities?

Pretty much all current Ruby IDEs (RDT, DLTK, 3rd Rail, NetBeans, Ruby  
in Steel) have code completion, type inference, automated refactoring  
tools and a lot of the things you would expect from a modern IDE. But,  
again, this doesn’t have anything to do with Ruby being “strongly  
typed”, it has to do with Ruby being high on the hype curve and  
companies like Sun, CodeGear, Sapphire Steel and Aptana investing  
money in Ruby IDEs.

jwm
