Why?
Section to explain some questions. This section and the next are opinionated.
Why create a new language?
Because me, the author, have a specific need: a language that can be implemented in my own game engine. Also, I want to create something new and learn from the process. I have been coding in the last +10 years (I'm 23 at the time of writing this), and I want to create something that I can be proud of. Also, I saw a lot of languages that are good, but they are not perfect, so I want to create something that can be perfect for me and, maybe, for others.
Why the name 'Orbis'?
Initially it was only a codename but I like it.
Why no 'static' keyword?
The 'static' keyword have little to no sense in a no forced OOP language. It usually hides an architectural problem instead of resolving it. Also, 'static' in many languages is actually 'syntactic sugar' for other things.
Why meta-programming?
Meta-programming is a extremely powerful tool that enables the developer to write less code, making the iteration faster and the code more readable. Also, Orbis is a extremely modular language, so meta-programming is a must. The standard library will use a lot of meta-programming.
Why no 'try/catch'?
I think that the 'try/catch' system can be used in some cases to not handle errors, but instead hide them, like in global error handlers. Also, from a performance perspective, they provide a lot of overhead. The replacement with 'Result' and 'Option' types is more explicit and more efficient.
Why no 'null' (only for optionals)?
null
is a special value in many languages but it have no sense from a memory perspective because it's value is not other than a pointer to the memory address 0.
This causes that developers can use null
in many cases where they should not. I think that a better approach is to use Option
and Result
types, they force the developer to handle the cases where the value is null
or the operation fails.