The C language saw the light in 1972. GDB followed in 1986. That's both over 30 years.
Give Rust some time. I'm pretty sure debugging C in 1987 was much more of a PITA than it is for Rust right now, after only 1 year.
Calling C functions directly from you project's code (as opposed to via some wrapping crate) works against the entire purpose of Rust's safety bounds. The last thing I want to have to think about when writing Rust is segfaults, buffer overflows and the like. I would have to if I was to call C directly.
Rust is a cross-platform language. Rust is using C for FFI for the same reasons that you are using C for programming: platform independence. Abstractions. Letting you get stuff done at the end of the day.
In that case you might want to consider APL.
Anyway, joking aside, you must no forget that we are humans after all. We're not computational number-crunching machines. Regular expressions are a perfect fit for computers. But most human users struggle with them. Why? Because they are utterly dense in syntax and lack any visual structure (as does APL, one could say, btw). I still love 'em though.
I wouldn't consider Go a clean language at all. It's small, sure. (Too small even.) But not clean.
func Reduce(
in interface{},
memo interface{},
fn func(interface{}, interface{}) interface{}
) interface{} {
…
}
There are no fields in a trait. There are type defs. But those are statements. Semicolons are for statements. Structs list their members. Enums list their variants. Commas are for lists.
Compare Rust:
struct Foo {
bar: Int,
baz: Int,
}
With Swift, e.g.:
struct Foo {
let bar: Int;
let baz: Int;
}
(Idiomatic Swift omits the semicolons, but for the sake of semantic correctness I'm including them here.)
Notice how Swift has the let
in there. The let
turns bar: Int
into a statement. Thus the semicolon. If Rust had used Swift's let
syntax for fields, then you'd be right in expecting semicolons. But as it is Rust is simply consistent with its semantics.
The Input -> Output
syntax is a common idiom in functional languages.
Remember: There's more than just C out there.
Your criticisms sound a bit like C is your hammer and you haven't had a look at the other tools in your toolbox for a while. There are lots of things where C got it right. But even more where it didn't.
Wrong. See Aatch.
Different strokes for different folks. I came to Rust for the safety, sure. But most importantly I came for the incredibly strong type system and the expressive power through the use of tuples, pattern matching and closures. It's 2016 after all. Time to leave the cave.
Coming back to your point on verbosity:
I develop in both Rust and Swift. Their syntax very is similar (due to Swift taking quite a bit of inspiration from Rust). Trivial code is so much more ergonomic in Swift. But as soon as one tries to solve real problems the simplicity (or cleanness as you might call it) of Swift (compared to Rust) comes at a cost: Swift's syntax simply lacks the tools to express more sophisticated types or patterns (things will improve slightly with Swift v3, fortunately).
Rust aims to solve difficult problems. Difficult problems that I wouldn't dare try to solve in C or even Swift, e.g. while Rust makes it fun even.
Did you consider submitting an RFC for this? There are quite a few community-related RFC already.
This is specifically something that the Platform proposal by @aturon tries to tackle, btw.
So why then is Rust's logo a cogwheel? *cough*
Because platforms. Lots of them. Many without a package manager even. Also because there's no need to needlessly hurt oneself.
Now you're just messing with us, aren't you? O.o
No. It makes Rust consistent and ergonomic. Nothing prevents you from setting up your own fork/clone of crates.io. It's open source and one can simply point Cargo.toml to somewhere else.
Beg to differ.
Not sure which book you're referring to, but there's an entire chapter on traits and trait bounds in "The Book" explaining the concept in depth.
There is a list: Rust error codes index - Error codes index Such a list won't help you on an airplane or a dead spot though.
This is the part where I have to agree. But then again I'm probably not the target audience anyway. I don't read programming books cover to cover.
What I want from a technical book is to be presented the problem at hand followed by the solution and its reasoning. No fluff. No theoretical proofs. I also don't want to have to build a silly pet project in order to be able to follow the book. Chances are I don't care about your pet project.
Again: that's me. I also can't stand GIFs/memes/jokes in tech talks. So maybe I'm just dead inside or something. ¯\_(ツ)_/¯
From a technical standpoint however I consider "The Book" (and "Rust by Example") one of the best books out there. On any language.