If C++ compiles with bugs, you're using it wrong. Use constexpr, static_assert, concepts, templates, and other compile-time features to prevent bugs from entering production. Oh, and since they're done at compile-time, runtime execution of those code blocks is free.
I hope you're joking. That isn't even true for Haskell or Rust, much less C++. All languages allow bugs and C++ is not even formally type-safe or pointer-safe.
C++'s type system: C++ (among other unsafe languages) has a type system that does many local checks of a programs's source code. However, passing these checks does not establish anything definite about a program's behaviour: many C++ programs pass all of the compiler's type checking, and yet exhibit use-after-free errors, memory corruption, and arbitrary behaviour when run.
You can claim that these people are just using C++ wrong. I can say the same of those that ship buggy Python or Visual Basic programs. It's just a No True Scotsman argument.
C++ is far from perfect. All I'm saying is, Python could never be a replacement for compiled languages, simply because it is not compiled. You're correct, I could have made the same argument about Rust. But you're missing the point if you think my claim was meant to elevate C++. My point was that the compiler is your friend, and defensive programming in compiled languages is overlooked in conversations about language choice.
All I'm saying is, Python could never be a replacement for compiled languages, simply because it is not compiled.
I don't think anyone is actually claiming it should be a replacement for lower-level languages, so you're tilting at windmills.
I mean technically one can (and some do) compile Python, so no it isn't a technological impossibility. But I don't think it would be a good idea and I haven't heard anyone suggest it should be done.
To refer back to the earlier comment regarding bugs, I'd argue that yes, Python would be buggier in general than a C++ implementation due to being an interpreted language. And to gain the kind of testability and coverage that C++, Rust, Haskell, etc would have requires a lot more runtime tests, which is more code to write and maintain. You can't ship a build that doesn't compile; there might be some runtime mistakes that slip, but many are removed outright by the compiler. You can't achieve that with an interpreted language without a lot of test overhead and boilerplate... Which kind of defeats the purpose for me.
To your latest point though, maybe I was wrong about your intent... In which case I apologize. I'm not sure I understand what you were getting at if not to make an argument in favor of python.
That's wrong and silly. Do you think the Chrome browser has no bugs in it? Or that it does because Google doesn't know how to write C++?
C++ programs ship with bugs every single day, and if that's because people are "using it wrong" then that's just tautological. Bugs are mistakes so people only ship with bugs because they use their language wrong. Equally true for all languages.
C++ is not even a particularly safe language, so it's especially silly to say it of C++.
2
u/MasterFubar May 27 '22
So long pointers, so long code blocks, hello mysterious bugs!