On Thursday, 5 June 2014 at 09:43:13 UTC, Jonathan M Davis via Digitalmars-d-announce wrote:
On Thu, 05 Jun 2014 09:30:44 +0200
Andrei Alexandrescu via Digitalmars-d-announce
<digitalmars-d-announce@puremagic.com> wrote:

On 6/5/14, 7:59 AM, Nick Sabalausky wrote:
> So let me get this straight: There are programmers out there > who > find the occasional type annotations on some declarations to > be
> significantly more work than following a convention of nearly
> *quadrupling* the amount of code they have to write? Two to > three > lines of tests for every one line of real code is considered > rapid > development, "saving developer time", "just getting things > done",
> etc? And all that's considered a "style" of coding?
>
> You're right, I really don't understand that style of coding > at
> all. ;)
>
> Don't get me wrong, I am pretty big on unittests, but even > still: If > people are trying to save developer time by replacing each > minor
> type annotation with several extra unittests (which are less
> reliable anyway
> - greater room for human error), then something's gone > horribly
> wrong.
>
>  > It's usually quite hard to explain such
> > differences in coding stile to people that are used to > static
>  > typing.
>  >
>
> That doesn't surprise me. It's also very difficult to explain
> 2+2==5 to people who are accustomed to basic arithmetic. ;)

I have to confess this echoes a few similar confusions I have about the use and advocacy of dynamically-typed languages. One argument
I've heard a while back was that static type errors are not
"proportional response" and that static types only detect the most trivial of bugs, so why bother at all. But then the heavy-handed
approach to unittesting espoused by dynamic languages, of which
arguably a good part would be automated by a static type system,
seems to work against that argument.

Indeed. It just makes no sense to claim that using dynamic typing is simpler and easier when you're then forced to write a bunch of test code just to catch bugs that the compiler in a statically typed language would have caught for
you anyway.

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. Maybe I've just spent too much of my time in statically typed languages, but I just do not understand the draw that dynamically typed languages have for some people. They seem to think that avoiding a few simple things that you have to do in your typical statically typed language is somehow a huge improvement when it causes them so many serious problems that
static languages just don't have.

- Jonathan M Davis

No, it's not just that you're statically-minded. Your example above is definitely atrocious, and more often than not a bug.

I don't know, but the only language I've used with no static types that made me comfortable was Common Lisp. That was a long time ago, but I think it was the ease of manually testing the code in a REPL that did it. Obviously today I'd write unit tests anyway.

Atila

Reply via email to