Live data from Hacker News

Ask HN: Rust or Go?

news.ycombinator.com

1–10 of 14 posts

Ask HN: Rust or Go?

#1
I want to learn another programming language. I have to decide between Rust or Go.

I'm proficient in Java/PHP/JS/Python/C. Between Rust or Go whats the easier language to learn?

Re: Ask HN: Rust or Go?

#4
post #2

Rust is more tricky, since it places emphasis on correctness and memory management. Starting with go was far easier for me

Placing emphasis on correctness sounds like a plus. How does Rust do this? Does it only apply to memory management? For added performance I could live without gc, but I still prefer it.

Re: Ask HN: Rust or Go?

#5
post #4
post #2

Rust is more tricky, since it places emphasis on correctness and memory management. Starting with go was far easier for me

Placing emphasis on correctness sounds like a plus. How does Rust do this? Does it only apply to memory management? For added performance I could live without gc, but I still prefer it.

>How does Rust do this? Does it only apply to memory management?

https://doc.rust-lang.org/book/ch04-00-understanding-ownersh...

This link explains it pretty clearly with example code (which is easy enough to understand even if you've never seen rust code before).

Re: Ask HN: Rust or Go?

#6
Depends on where you want to take your career.

Rust and Go are different tools that are good at solving different categories of problems. Additionally they are both languages that will provide different lessons about modern programming ergonomics.

If you expect your programming career to be solving more high level "enterprise-y" problems like writing APIs, web services, and middleware, learning Go is probably going to be more useful to you.

If you think your programming career is going to be more low-level like programming operating systems, libraries, or drivers, learning Rust is probably going to be more valuable to you.

Re: Ask HN: Rust or Go?

#7
You can learn go in a week, and be proficient quickly. You will find you can read pretty much any go code written by anyone. The source to everything is available.

Rust is more like c++. It contains not-so-easy concepts dealing with memory that require different approaches. It will take 6 months or more to get there.

Re: Ask HN: Rust or Go?

#8
post #5
post #4

Earlier quoted context omitted.

Placing emphasis on correctness sounds like a plus. How does Rust do this? Does it only apply to memory management? For added performance I could live without gc, but I still prefer it.

>How does Rust do this? Does it only apply to memory management? https://doc.rust-lang.org/book/ch04-00-understanding-ownersh... This link explains it pretty clearly with example code (which is easy enough to understand even if you've never seen rust code before).

If correctness only applies to memory management then choosing it’s not a benefit in deciding Go or Rust because Go has garbage collection.

Re: Ask HN: Rust or Go?

#9
post #4
post #2

Rust is more tricky, since it places emphasis on correctness and memory management. Starting with go was far easier for me

Placing emphasis on correctness sounds like a plus. How does Rust do this? Does it only apply to memory management? For added performance I could live without gc, but I still prefer it.

Rust encodes object lifetime into its type system, and enforces constraints on how references are used through the borrow checker. With Rust, you don't need a GC. Object lifetimes (not just memory!) are automatically managed through static lifetime analysis. Time and CPU spent in a tracing GC is simply lost, it's emitted as waste heat. In Rust you can reclaim some of that back, and still use a programming style very similar to a GC'd language.

Remember: static beats dynamic, every time. Time spent checking assertions at compile time pays for itself many times over in time spent debugging these same issues at run time. Just as static typing is a huge win over dynamic typing, static lifetime analysis (Rust memory semantics) is a huge win over dynamic lifetime analysis (GC).

Post reply on HN