Odin is a [[BSD License]] licensed compiled programming language implemented in C++. - [Website](https://odin-lang.org/) - [GitHub](https://github.com/odin-lang/Odin) - AlternativeTo > Odin is a general-purpose programming language with distinct typing built for high performance, modern systems and data-oriented programming. # Notability Used to create [[JangaFX EmberGen]]. May be interesting to analyze for its data oriented decisions, if they turn out to be any different than Go. # Philosophy Primary developer: https://www.gingerbill.org Odin rejects the [Uniform Function Call Syntax](https://en.wikipedia.org/wiki/Uniform_Function_Call_Syntax). Which, I honestly don't blame them for really. Odin rejects the object oriented terminology and prefers data oriented. ## Exceptionless Programming The documentation [claims](https://odin-lang.org/docs/faq/#why-does-odin-not-have-exceptions) that Odin does not have exceptions and uses multiple return values instead. It follows the [[Go]] pattern of multiple return values, which require a lot of manual setup and convention. Odin does not implement [[Go - Exceptions|Go's exceptions]]. At least they're sticking to their principles. ```cardlink url: https://www.gingerbill.org/article/2018/09/05/exceptions-and-why-odin-will-never-have-them/ title: "Exceptions --- And Why Odin Will Never Have Them" description: "Article was originally posted here: https://odin.handmade.network/blogs/p/3372-exceptions_-_and_why_odin_will_never_have_themOriginal Comments: https://github.com/odin-lang/Odin/issues/256#issuecomment-418073701 https://github.com/odin-lang/Odin/issues/256#issuecomment-418289626 There will never be software exceptions in the traditional sense. I hate the entire philosophy behind the concept. Go does have exceptions with the defer, panic, recover approach. They are weird on purpose. Odin could have something similar for exceptional cases. You can the exact same semantics as a try except block by using a switch in statement. The same is true in Go." host: www.gingerbill.org favicon: /favicon-32x32.png ``` Having written and dealt with a lot of Go code, it's fine. But it is not a good solution either. And the sentiment of the blog post, the vitriol of it with a lack of real explanation, does not help it make any more sense. The [[INTERCAL]] references no longer amuse me. ## Vs Other Language Devs See [[V#Controversy]]. # OS Support # Features - Some built-in support for [[AoS and SoA|struct of arrays]] style programming # References - https://odin-lang.org/docs/overview/#soa-data-types