Goodness in programming languages, part 3 " not doing the same thing more than once

September 05, 2012 [C, C++, Java, JavaScript, Lisp, Metaprogramming, Programming Languages, Python, Scheme, Tech, Template Metaprogramming]

Posts in this series: Syntax, Deployment, Metaprogramming, Ownership

I'm going to use a word here - don't stop reading: Metaprogramming. Does the language provide what you need to avoid repeating yourself?

Repeating boilerplate code, algorithms and most importantly ideas, slows you down, makes maintenance difficult, and allows all kinds of mistakes to creep in. If a language provides the ability to abstract, name and re-use all the different types of structure it contains, you can avoid harmful repetition.

Here are some things I like:

Until you've experienced the freedom of totally generic code in a language like Scheme it's hard to explain why the "Generics" features of some languages are so lacking. Of course, static typed languages work under different constraints. Would it be possible to write a language with very strong generic programming features, but which still allows static typing and compiling to native, non-generic code? I think so.