views:

71

answers:

3

As I've found myself repeating myself a lot, writing very similar queries and classes for different entities (despite of doing strong object and relational normalisation), etc, I've came to an Idea that I could and should automate the most of this and write an engine which will compile simple declarative models I specify into all the code limiting my job to describe the task and and finally just customise the result as needed.

As far as I know this is about metaprogramming and aspect-oriented programming. How do I get acquainted with modern tools available quickly so that I don't invent one more bicycle developing my own?

A: 

The most general background for understanding metaprogramming are program transformations. These are actions that convert program (fragments) to other program (fragments). All of metaprogramming can be explained in these terms: generation, template metaprogramming, code optimization, aspect-oriented programming, ...

Ira Baxter
+1  A: 

For a good book introducing these concepts, see Domain-Specific Modeling: Enabling Full Code Generation by the creators of a DSM tool, MetaEdit+

Domain-Specific Modeling is a way to translate your concepts into code generation models, and covers AOP and metaprogramming.

I am working on ABSE, a system that lets you define aspects and concepts, and then automate your tasks through a code generation framework.

Rui Curado
A significant number of your posts linking to ABSE have been flagged as SPAM by the community. You might want to 'tone down' the marketing a bit. I'm not saying its inappropriate, but moderation is the key :)
Tim Post
@Tim I have been editing some of my posts, removing links and/or changing the answer to comply with that.
Rui Curado
A: 

Even though it's aimed at a specific programming language, the discussion of generics in the ConceptC++ tutorial is excellent. The conceptual approach they use is applicable to just about any kind of generic programming exercise -- I was able to adapt it for use in function-level generics in J, which is about as far from the C++ programming experience as it gets.

estanford