I can only think of one of the greatest videos[0] on Youtube when I read about unusual Turing complete systems.<p>[0] <a href="https://www.youtube.com/watch?v=uNjxe8ShM-8" rel="nofollow">https://www.youtube.com/watch?v=uNjxe8ShM-8</a>
After writing a lot of tools for game designers, I've found a simple rule: if a system you're creating is Turing complete, throw it out and just give them a normal scripting language.<p>Rationale is simple: game designers will ALWAYS find ways to use the system in the most insanely complicated way, and it's far easier to debug and fix things in a normal programming language rather than another system full of ad-hoc conditions, weird triggers, global variables and other complexity that starts small but always snowballs throughout development.
This was literally how I learned the basics of programming, before I ever encountered a real programming language (I was probably ~13 at the time). I used to spend hours creating elaborate scenarios with tons of complicated triggers and effects, and then never play them.