With so many paradigms out there, it’s hard to come up with a unique programming language. For Mochaccino, we decided to focus on delivering a pleasant development experience.
One major feature needed would then be static type checking. However, while OOP languages have implemented static typing rather easily, we realised that there were some drawbacks to instantiating classes just to convert an object to a certain type. Therefore, we wanted to have a non-OOP language that supported static typing, and the only way to do so was with structs.
We also wanted to have the concept of polymorphism to allow structs to be extended and implemented.
Another aspect of a good development experience would be to allow for easy code organisation that scaled up or down together with the project. To do this, we needed a hierarchy of structs, modules and packages.
Lastly, let’s not forget that bugs are inevitable. If and when we do run into bugs, a good debugging toolkit is necessary.
With all these things in mind, let’s look at the features offered by Mochaccino.