6 ms·
I write billing apps because I'm a masochist and feel there is deeper meaning to be gained through suffering. Lot of data and rules to process. Torn between lea
by swader999 3y ago
I write billing apps because I'm a masochist and feel there is deeper meaning to be gained through suffering. Lot of data and rules to process. Torn between learning Go or Rust next.
- brink 3y agoMostly depends on how ambitious you're feeling, imo. fwiw - I learned Rust, was painful at first, but now I love it.
- swader999 3y agoFrom what I've read, it seems like if you can learn Rust, go would be a quick afterthought to pick up. Just not sure if it was my own money for dev expenses if I would choose it.
- eYrKEC2 3y agoThat is very fair. I was useless the first month of Rust. I would say that new rust devs are basically in training and unavailable for ~4 weeks. Rust mastery takes much longer than that, of course. However, the type checking in Rust is fantastic. The confidence in correctness that you have when it is complete is much higher than many other languages.
- masklinn 3y ago> Just not sure if it was my own money for dev expenses if I would choose it. Use case would probably be a major factor in the decision e.g. picking up rust from scratch to write a basic network service would probably be stupid unless it had very strict requirements known in advance (and even then you might want to write it in go anyway in case that works out or to quickly uncover issues you’d hadn’t predicted). If you know in advance you have very strict resource constraints however, or you really need the reliability (of extensively encoding things in the typesystem), or you’re writing native extensions (python + rust via pyo3 is great, python + go is something I’d avoid unless the entire solution already existed in Go and I could expose it to python over a pipe), etc… then the investment would likely be more worth it. Basically, how much return would you expect, Go requires very little investment, Rust a lot more.
- swader999 3y agoThis is a really interesting reply. I've thought of building workers in go/rust to help process the harder sidekiq jobs in our ruby solution. Kind of scared of making a Frankenstein though but yeah it might actually be the right way in some ways.
- isanjay 3y agoIn some ways they are polar opposites. Fastest compile times vs slow compile times. Excellent type system vs very basic type system Complex language vs Simple language If I were to learn a new language it would be rust because I like it's type system. That being said I use many cli tools written in rust and golang.
- capableweb 3y agoClojure was basically made for manipulating data and enabling fast changes of rules. Couple it together with XTDB which makes a lot of sense for finance-related domains because of its bi-temporality.
- extasia 3y agoCould you expand on the bi temporality aspect please?
- capableweb 3y agoProbably best explained by https://www.juxt.pro/blog/value-of-bitemporality/ https://www.juxt.pro/blog/value-of-bitemporality/ > Temporal databases aim to make our programming lives easier around time, by baking time itself into the engine. One major feature of temporal databases is the ability to query the database as of a particular point in time.
- diarrhea 3y agoNot qualified to answer thoroughly, but I wouldn’t use Go for anything that it’s not designed for, which is cloud infrastructure. That’s actually its slogan and it excels there. For Rust, you can likely encode most rules and transitions between states in the type system itself. It’s a super power in that niche.
- capableweb 3y agoGolang was initially sold as a "expressive, concurrent, garbage-collected systems programming language", not as a "cloud infrastructure" language. Screenshot of the Golang website from ~2010: https://i.imgur.com/AYeUvuE.png https://i.imgur.com/AYeUvuE.png
- swader999 3y agoReadability and comprehension are very important. You want to minimize the translation between business and technical worlds in this space. C# worked well in the past if you didn't get distracted by all the frameworky tangents but it doesn't seem like there's as much new work in that language.
- pohl 3y agoPike later expressed regret about using the term "systems programming" so loosely. I believe it was during this panel discussion: https://learn.microsoft.com/en-us/events/lang-next-2014/panel-systems-programming-languages-in-2014-beyond https://learn.microsoft.com/en-us/events/lang-next-2014/pane...
- capableweb 3y agoRegardless, I don't think anyone in the first couple of years would describe Golang's goal as to be "designed for cloud infrastructure" like what parent did.
- pohl 3y agoWell, except for the context where google's cloud infrastructure code were precisely what they meant by "systems" back then.
- mark_undoio 3y agoI've been experimenting with Go recently, with Rust still on my to-do list. I really like the simplicity of Go, with a fairly small language of constructs that combine powerfully. Having learned SML / Haskell in the past I've got a bit of a soft spot for languages that are utterly cruel to you with their compilation errors but lead you straight to bug-free code. What I've heard about Rust puts it in this camp. One thing that does concern me about Rust: when I (now and then) look at what's changing in C++ it feels like a lot of new mechanisms and abstractions are required to address problems created by previous design decisions. I sometimes read about Rust and worry that I might need to embark on a similar journey.
- seanw444 3y agoNot to mention the unstable and fast-moving nature of its development. https://drewdevault.com/2019/03/25/Rust-is-not-a-good-C-replacement.html https://drewdevault.com/2019/03/25/Rust-is-not-a-good-C-repl...
- Georgelemental 3y agoMany of Rust's new "features"—for example GATs—are really more removing restrictions. Code you would try to write, and then be surprised to learn it wasn't possible.
- howinteresting 3y ago> C has a spec. No spec means there’s nothing keeping rustc honest. Can you find the flaw in this statement? No spec doesn't mean there's nothing keeping rustc honest, it just means there isn't a spec keeping rustc honest. > Any behavior it exhibits could change tomorrow. And pigs could fly tomorrow as well. This is not a serious engagement with the ways the Rust developers go to great pains not to change behavior (such as crater runs). In many ways empirical evidence like crater is more valuable than some random document that might or might not be fully obeyed at any given time. > That they can’t slow down to pin down exactly what defines Rust is also indicative of an immature language. Rust has slowed down a lot, just not to Drew's liking. And he isn't acknowledging the ways in which the risks of moving fast(er than he would like) are mitigated. > Safety. Yes, Rust is more safe. I don’t really care. In light of all of these problems, I’ll take my segfaults and buffer overflows. Please leave the software industry. This is embarrassing. > I especially refuse to “rewrite it in Rust” - because no matter what, rewriting an entire program from scratch is always going to introduce more bugs than maintaining the C program ever would. What evidence is there for this position? My contention is that a Rust rewrite would maybe not start that way, but rapidly exceed the C version in quality because it is just a more modern language.
- benatkin 3y agoCheck out dart and flutter :)
- jarjoura 3y agoIf you're already familiar with system languages like C++, I think you'd make progress in Rust a lot faster than you think. However, it takes a LONG ass time to truly know the language and internalize good intuition around the kind of code you need to write to take advantage of it. I do love Rust, but one complaint is that early design decisions because of my weak understanding are extremely hard to refactor out later on. Poor type choices can end up bleeding into the entire project that become nightmares to improve. My advice is to use cargo workspaces to break up your project into small self contained modules early so when you will inevitably need to refactor, it will make your life less painful.
- naasking 3y agoLots of Data and Rules? Maybe try a Prolog, or a Prolog engine within another language.