On 2014-06-05 15:31, Bill Baxter via Digitalmars-d-announce wrote:
On Thu, Jun 5, 2014 at 2:42 AM, Jonathan M Davis via
Digitalmars-d-announce <digitalmars-d-announce@puremagic.com
<mailto:digitalmars-d-announce@puremagic.com>> wrote:

    Though I confess what horrifies me the most about dynamic languages
    is code
    like this

         var = "hello world";
         var = 42;

    The fact that an if statement could change the type of a variable is
    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.

In D you can use a wrapper and opDispatch to delegate and intercept method calls.

/Jacob Carlborg

Reply via email to