News for hackers. Stuff that matters.
Re:C++ 17 is Done by overgard on Saturday March 25, 2017 @12:48PM (#13956446)
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.

Re:C++ 17 is Done by pjmlp on Saturday March 25, 2017 @02:49PM (#13956979)
> 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)....

Re:C++ 17 is Done by duneroadrunner on Saturday March 25, 2017 @07:56PM (#13958148)
> 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

Re:C++ 17 is Done by progman on Sunday March 26, 2017 @08:26AM (#13960419)
> 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.

Re:C++ 17 is Done by imron on Tuesday March 28, 2017 @04:49AM (#13975078)
> 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

Re:C++ 17 is Done by progman on Tuesday March 28, 2017 @04:56AM (#13975109)
This 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

And yes, Ada is still used today.

http://www.ada2012.org

Re:C++ 17 is Done by imron on Tuesday March 28, 2017 @05:02AM (#13975130)
So 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.

Re:C++ 17 is Done by progman on Tuesday March 28, 2017 @05:52AM (#13975305)
Crashes 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-lan...