On Thu, Jun 5, 2014 at 2:42 AM, Jonathan M Davis via Digitalmars-d-announce
<digitalmars-d-announce@puremagic.com> wrote:

> Though I confess what horrifies me the most about dynamic languages is code
> like this
> if(cond)
>     var = "hello world";
> else
>     var = 42;
> The fact that an if statement could change the type of a variable is just
> atrocious IMHO.

Yeh, that's possible, but that doesn't look like something anyone with any
sense would do.

The things I found most enjoyable about working on javascript were
1) REPL / fully interactive debugger
    When you hit a break point you can just start typing regular js code
into the console to poke the state of your system.
    And the convenience of the REPL for seeing what bits of code do as you
write them.
2) Duck typing / introspection ability
    If you have a bunch of objects that have a .width property, and that's
all you care about, you can just look for that.  No need to declare an
IWidthHaver interface and make all of your objects declare that they
implement it.
3) Relative ease of writing tests
    We used the Closure compiler for the js I worked on, so it wasn't
totally wild west.  It has a fair amount of static type checking.
    But when it comes to tests, it's very convenient to just be able to
fake any object by slapping some dummy functions in between curly braces.
 For example if I want a fake "IWidthHaver" instance, I just have to write
x = { width: 10 }, and I'm done.  Plus I can monkey patch things in tests,
replacing whatever method I want with a wrapper that does some custom
monitoring before or after calling the real method.  Writing tests for C++
is a pain in the butt in comparison.


Reply via email to