GuestNo new alerts

Why Go?

- Announcements537🔒︎
There are many reasons for this, including some you might not normally think of.

When we think of Web Languages, the obvious one is PHP, right? It runs Wikipedia and Wordpress, two giants among giants, if it's good enough for them, then it's good enough for us.

Well... Not exactly. PHP is pretty bad at handling anything real-time (e.g. WebSockets), this isn't a problem for Wordpress, because it never handles real-time content, but for Gosora, we can't afford to have setbacks like this.

I'm not going to cover the other problems with PHP, but rest assured that they make it easier for buggy code to arise and generally slow down the development cycle.

Why not Node? I personally don't like JavaScript and how it operates. Nothing personal, but if I'm not going to enjoy this, then what's the point, that said we might end up with some for plugins and modules, but I don’t want the core to be written in it.

It's also harder to scale, which is something Go does beautifully with its goroutines.

Why not Python then, that's a nice language, right? I thought so too, but when you take a closer look, you notice its flaws. The schism is still in full force, the MySQL adapter for Python 3 to this day still doesn't support prepared statements.

Of course, this isn't enough to dismiss it, as we could simply use PostgreSQL, which is a far better system and I am making efforts to implement it in Gosora bit by bit, however...

One of the problems with it for me is the global interpreter lock, in contrast to Go where concurrency works normally with no shackles on my feet.

What does that leave us? Go.

It's not just a process of elimination however.
Go can easily talk to just about any C or C++ library, has great documentation, and is extremely fast to not only code in, but to learn. You know what’s also extremely fast? It’s speed.

I don't need to learn any exotic syntax or bizarre rules. Go largely works as I would expect it to, the bits which don't aren't that particularly hard to learn. It’s strong typing also means that I can catch many bugs which would normally slip through the cracks, and its splendid test facilities mean that I can quickly mock up tests to catch even more bugs.

The fact that it's also easy to learn means that it's easier for people wishing to contribute to hop on-board in contrast to a more exotic language like Rust.

Don’t worry though, we're planning to give you the option to write plugins in other languages to help fit the gaps you need filling without forcing you to touch a line of Go.