I blogged yesterday about Python and Haskell making you a worse programmer. A reader of that entry identifying (him|her)self as Reedo graciously posted a link to this Mark Dominus blog post which talks about patterns driving the evolution of programming languages. The title of this post (”Design Patterns are Signs of Weakness in Programming Languages”) comes nearly directly from Mark’s blog. Here is his summary:

Patterns are signs of weakness in programming languages.

When we identify and document one, that should not be the end of the story. Rather, we should have the long-term goal of trying to understand how to improve the language so that the pattern becomes invisible or unnecessary.

This was a fantastic article well worth reading. Nothing in it failed my “smell test” from an initial read. The only thing that struck me as almost not right is that Rails and Subway aren’t programming languages (he calls them programming systems, which is an acceptable title for them), so the codification and integration of MVC that he talks about doesn’t seem to exactly fit since it’s not taking place in the language proper. Or perhaps one proper place for such codification and integration in sufficiently high level languages as Python and Ruby is in libraries and frameworks?

I’m still mulling over the whole thing. But it’s an interesting thought that if you find yourself repeatedly using a pattern, your language is broken in that regard.