4 ms·
Go was announced in 2009, and went 1.0 in 2012. Sure, it's "newer" than languages from the 90s, but calling it "new" when it's nearly a decade old doesn't pass
by Laremere 6y ago
Go was announced in 2009, and went 1.0 in 2012. Sure, it's "newer" than languages from the 90s, but calling it "new" when it's nearly a decade old doesn't pass the smell test. Serious software has been written in both Go and Rust, and real issues with Java, C++, and C that these newer languages address are well known.
Compare Go and C++, and I bet C++ has had more language changes since Go's 1.0 than Go has. That makes large portions of C++ "relatively new and immature" compared to Go.
- mraza007 6y agoI agree with you on that but this still makes me question the problem they are trying to solve can't they solve in Go instead of switching to Rust. Furthermore, A lot of companies to this date have there performance critical code written in C++ , C or Java Such as you can take HFT for example they use C++ for most of their trading applications instead of newer languages I'm definitely not saying C++,C or Java is better than Rust or Golang each language has its own pros and cons
- devmor 6y agoNot all problems are specifically technical in nature. One of the big issues with Go is that it's got a steep learning curve. (There was an article about this posted on HN yesterday, in fact) Rust, by contrast, is an extremely easy language to learn. Of all the languages I've picked up at least partially in my ~12 years of professional programming, Rust was probably second only to to PHP in "get up and start running with it". If Discord is trying to pick up new developers, or cross discipline seniors to improve their talent pool, Rust is definitely a better choice than Go.
- snth 6y agoThis is the reverse of the characterization of the two languages I usually see. I usually see "Go is easy to learn and use" and "Rust is hard to learn but has performance advantages". I often see comments about how you "really need to go read the Rust book" and not just try to pick up Rust on the fly.
- steveklabnik 6y agoNot to discount your experience, because I think that this topic has a lot of nuance and is very different on an individual level, but most people regard Go as easy to learn, and Rust as difficult to learn. I wish we had a good way to evaluate this question in a quantitative way, but I haven't seen one yet. So reasonable people are going to disagree on the answers here.
- domano 6y agoThis is the first time i have seen this argument. Just understanding ownership seems more complex to me than writing a simple web app in go or PHP for that matter. I am sure rust is great but it is at the very least more difficult to learn then go.
- icod 6y agoto this day I can't wrap my head around the need to unwrap almost every single variable/function/whatever. I don't get Rust. I got Go very easily. Rust just doesn't make sense for me. In Go I can just write down my thoughts and they translate to code easy. I don't even know which mental game I have to play in Rust. And all the conventions in Rust are another step. The final nail is the un-community of Rust. I still have no idea how to write a simple RESTful http server with a mongodb backend. I've asked only to have been met with downvotes on Reddit. The official MongoDB discourse didn't answer either. Time and again I want to do something with it but every time I just quit frustrated and irritated of the complexity of everything in Rust land.
- cyphar 6y ago> to this day I can't wrap my head around the need to unwrap almost every single variable/function/whatever. Think of Result as (foo, err) bundled into one thing. result.unwrap() is then equivalent to: if err != nil { panic(err) } And the ? operator is: if err != nil { return ..., err } You don't need to unwrap (or ?) everything, just things that return a Result -- which is the same as functions which return an error in Go. The advantage of Result is that you can never forget to handle the error because the compiler requires you to get the value out of the Result in such a way that you have to handle errors. Don't get me wrong, there are complicated things in Rust, I just don't see how Result-based error handling is one of them. This is also not a new idea, many languages have something similar.
- jimbokun 6y agoThey did solve it in Go, then got performance improvements re-implementing a small piece in Rust. This is more about scale and saving computing costs, than proving out a business idea or implementing new features.
- tjalfi 6y ago> I agree with you on that but this still makes me question the problem they are trying to solve can't they solve in Go instead of switching to Rust. High performance systems in GC languages often preallocate or use object pools to reduce time spent in the garbage collector. LMAX's Disruptor, for example, allocates all memory at startup; no additional memory is allocated so the garbage collector never runs. Generational GCs make this strategy more effective because long-lived or large objects are traced rarely or not at all. Another option for trading systems is to run garbage collection after hours when the market has closed. Go's GC is conservative, not generational, and has a hard coded collection interval of 2 minutes; you pay for a GC even if no memory has been allocated. There are only a few configuration options for Go's GC; if it doesn't work for your use case then you can either fork or use a different language.