TestLang
A programming language built to test the design process of building one
To fully understand the experience and development process of creating a programming language, I decided to create my own. Since it was primarily a test, I named it TestLang.
Visit the GitHub page to see the source code.
Go to the README to learn more about the language.
What I Learned
- Creating a Programming Language is Harder Than You Would Think: There are many aspects in designing, testing, and making choices about a programming language. You have to think about parsing, extensibility, and so much more. It was a genuine challenge making TestLang. Making a programming language simply takes a lot of effort and is not something to be taken lightly.
- What I Would Have Done Better: Many things stand out t o me as areas for improvement. These areas are scalability and ease of maintenance. Scalability is difficult, because the interpreter and code must be performant for large codebases. My implementation of TestLang wasn’t particularly performant and didn't scale well, especially when invoking recursion (when a function calls itself). Another point for potential improvement was the ease of maintaining TestLang. Successful languages usually have to change to fix bugs, implement new ideas, or to support newer hardware. Creating a system that encourages that kind of change is hard, because it means making code modular and predictable.
- Creating a Programming Language is Time-Intensive: Even implementing a single feature requires lots of thought and dedication. While it may be somewhat easy to actually implement a feature, one must consider the impact to the overall language before adding that feature. Consideration of a language’s key values and goals is critical before adding something to the programming language. This is due to the nature of a new feature: if it is too deviant from the rest of the language, it may not fit well, it may not be used, and the feature will not be a success.