Question

I want to create an algorithmically-driven simulation.

  1. I'm trying a unique design approach in order to create a more independent and well ordered software system.
  2. My plan is to define the more abstract layers of the program in an arbitrary format (like my own scripting language) and then create a simple interpreter
  3. that will translate the format into something a small program written in a conventional high-level programming language can process.
  4. I would create a small abstraction layer between this and some middleware to form the foundation of the software.
  5. The goal with this approach is to make the higher layers of the program totally independent, even from the programming language used to implement it.
  6. Although this approach seems sound to me; as I said I'm new to complex software systems so there's probably a huge flaw in this or there's a better technique in practice.

No correct solution

OTHER TIPS

This is called a Domain Specific Language (DSL). DSLs are a powerful technique for abstraction. DSLs are widely used, and have been for a very long time.

Martin Fowler makes a distinction between Internal and External DSLs. An Internal DSL is written in its host language (and therefore must conform to that language's syntax).

An external DSL is one that has its own syntax, distinct from the language used to implement it. A compiler or interpreter translates the external DSL to another form, or executes it directly. What you are describing is an external DSL.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top