5 ms·
Yes. But it’s not just taking care of those things that must be done; it seems to bloat the code. I think it’s a great alternative to C for large apps like Fi
by scorpion95 6y ago
Yes.
But it’s not just taking care of those things that must be done; it seems to bloat the code.
I think it’s a great alternative to C for large apps like Firefox, and perhaps it’s a good alternative to Go for services.
For general purpose, I personally want something fast that’s easy, clear, and concise like Ruby.
Do I just accept that Rust is the most evolved version of C, or is my gut correct that it’s bloated? Is it a good choice for general purpose as-is?
- DJBunnies 6y agoRuby is not fast.
- Can_Not 6y agoBut if you want something between rust and ruby, checkout crystal (garbage collected, strongly typed with inference, llvm binary, ruby-like syntax, fast like golang).
- anfilt 6y agoFirefox's is compiled code is mostly written in C++ not C. You conflate C with C++, Java, and C#. C++ while has source compatibility with C tends to end up much different than C. C will not give you the OOP hell-scape you can dig yourself into with those three languages. C code tends be simpler and much more close to the assembly that will be generated than you would get in those language. Moreover, Java and C# are not even compiled. Anyways C != C++. C++ has changed quite a bit since it's earlier days and has diverged from plain C in a lot of ways. Some people even feel C++ keeps adding too many new features too fast.
- ttt0 6y ago> C++ while has source compatibility with C It doesn't really, some things from C won't compile in C++, but that's a minor nitpick
- ben0x539 6y agoI guess people mostly take source compatibility to mean that you can write the headers for your C library so that it can be used from C++. That's not the same thing as C being a proper subset of C++ or whatever, but it's still a vast enough advantage of C++ over most competitors that it might as well be.
- eru 6y ago> Some people even feel C++ keeps adding too many new features too fast. It's not so much that they keep adding features, but that they (almost?) never remove any.
- pjmlp 6y agoPython 3 has shown the world what happens when that is done without bringing the ecosystem along.
- eru 6y agoHaskell has also removed some features over time.
- pjmlp 6y agoHaskell or GHC? If you mean GHC, the language version is whatever the pile of configuration flags at each source file ends up meaning, some of them even contradict themselves. Great for language research, which is Haskell main purpose in life, hardly a good idea for getting industry love.
- eru 6y agoI am talking about Haskell, specifically the removal of 'n+k patterns' and 'monad comprehensions'. About GHC: I think their approach with pragmas is great and something for other languages to emulate. It's also great in production, with the caveat that you might want to restrict that mechanism to surface level changes only, and nothing that changes the intermediate format.
- anaerobicover 6y agoAre there many other programming languages that remove features?
- eru 6y agoPython 3 made some backwards incompatible changes. Haskell removed some features over time, as well.
- smt1 6y agoservo is written in rust, not firefox. The firefox codebase is quite old, while servo was written from scratch, being the first new web codebase in years.
- hderms 6y agoAs someone who's worked predominantly in high level languages (Scala, Ruby, etc...) I've found Rust to be relatively straightforward to use for simple CLI tools or gRPC servers (tonic library is pretty nice). I haven't tried building a CRUD app yet, but I don't see any real reason why it would be impossible to have an ergonomic web framework in Rust. The things I find most difficult: 1. Wrangling with the borrow checker can be painful before you know what you're doing (and even afterwards) but if you understand the standard library/patterns well, it seems to minimize the cost. Example being trying to write your own `get_or_else_insert` style method for a HashMap. Writing your own version is easy in other languages but hard in Rust. If you didn't know that methods like that already exist on HashMap you will experience a lot of pain until you understand the "right" way to do something. 2. Shared memory concurrency is definitely at the nexus of all the more difficult parts of Rust. Especially with async/await. There's no question in my mind that if you want to write a webserver that has async functions accessing shared memory, that you will for sure need to fill in any gaps in your knowledge as it will be difficult to get to a working program without understanding significantly more concepts than what it might take for a simple single-threaded CLI app I'm pretty sure that it will be possible (if it isn't already) to get the Rust ecosystem to a state where writing a CRUD app is about as simple as in Go (and considerably easier/more ergonomic w.r.t certain things like JSON serialization).