His linked article says of the popularity of dynamic language: "<i>From what I can tell, it’s largely a matter of marketing.</i>", that <i>dynamic</i> means fun, and that they are subversive. <a href="http://existentialtype.wordpress.com/2011/03/19/dynamic-languages-are-static-languages/" rel="nofollow">http://existentialtype.wordpress.com/2011/03/19/dynamic-lang...</a><p>Dynamic languages are popular because you don't need to make decisions about types up-front, nor specify the types, nor change them when you change those decisions. In terms of the act of coding, it's more flexible when you begin, and more flexible when you maintain. He's right of course that static types are more flexible in terms of carving out a particular subset of the space of possible programs (as context free grammars are more flexible that regular expressions).<p>That is, some simple and well-known facts are unknown to him. I still think he has something interesting to say, it just takes some extra work to get to it, and you have to take it with a grain of salt because although he's supremely confident, he's coming from quite a limited perspective.<p><i>EDIT</i> There's some hints in his conclusion and a comment that he does see real benefits to dynamic languages (without articulating them) - so perhaps he was just trolling or being ironic.
Judging by the first paragraph, the author has a very biased, even aggressive preference for static languages and a contempt for anyone that disagrees with him. I don't like that, and I find that the best and most convincing arguments are those that show understanding of the opposite side. People using aggression or logical fallacies in their arguments are usually the people who can't use logic to convince others.<p>" ... types (static types, of course, there being no other kind) ... "<p>This is the statement I'm referring to above. It strikes me as completely misguided and wrong. Most languages that I know of, even most statically typed languages, know dynamic types. Java has instanceof. C++ has virtual dispatch (which is based on an objects dynamic type). Even C (untagged) unions usually have some (bit)field that allows the running program distinguish the type of data in the union.<p>I believe that in general, types are properties of data, which rarely exists at compile time. Thus, almost all types are dynamic. Statically typed languages simply restrict the data that can be stored in variables to a particular type and subtypes thereof.
I've been reading eloquent advocacy of FP for over a decade now but significant real-world applications written in FP langs are still very thin on the ground. It's clear that FP languages are good research vehicles and teaching tools but the burden of proof of their general suitability lies squarely on the shoulders of the advocates at this point.<p>Five years ago people were telling me Haskell was the greatest thing since sliced bread but now more often than not people discuss the tradeoffs of its design, much like most other languages.
I'm sorry, that was too hard to follow. First give me the qualitative rundown of what you are trying to say, then give the the quantitative formula. And use symbols that a blub programmer can recognize in the formula, please.<p>There's something in there about wanting a more flexible type system, but without completely hiding it in an implicit / dynamic system, but I'm not quite getting it as presented. Too bad.
Urgh...<p>I love static typing and the type safety that languages like Haskell provide me. And I think they have practical benefit too. But I would give my right testicle if static typing advocates would <i>stop encouraging the criticism that this is all academic nonsense</i>.
I just have to say, I love Robert Harper's blog. He writes like I imagine Paul Graham would, if he were a slightly pedantic college professor--with crisp sentences that make points, dammit.<p>His book on Standard ML is wonderful: <a href="http://www.cs.cmu.edu/~rwh/smlbook/book.pdf" rel="nofollow">http://www.cs.cmu.edu/~rwh/smlbook/book.pdf</a>
I'm sensing that we're on the verge of an SML renaissance. Over the last month I've been building web tools with SML and I have to say, that I'm moving faster than I ever have in any other language, when looking holistically at my project timeline. Dynamic languages give you the illusion that you're quickly developing, but when taking into account bug fixes that you have to exhaust hours of energy on <i>after your product is deployed</i>, they don't seem as "fun" and "free spirited" anymore. Loose(Dynamic) typing costs lives and billions of dollars. If you don't understand your data enough to describe the their types, then you should take a moment and sketch out your understanding. Otherwise, you're not developing quickly - you're spinning your wheels senselessly whether or not you believe it, and demonstrating that you're not the type of developer who has a deep understanding of the systems you build.<p>Software engineering is not a bunch of sequential statements that <i>happen</i> to deliver results that we desire. Software engineering is artfully encoding your human <i>understanding</i>.
But that being said, SML is insanely practical if you care about the results as much as you do about the design.
I'm sorry, but there's something to be said for a good article. A good article isn't one whose first two sentences are flame bait. As such, I couldn't read the rest of the article.