C'mon baby, let's get to plagued status.
Don't talk about programming languages you haven't written a single line of code in.
I've written trivial Brainfuck programs. Don't criticize Brainfuck without the same level of experience.
Rust is a great solution for systems programming.
No, it's a meme.
Being unable to do things without jumping through a bunch of gay hoops is cancer.
I want to use another example from Ada: Ada has nominal strong typing, a particularly strong form of strong typing, meaning that even identical types with different names can't be treated identically; this enforces modularity. The programmer is forbidden from reaching into the internal representation of a private type and treating it like another type, even if he
knows it's the same type underneath. This maintains the package boundary the interface sets up, now doesn't it? In fact, Ada allows the programmer to define types that have many restrictions, such as no assignment, no equality comparisons, and even no ability to declare a value of the type without providing more information where required. All of this is very useful for defining mechanisms beyond the language specification.
In C and UNIX land, the systems programmer can define types that are actually safe from certain manipulations, namely file descriptors, but everyone else struggles to approximate that. Isn't that inconvenient and restrictive for no good reason?
Deliberately making your programming language harder to use is idiotic.
Power tools have legally mandated safety mechanisms. I almost lost a limb once, but the safety mechanism shut down the machine before it mutilated me. Programming languages are no different.
While this allows you to confine pointer wizardry to specially designated areas of the code, you can also accomplish that task in C by a policy to rejecting PRs which do that.
Come now, the C language not only makes certain things extremely difficult, but it requires them everywhere. Ada yet again does it right by having access types, but making them very easy to avoid. The programmer can't even get by-reference parameter passing in the C language without using a pointer.
The Rust compiler has some support for eliding bounds checks if it can guarantee that the index falls within a range, but it can only do that for very simple cases.
Trying to remove necessary checks is a mental illness.
Nobody cares if you use a wrench or a crowbar to get something done.
In fact, people do care when the wrong tool is used for a job, as it implies incompetence and ignorance, and it can lead to lesser work very easily. Try painting with a toothbrush next time.
You want the technology to be holding your hand and preventing you from making those errors.
With experience comes humility and then you realize that you can use technology to assist you instead of turning software development into a dick measuring contest.
These people will never understand that, because their egos rely on this worthless knowledge. Why, if programming were easier, and if more people could do it, they couldn't lord it over normal people like wizards anymore. Their voice is clear: Humanity got it right in the 1970s, not before, and not after; everything should stay like that, forever.
The point of programming language (and why c is still popular, in spite of how old it is) is that you can dictate exactly how your software behaves.
No, there are plenty of constructs that are impossible to express in the C language. C language programmers just like to pretend that they're controlling the computer directly, when they're no better than any other language running under a huge operating system.
Woah, I'm directly manipulating (virtual) memory (except the stack which doesn't count) and directly controlling the hardware (by making calls to the operating system that has tens of millions of lines of code)! I'm the master of the universe!