5 ms·
C++ has been getting a lot safer though. Modern C++ generally has you using shared_ptr and unique_ptr and references, which cut down on a lot of common pointer
by overgard 10y ago
C++ has been getting a lot safer though. Modern C++ generally has you using shared_ptr and unique_ptr and references, which cut down on a lot of common pointer mistakes. There's also a lot of const mixed in, which I think helps. Debuggers have also gotten a lot more reliable (I remember one crash bug that I couldn't find after like three days of looking in an old visual studio version, whereas newer visual studio caught it immediately). Not that the language isn't a minefield, but if you walk in the modern part there's a lot less mines buried in the ground.
As much as I complain about C++, I just don't think there's a viable alternative, and I somewhat reject the notion that writing performant code is a niche thing. Like, sure, there are common contexts where you can get away with wasting CPU, but IMO part of being a skilled professional programmer is getting the most out of the machine, and you just can't do that with most other languages.
- pjmlp 10y ago> I somewhat reject the notion that writing performant code is a niche thing. It surely isn't, otherwise we wouldn't be getting wind back into going native sails, with Swift, Rust, Go, Crystal, D, .NET Native, CoreRT, Java 9 (just a little bit, more with 10)....
- duneroadrunner 10y ago> I just don't think there's a viable alternative Fyi, when safety is important and C++ is the only viable alternative, there's SaferCPlusPlus[1]. And wrt new C++17 features, I'll just point out that the SaferCPlusPlus library provides a version of std::any (and std::variant) geared specifically for pointer/iterators. That is, you can, for example, dereference the contained pointer/iterator without needing to know its actual type. And for those that need it, it also provides the "recursive_shared_timed_mutex" that's notably missing from the standard library. [1] shameless plug: https://github.com/duneroadrunner/SaferCPlusPlus https://github.com/duneroadrunner/SaferCPlusPlus
- progman 10y ago> I just don't think there's a viable alternative If C++ is your only hammer then every problem looks like a nail to you. Of course, there are viable alternatives. At least Ada which is still used in avionics and other safety critical systems.
- imron 10y ago> At least Ada which is still used in avionics and other safety critical systems. Like Ariane 5? :-> The crash was caused in part by failing to catch an exception in Ada. http://sunnyday.mit.edu/accidents/Ariane5accidentreport.html http://sunnyday.mit.edu/accidents/Ariane5accidentreport.html
- progman 10y agoThis was not Ada's fault but the developer team's fault since it used a working Ariane 4 software for Ariane 5 without exhaustive testing. They made the mistake, and blamed Ada for that. The Ada software worked perfectly for which it was written for. http://compgroups.net/comp.lang.ada/ariane5-faq/1406823 http://compgroups.net/comp.lang.ada/ariane5-faq/1406823 And yes, Ada is still used today. http://www.ada2012.org http://www.ada2012.org
- imron 10y agoSo how many crashes that happen in programs written in C++ are the development teams fault rather than the C++'s? Ada is an interesting language (we were taught it as our first language at uni), but it's not free from safety issues.
- progman 10y agoCrashes due to the language implementation's fault are much more likely in C++ than in Ada. Ada compilers are 100% verified, otherwise they are not allowed to call themselves "Ada compiler". There is no such thing for C++. The safety gap between C++ and Ada is actually so big that we don't even need to talk about that. The flaws C++ were the reasons why Rust was invented. Mozilla wanted a safe language for the next generation of browsers, and they realized that C++ is not a good choice for safe programming. Quote: "Mozilla intends to use Rust as a platform for prototyping experimental browser architectures. Specifically, the hope is to develop a browser that is more amenable to parallelization than existing ones, while also being less prone to common C++ coding errors." Source: https://www.quora.com/Why-is-Mozilla-developing-the-Rust-language-and-what-are-the-problem-areas-for-which-it-is-better-suited-than-conventional-languages-How-does-it-compare-to-other-system-languages https://www.quora.com/Why-is-Mozilla-developing-the-Rust-lan...