I've been discussing with my friend on the matter of metaprogramming; he argues that Java is the worst language because of its inability to metaprogram well.

He contrasted this with C++'s ability...