Purpose - KidneyThief/TinScript1.0 GitHub Wiki
So with the plethora of scripting solutions available, why create TinScript?
- I've been a software engineer for 20+ years, and have experienced what seems like the entire spectrum of "scripting is evil" to "the entire world should be scripted".
- I've also experienced the range of involvement from simply being a client, to being both the person integrating the language, and (perhaps more relevant) being the key person responsible for supporting the dozen non-technical designers using the language.
What I had not done up to this point, is actually implement a language, so I wanted to "put my money where my mouth is".
I wrote Tinscript to focus on 3x aspects of development, theoretically to improve on each:
- Debuggable
- When an implementation doesn't execute as expected, figuring out where the assumptions are incorrect are relative to how easy the system is to figure out. In the case of a "black box" solution that is outside the normal C++ environment, it is even more critical that the system be transparent.
- TinScript uses a very straightforward interface with no unnecessary complications, in everything from its integration and binding, it's parsing, and the execution of its virtual machine.
- At each step, there is also debug support from displaying the parse tree, to tracing through the VM, to a complete display of an object's hierarchy of members, methods, and group organization.
- Iterative
- The ability to pause the system, implement methods and/or modify a script, unpause and see your changes happen live - without having to shut down, recompile, re-execute and reproduce the symptoms that prompted the change in the first place - iteration speed has a huge impact not only on quality, but on enjoyment as well.
- It's a step forward to being able to reload scripts - but it's a big leap forward if you can do this *without* destroying or restarting the objects depending on them.
- Effective
- A fairly broad and ambiguous term - but ultimately is a measurement of the ability to get the job done with a solution that is solid, quickly implemented, and developed naturally without the feeling of excessive jumping through hoops, or red tape.
- The paradigm of class hierarchies from C++ is already a powerful standard - TinScript was built, not to provide an alternative, but to support this by extending the hierarchies at runtime.
- The use of a scheduler allows for less "manager" implementation, allowing objects to update themselves, or to cause an "event" to happen at a later time without needing a system to babysit the request.
- The support of object groups and sets also generalizes the "manager" concept of maintaining a specific collection that is updated/queried/processed in some specific way.
- And finally, the provision of n-dimensional associative arrays is a convenient way to organize data and data relationships. It's a useful tool for configuring an environment, setting up sets of tunable parameters, initializing objects, etc...