The advantage of using a popular and established programming language is that you need only examine your own code when fixing bugs. With new and emerging technologies the bug could be anywhere in the tool chain...
At risk of sounding like a Rust fanboy I have to say that Rust is no different from C/C++ in this respect. If the segfault I have with that library in Rust were instead the equivalent bug in a library used from C I would be in the same position. I would have the same questions: Is it a bug in my source? Is a bug in the library? Is it a bug in the compiler? Admittedly libs for C/C++ that have been around along time and widely used are less likely to have bugs.
...This is not good in a first programming language designed for beginners.
That statement got me recalling things I perhaps would rather not remember. Time for an anecdote...
The first time anyone ever wanted to pay me to write code in a high level language was about 1981. The company was Northern Telecom, the language was C. I knew nothing of C so they set me up with a computer and a C compiler and I set about learning it.
Very soon I discovered that pretty much any error in my code would cause the program to crash out, with no sensible error message pointing me to my faulty source. Often such a crash would hang the whole machine and require a reboot. Or, worse still, functions that I had tested and run a lot and was confident in, would start to produce wrong results at random when I introduced new code to he program. It was nigh on impossible to find the problem by inspecting my source code.
After a week of this intense frustration and thinking there had to be something wrong with my compiler and/or computer I turned to a colleague and asked something like "Is it normal that in a high level language we can write code that crashes without an error message or brings down the whole machine like that?". Well, you could hear a pin drop. The whole office went quiet. They were all looking at me in amazement, as if I was the biggest idiot they had ever seen. They were old C hands and knew the score. My colleague, bless him, took me aside and, speaking slowly as if to a retard, explained the situation. That was the moment I understood that C was not a high level language. Rather it is a means of writing assembler without the architecture specific instructions. After that all went well, I had written lots of assembler before that so I could deal with it.
Was I an idiot for asking that question? Perhaps but... my experience of high level languages in tech school and uni. before that were in BASIC and Algol. In both cases the compiler/interpreter would never just bomb out. There were no undefined behaviors. If you did something the compiler did not like it would stop and tell you where your mistake was, either at compile time or run time.
With those memories in mind I conclude that C/C++ are most certainly not good as a first programming language for beginners to programming.
BASIC and Algol were. They stopped at any undefined behavior and issued helpful error messages rather than crash or give randomly wrong results.
Rust, with it's absence of undefined behaviors and excellent error messages is far more beginner friendly, in the mold of Algol.
Memory in C++ is a leaky abstraction .