DEV Community

loading...

Should I keep Go in my tool box?

jasonish
・1 min read

In any given day I may write C, JavaScript/TypeScript, Rust and Go... Due to my job, Rust and C are a must. And if you do anything with a web frontend, then JavaScript is a must. While I have a few applications that use Go on the backend, I'm struggling to find a reason to keep it that way. Seems to me Rust is catching up in terms of developer productivity when developing backend services, and JavaScript is fully capable of this as well with Node.

Given all my Go apps use SQLite, and need Cgo I don't even really take advantage of Go's killer feature - static binaries that can be cross compiled to any other OS/architecture.

Discussion (5)

Collapse
rhymes profile image
rhymes

It's not like you can unlearn it, or at least not in the short term :D

And you're saying that you're still using it, albeit in a limited capacity. So what do you mean with your initial question?

Collapse
jasonish profile image
jasonish Author

I'm thinking if Node and/or Rust can be a reasonable replacement for Go.

While I don't have much issue writing in these 4 languages, its hard to keep up with the idioms, best practices, best tools across 4 languages.

Collapse
rhymes profile image
rhymes

I'm thinking if Node and/or Rust can be a reasonable replacement for Go.

I though Go was a reasonable replacement for Node 😂

BTW you might be interested in these two series of articles:

Also check the comments :)

They give you an overview of what the status of web dev with Rust is.

it's hard to keep up with the idioms, best practices, best tools across 4 languages

Definitely!

Thread Thread
rhymes profile image
rhymes

oh, and this comment too

why did you decide on Rust over something like Go?

Rust provides a much richer set of tools and abstractions that make it more expressive than Go. It also generally results in higher runtime performance, though Go is also very fast. Go wins in compile time, and i suppose ease of learning, but for me personally not much else.

How hard has it been to do web development in Rust?

Not inherently more difficult than web development with any other language, but...

What has been your biggest problems slowing you down?

The ecosystem is small and immature. This results in sparse documentation, and a wealth of small beta-level interesting libraries but few stable choices. Really, at this point, there's only actix-web at 1.0, and that happened a matter of weeks ago. It also represented a huge breaking API change from the previous release. So, all this will likely improve with time, but leaves much to be desired for a lot of use cases.

What has made using Rust better?

I find the language itself, including rustc and Cargo, to be a superior environment for writing correct code. This correctness extends to web applications, it's quicker to cover all the edges of an application and be satisfied you've done so thoroughly at compile time.

Do you find time to get to MVP/Production much slower than in other languages like Go, Python, or JavaScript?

Not generally. Initial spin-up is slower, but bug-hunting down to usable is not because you're writing fewer bugs in the first place. Depends on your familiarity with Rust and other languages, but i don't think it's really inherently slower.

All in all it's an excellent choice for side projects and probably a decent option for serious work depending on your specific case, but with major caveats.

Collapse
freedom profile image
Freedom

I'm learning to write functional for Go from a book, although, without the generic is still fine for my case.