Funny enough, I had a discussion on Lisp with a co-worker last friday, and he made the assertion that static typing helps less experienced programmers, while more experienced programmers think that it gets in the way. He was actually arguing against dynamic languages and Lisp in particular, but I thought this was an interesting point. There's been a bunch of other discussion on static vs. dynamic typing over the last week or so. Carlos asked the question "Shouldn't languages have more than one mode?" (can't find the original post, but
both cited it). This is a pretty interesting idea, and it sounds like it's already there for certain languages. But it certainly hasn't been exploited in "mainstream" development. The problem, of course, is deciding who's an "expert" and who needs strong typing without getting egos inflamed. I don't know of any compiler theorists who've solved that problem.
Charles Miller also had a great post on using XML as a programming language. Charles makes the excellent point that at least in Java, it's pretty easy to embed an interpreter and write a little language, instead of writing yet another interpreter for an anonymous XML document. The comments on Charles' entry were mostly negative, but I think it's a great idea. Carlos commented that you could go further and define a little language, exposing only the functionality you want. Maybe the sweet spot for Java does lie there: embed something like SISC into your application and expose specific interfaces through DSLs.
Some people reading this are no doubt asking "why?". My thinking on this is that as programmers, we tend to design systems that create more work for ourselves, and that doesn't make sense for the people paying for that work. Sooner or later, the cost of doing development is going to have to be reduced, and I'd prefer that I can still find work after that reduction takes place.