How to counter erroneous criticism of Rust?

I was just reading this: Verify the Rust's Standard Library's 7,500 Unsafe Functions - and Win 'Financial Rewards' - Slashdot

As I have seen so many times the comments there are full of, shall we say, negative comments about Rust, Rust users and Rust developers themselves.

Now, I'm always up for a good debate over the pros and cons of programming languages. Or for that matter operating systems, editors, code formatting, and so on.

However the anti-Rust sentiment I have seen there and many other places is totally over the top. With some many factual inaccuracies, misunderstandings and down right mindless abuse I can't begin to think of a cool headed way to state the Rust case and correct the falsities.

I mean, I can think of a dozen "cons" of using Rust that are based on the actual reality of the language, with no need to dive into fantasy land.

What to do? Ignore it all and not respond. Try to politely counter a few untruths here and there.

I makes me sad. Slashdot was always a bit of a free for all and a swamp but being a technical board there were at least some knowledgeable and skilled people about that could be enlightening.

But it's worse than that. Reading the tit-for-tat of Rust debate by kernel devs recently wasn't of any higher caliber.

5 Likes

yeah buddy. That slashdot thread is trash.
But, I did learn something interesting. That bit about rust devs being 'woke' and the link to the commit that removes 'CAFEBABE' and replaces it with "12345678"
That was interesting.

It comes down to how much you value your own time.

Will engaging in good faith with someone who is engaging in bad faith actually improve anything? Is it worth the time you put into it?

Rust is doing fine, it stands on its own technical merits. No programming language needs every programmer to like it.


With that said, what's your favorite fud about Rust? Mine is probably "You can't do anything in Rust without having unsafe everywhere" [implied: All those alleged safety guarantees don't mean anything]. I like that one in particular because it's so very obviously not true, but people who assert it do so with such certainty.

16 Likes

I don't know. There are so many:

  1. The "perfect programmer's" argumentent - We don't need the safety guarantees of Rust, we just need to employ programmers who know how to program.

  2. The "bad programmer argument" - Bad programmers can write bad code in any language, Rust will not help.

  3. The "security argument". Rust's memory safety check don't prevent one writing insecure software. (That's confusion over the word "safety")

  4. The imagined claims of Rust arguments. E.g "Rust makes lots of claims that aren't true in practice. It doesn't perform well and it's not secure."

  5. The "performance" argument. - Rust is slow due to all the array bound and type checks.

  6. The "woke" argument. Rust devs care more about codes of conduct than code quality.

Personally I would have used 0xDEADBEEF for that hex constant. A common practice for use stack overflow detection and such back in the day.

8 Likes

That's the thing. I don't want to waste time engaging with those of bad faith. On the other hand I like to think many are just ignorant or confused. Like the confusion of the word "unsafe", expecting safe Rust to magically be free of security issues. Or like expecting Rust to be slow which some might naively expect from Rusts memory safety, type checking and bounds checking.

On the third hand, I think just have to give up on Slashdot. All the smart folks seem to have done that ages ago. Shame.

1 Like

You may have enraged a lot of vegans with that.

4 Likes

Yet, it would pass the leetspeak test.

1 Like

You don’t. These are not the behaviors of people I want to work with.

6 Likes

Erroneous criticism does not necessarily stem from malicious intent or ignorance, but just from lack of knowledge. When I introduced Rust at the company I currently work for it was also greeted with scepticism. One year later we even got our external contractor on board who mostly did Java up until now, who now also expand their portfolio to Rust after having dealt with the language's features in more detail.

2 Likes

Hanlon's razor.

On the other hand, the behaviors I am specifically referring to are not picking on the language, but picking on Rust users and Rust developers.

2 Likes

I agree. I like to think most negative views of Rust are genuine not malicious. After all it's better to start out with a positive attitude to people. But a lot of it seems actively hostile, not just to the language as an idea but to the Rust "community", those that develop it and this that use it.

Note: "ignorance" means "lack of knowledge".

1 Like

I see lots of this for all successful languages. Rust is not special in this regard.

1 Like

Perhaps I have a biased view of what is going on. However I also follow what is going on in C, C++ worlds. Watching conference presentations, reading blogs etc, etc. I don't recall seeing such vitriol spamming their comment sections.

Indeed, I get the feeling that a lot of it comes from die hard C and C++ users. See recent spat among Linux devs regarding Rust in the kernel.

1 Like

Well, I would naturally expect more ignorance-based criticism of Rust than C or C++.

C and C++ have been around forever, and 90% of languages in use today were heavily influenced by them (especially by C), so even users of other languages are familiar with the "C way" of doing things.

On the other hand, Rust is this new weird language that works differently than many mainstream languages and promises things that sound too good to be true to those who don't know how it makes them real.

1 Like

You can't save Slashdot. It's long past its prime as a mainstream news source, and through evaporative cooling and self-reinforcing moderation, has withered down to a community that, to put it mildly, likes to be cynical and grumpy about things.

7 Likes

The variant I "like" goes along the lines of, "I was promised reliability and performance with no unsafe, but I looked inside std and there's unsafe everywhere!" Some people feel very betrayed by this.[1] What they're usually missing is the role of unsafe to delimit and encapsulate the dangerous bits.[2] And the related concept that if something goes wrong (UB), some unsafe somewhere is to blame. So if you never write unsafe, you're not to blame![3]

I guess I "like" it because it can seem like an overly nuanced distinction, and/or seem like it shouldn't make much of a difference. But it makes an enormous difference. Both quantitatively (the encapsulation works), and psychologically (I used no unsafe and it compiles, now I don't even have to think about some large classes of errors that would have plagued me in C/C++).

Or as succinctly phrased by withoutboats:

The biggest failure in Rust‘s communication strategy has been the inability to explain to non-experts that unsafe abstractions are the point, not a sign of failure


  1. Which I think was understandable when Rust advocacy was a bit overzealous in the early days. ↩︎

  2. And also sometimes that every language has unsafeness under the hood, because the OS and hardware and physics aren't safe; safe languages just don't let the programmer write their own. ↩︎

  3. I'm just going to ignore people intentionally exploiting other people's unsoundness bugs here. ↩︎

7 Likes

I find that an interesting take on things. I have rather the opposite impression of Rust.

As a long time user of C, C++ and other compiled languages, Algol, PL/M, Coral, Pascal... as well as lesser languages like BASIC, Python, Javascript, I was attracted to investigate Rust because basic Rust looks familiar and behaves as one would expect coming from a background like mine. It has the same familiar structures, declarations, types, if..else, while, functions, expressions, blocks. All in all just like C and all the others but with inevitable syntactic differences.

I think conceptually things like types, lifetimes and the borrow checker are there in C. Although C is lax about types and one does not learn about lifetime errors until run time. But learn it one must, in C as much as Rust.

Arguably C++ is alien. Imagine someone who only knew C being confronted with modern day C++ with all its contorted and unfathomable syntax for templates, concepts and whatever else. Not to mention it's unknowable semantics.

2 Likes

The one I see all the time, that's rather confusing to me, is the idea that Rust developers are extremely rude and derogatory.

I'm one case, when I asked what sort of thing they were talking about, and where they were seeing that, as that didn't sound like my experience reading blogs and this forum as examples, they then informed me that, in fact, that was me being very rude, because clearly I was trying to draw them into an argument or something? I admit, I found the case rather confusing, I might not have understood it correctly.

Another at least gave an example of a coworker that liked Rust that they found to be insufferable, but I don't recall if they gave examples of this insufferable behavior.

6 Likes

Indeed. There are such charges in that Slashdot thread I linked to. Which is bewildering because the poster conveniently ignores all the abuse thrown at Rust developers and users in that thread.

Needless to say, I have never observed such bad behaviour from anyone associated with Rust.

Mind you, when I post to the effect that I have always considered using such error prone languages as C or C++ in safety critical systems as borderline professional negligence it ruffles some feathers :slight_smile:

That's not anything Rust-specific though. In my experience, a seemingly simple question "why do you think so?" is highly problematic, especially when the person being asked doesn't have an actual answer, no matter the topic.

4 Likes