
-----Original Message----- From: boost-bounces@lists.boost.org [mailto:boost-bounces@lists.boost.org] On Behalf Of Paul Mensonides
Well, it isn't a good option, IMO, even in an in-house project. A DSEL is better than a non-embedded DSL (e.g. Spirit compared to YACC) for a variety of reasons. It is better to do as much as you can with what you have (i.e. the language). External tools for code generation should only be used as a very last resort. More important than the introduction of another build step, the use of external code generators creates a significant barrior to entry and represents an unbounded number of possible code constructions (that aren't part of C++) in C++ code. It comes down to the same reason that a standard definition of C++ is important--which is not just portability, but portable understanding.
This reminds me, BTW, of the "intentional programming" paradigm. The really powerful part of that paradigm is that you can do anything--i.e. even with the syntax itself. The really problematic part of that paradigm is that you can do anything--i.e. even with the syntax itself. IOW, it becomes a collection of anything and everything all thrown together--there is no coherent language, just a language system. One of the benefits of a more finite language is that the set of semantics is also finite--and that really is a good thing overall (despite how often we may beat are heads against it). Regards, Paul Mensonides