Metaprogramming

Meta-programming is the term for the art of developing methods and programs to read, manipulate, and/or write other programs. When what is developed are programs that can deal with themselves, we talk about reflective programming.

I (Fare) have written an article on metaprogramming that you can read online.

From what is known of technical evolution, it can be advanced that most probably, like any technological activity, the art of computer programming will be done more and more by machines themselves instead of humans; Much like people don't hand-compute astronomic or physical stuff anymore, or wash their linen by hand, or have portraits painted to transmit their picture, and have machines do in their place. This way, they can focus on more interesting stuff, be it manipulating astronomical equations, building washing machines, shooting photographs, etc, or anything else that gained free time allows. And even the activities that replaced the former will one day be semi-automated if it brings valuable enough enhancements. So computer programming, which was once done at the level of electronic components, then at the level of binary representation of machine programs and data, then at that of human readable transcript of the former, then at that of simple languages that are more abstract while still mapping the underlying computer architecture, then at that of more and more abstract languages, will achieve such state that most usual work can be done entirely automatically from functional specifications, while most of the interesting work will lie in meta-programming.


Pages in this topic: Libero   MetaL   Mozart   NUT   Program Transformation   TyRuBa   Update Programming  


Also linked from: ASF+SDF   Aspect-Oriented Programming   AspectS   Assembly   Feature-Oriented Programming   FreshML   Grain   Lisp   Macro   Max   Memory   Meta-Object Protocol   Meta-System Transition   MetaML   Methods of Reflection   PoLITe project   Reflection   Smalltalk   Sprint   TOM   Tube   zzz