Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I can give my own specific example: I am developing <a href="http://www.abse.info" rel="nofollow noreferrer">ABSE</a>, which is a meta-programming approach. With ABSE you create a model (actually, a tree) where each item is an "Atom". This Atom represents a "concept" and contains the necessary meta-data for its definition.</p> <p>In ABSE, the implementation of a concept is actually a "mini-program".</p> <p>Then, the host modeler (<a href="http://www.atomweaver.com" rel="nofollow noreferrer">AtomWeaver</a>, developed alongside ABSE) takes the model and "weaves" a generator program out of all its Atoms. That program is then run, generating the desired artifacts (source code, data, etc).</p> <p>So, the ABSE workflow is:</p> <ol> <li>Create a discrete concept (a fraction of the meta-metaprogram)</li> <li>Reuse that concept in a model (effectively building the metaprogram)</li> <li>Host modeler weaves and runs the metaprogram</li> <li>The metaprogram generates your final program</li> </ol> <p>At first sight this looks like a lot of redundant, complex work, but it is actually quite straightforward if you grasp the concept.</p> <p>Advantages of meta-programming (not exclusive to ABSE)?:</p> <ul> <li>Changing the model and regenerating a complete system (Imagine refactoring features instead of source lines).</li> <li>Changing a few definitions in the model can result in distinct programs (a Software Product Family).</li> <li>By reusing templates, you can change the template's code, regenerate and get your code changed in dozens, hundreds of places.</li> <li>Many others, really</li> </ul> <p>Metaprogramming, code generation, program transformation are new exciting worlds in software development, IMHO. However, metaprogramming requires a new skill: meta-thinking.</p> <p>We can define meta-thinking as "thinking about how you think about your own development". A kind of class reflection, applied on yourself. In practice, you must find out your own development patterns, isolate them, make them generic, and then turn them into metaprograms using your favorite technique, being it ABSE, DSL's, DSM, etc.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload