The REAL Future of Computing
While luddites such as myself continue to work on old fashioned technologies like application generation and software product lines that will be mainstream within the next few years (:->), I think this points to the real future of computing. By 2008, if you are still trying to figure out how to tell a computer what to do (whether imperatively or declaratively), you’re probably not on the cutting edge of programming any more. I think that code generation and meta-programming may well be the high water mark of the old school command and control approach to what is really just a branch of machine learning (What is our job? Teaching computers to do what we want!).
Check out an old article by Reg Braithwaite for an insightful peak at what might be to come (see the second half of his posting).
Oh well, at least it means that once I’ve finished my application generator I’ll still have stuff to learn. Always wanted to learn more about statistics :->


I agree code generation is going to be much of the wave of the future. I believe the strong suit will be design time generation more than run time generation. Most of the tools being worked on today lean toward tools that are run time able, but it seems they are truely only distracted with run time abilities. It seems they would do more with MANY LESS BUGS if they concentrated on "design time" code generation.
Firstly, I agree that age brings an edge - it is why we all respect people who've "done it before". But it is important as we get older to see the value of youth so we can harness it. I'm 36 and love the idea of sitting in a room with a bunch of buzzed 22 year olds at something like start-up school to remind myself just how fast the competition will be.
I was actually arguing that the wave of the future (application generation) is already outdated - the cool research is now on learning system - replacing more efficient ways of telling computers what to do (application generation) with statistical and learning approaches that allow the computers to learn on their own using various types of inference from real world data.
As for run time vs. design time, I find the distinction unimportant. The key is the architecture of the generator and the design of your Domain Specific Languages. Whether you bind at run time or during some generation or compilation phase is really just a very pragmatic low level decision along the lines of deciding what indexes to put in your db or what caching mechanisms to implement. Also, generators can be language independent whereas binding times are typically language dependent. There are bunch of things that I generate in CF that I'd probably just use meta-programming for in Ruby.