Kernighan shared his thoughts on what he thinks of the world today — with its push away from C to more memory-safe programming languages, its hundreds of distributions of Linux — and with descendants of Unix powering nearly every cellphone.
I’d go even further: the learning curve for Rust is shallower than C/C++.
C is obvious: dealing with strings is a goddamn nightmare in pure C, and strings are used all the time in modern programming. Almost no guardrails for memory safety mean that an inexperienced programmer can easily run into undefined, nondeterministic behavior that makes bug hunting difficult.
In C++, there’s a trillion ways to do anything (which varies enormously based on C++ version), and when you make mistakes of even moderate complexity (not “missing semicolon on line 174”), compilers like gcc spit out a gargantuan wall of errors that you need to know how to parse through.
Rust, in my experience, gives you a much clearer “good” way to do something with some room for expression, and its compiler tells you exactly what you did wrong and even how to resolve it.
The fact that the compiler actually guides you, to me, made learning it much easier than C/C++.
By the vague looks of it, he has tried Rust for something he would use C for. His impression of Rust’s utility in that domain seems unsurprising.
Beyond that
I used to not question why we build anything other than “system software” in C/C++. Once I questioned that, I quickly got past the “Why not Ada/D/etc.” stage and reached the “why is so much of large software written in mid-level languages” stage. For anything bigger than, say, a Unix CLI tool, it probably is, and has always been, wrong to use anything at the level of C (C++, Ada, D, Nim, Rust, Zig, etc.).
This choice of language level for “application software” seems to be a commercial choice. The software commons is using such languages probably because contributors want to hone their job-oriented skills. It got better with Python and Ruby uptake in open projects. But, efficient, safe but simple languages, say, OCaml and Erlang, have been available for decades. Crystal is also looking good right now.
I’d go even further: the learning curve for Rust is shallower than C/C++.
The fact that the compiler actually guides you, to me, made learning it much easier than C/C++.
By the vague looks of it, he has tried Rust for something he would use C for. His impression of Rust’s utility in that domain seems unsurprising.
Beyond that
I used to not question why we build anything other than “system software” in C/C++. Once I questioned that, I quickly got past the “Why not Ada/D/etc.” stage and reached the “why is so much of large software written in mid-level languages” stage. For anything bigger than, say, a Unix CLI tool, it probably is, and has always been, wrong to use anything at the level of C (C++, Ada, D, Nim, Rust, Zig, etc.).
This choice of language level for “application software” seems to be a commercial choice. The software commons is using such languages probably because contributors want to hone their job-oriented skills. It got better with Python and Ruby uptake in open projects. But, efficient, safe but simple languages, say, OCaml and Erlang, have been available for decades. Crystal is also looking good right now.