Live data from Hacker News

What will C++17 be?

docs.google.com

51–60 of 86 posts

Re: What will C++17 be?

#51
post #16

Earlier quoted context omitted.

Yes, but I was talking about MSVC - MicroSoft Visual C++ compiler.

That's kind of like saying "You haven't read Shakespeare until you read him in the original Klingon." Waiting for Microsoft to make a compiler seems like it ought to be orthogonal to moving the language forward, especially when non-Microsoft tool chains are already doing better with that particular language. Microsoft has enough on their plate bringing C# and .Net to Linux and Unix, and I'd much rather they get that…

>That's kind of like saying "You haven't read Shakespeare until you read him in the original Klingon."

Not really. It's one of the top handful of compilers and none of them are "original" wrt the language standard.

Re: What will C++17 be?

#52
post #46

Some of these proposals are really intriguing. More details: Concepts: http://en.wikipedia.org/wiki/Concepts_%28C%2B%2B%29 Modules: http://clang.llvm.org/docs/Modules.html Coroutines: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n370... operator. (for proxies): http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n417... Uniform call syntax: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n417..…

I'd suggest looking at the papers that were submitted for discussion at the upcoming Lenexa Standardization meeting for references. They're located here: https://isocpp.org/blog/category/standardization

Here's numbers for the ones you listed:

Concepts: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/n436...

Modules: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/n446...

Coroutines: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/n439... & http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/n439.... Also http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n413...

operator dot: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/n447...

Uniform call syntax: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/n447...

Here are some others that Stroustrup listed. I think they're probably important proposals. I imagine Stroustrup has at least some priority order in his list.

Ranges: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/n438...

Comparisons: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/n447... & http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/n447...

array_view: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/n434...

Re: What will C++17 be?

#53
post #16

Earlier quoted context omitted.

Yes, but I was talking about MSVC - MicroSoft Visual C++ compiler.

That's kind of like saying "You haven't read Shakespeare until you read him in the original Klingon." Waiting for Microsoft to make a compiler seems like it ought to be orthogonal to moving the language forward, especially when non-Microsoft tool chains are already doing better with that particular language. Microsoft has enough on their plate bringing C# and .Net to Linux and Unix, and I'd much rather they get that…

I'm obliged to make my c++ code work on a variety of platforms, and on windows this means visual studio.

Re: What will C++17 be?

#54
post #32
post #19

Earlier quoted context omitted.

Ugh. Language-based package managers are one of the biggest misfeatures of the millenium. They're all well and good* until they have to interact with the world outside their language universe. * I'm being very generous here.

Hm... Can you elaborate? I have nothing but good things to say about PIP (the only package manager I've used extensively).

It's frustrating having the proliferation of different package managers.

Each one can work well in isolation; but when you then need to integrate with your platform package manager or another language's package manager, you get a combinatorial explosion of possible interactions.

One example that I've been particularly frustrated by recently is Python/Emacs integration. I have Emacs and Python installed via my system package manager (apt). Then there are a bunch of Emacs modes that I need to install via the Emacs package manager (elpy and its dependencies). Those in turn have dependencies on Python packages (rope/flake8). And finally I have a bunch of different python packages that I work on that are all linked to from a virtualenv so that they'll all resolve properly in all of those tools.

If I upgrade one part of that system (apt, emacs packages, python packages), it frequently breaks other parts, because there aren't any proper dependencies between them. I then have to spend a while fiddling with the whole setup to get it back up and running again.

Basically, the more package managers you have, the less value they have. The whole point of package managers is to manage a whole set of packages together, so you don't have to manually go through and resolve all of the dependencies yourself, manually figure out which version of this package goes with what version of that package. But every time there is some dependency between two different package managers, that breaks down.

Another part of the frustration is that they are all basically doing the same thing, but with slightly different implementations. In the end, a package manager's purpose is to let you figure out which packages you need, by resolving dependencies while honoring version constraints, fetch those packages from an archive somewhere (and verify that they are intact and haven't been tampered with), unpack them and install the files in the right places, and run some glue code to set up indexes, documentation, and so on appropriately. The only part of that task which really needs to differ between package managers is that glue code, plus the policies for inclusion in the centralized archive; everything else is basically solving the same problem in a whole bunch of slightly different ways (different ways of representing and comparing version numbers, different ways of verifying package integrity, different ways of doing local mirrors, etc), and so you get a whole bunch of incompatible and differently buggy implementations of the same kinds of things, or some functionality just missing from certain package managers.

What I would really like to see is a single unified package manager core, that handles all of the basic functionality that they all set out to solve, with the ability to utilize multiple different repositories (so that different projects could have their own policies for inclusion and sets of packages that are designed to work together), and appropriate places to hook in all of the language (or distro) specific glue that you need. I've been mulling over trying to write such a package manager, but of course when doing so you need to be careful or you will run into this problem: https://xkcd.com/927/

Re: What will C++17 be?

#55

Earlier quoted context omitted.

Its funny how strong the ideological stance exists among programmers. Any comment making fun of windows always get upvoted even if its just anecdotal. My experience is also anecdotal and needs to be taken just a data point. Linux users seem to not be able to stomach any constructive criticism. I tried using linux for a long time - the problem is life got in the way. I need to provide lab reports and do mathematics. L…

I dont understand why you cant make lab reports and do mathematics on Linux? Serious scientific papers are written using Latex, not Microsoft Word. And what math software doesnt run on Linux?

Serious scientific papers are written using Latex, not Microsoft Word

You'd be surprised. I know labs publishing multiple high impact papers pretty much each year and then some more less high impact papers and they all use Word. Also PowerPoint for posters. Probably not the best tools for the job, but I see that often in research.

Re: What will C++17 be?

#56
post #29

Earlier quoted context omitted.

Linux is used by 1% of all computer users on the planet. Trying to program C++ in windows is an horrible experience that I wont wish on my worst enemy. Linux is nice, but it doesn't have after effects, support for the latest ultrabooks, photoshop ( sorry GIMP is a joke ). Linux also contantly breaks whenever I tried using it, sound, video ? Also gaming. Anyway the browser environment is cool because it forced everyon…

But Linux is used by a vastly larger percentage of C++ programers. As an amateur, I've found kdenlive and audacity provide decent video and audio editing on Linux. Professionals use Mac. Typically installing Linux from scratch has involved less fiddling with drivers than installing windows from scratch on an empty laptop for a while now. If you want a laptop with Linux support out of the box, you can pay for that and…

> Typically installing Linux from scratch has involved less fiddling with drivers than installing windows from scratch on an empty laptop for a while now.

Windows 8 has worked out of the box on every configuration I've tried, with the caveat that it installs non up to date drivers (e.g. High end graphics cards). My experience with Linux (Ubuntu 15.04) is that the little use peripherals I have don't work at all ( I've a Bluetooth usb adapter and a usb capture card that both are plug and play on windows vista onwards but I've yet to find working drivers on Linux for).

Re: What will C++17 be?

#57
post #6

Earlier quoted context omitted.

c++11 came in 2011. c++14 came in 2014. Seeing a pattern yet?

When we'll have a compiler support - this is what really matters, especially for those who use MSVC... It is 2015 and we still don't have a full C++11 support.

The pattern is generally that Clang and GCC will have partial support when the standard is release, and full support a couple of years later. Intel will lag behind a year or two after that. Microsoft will be behind another year or two.

So, let's say that C++17 does come out in 2017. It will probably be the case that some of the features will be ready to use in GCC and Clang right away, and around 2019 or so they should have full or nearly full support. 2021 for Intel. 2023 for Microsoft.

So that gives you a range of answers. Depending on which features and which compiler, you could start using some of them immediately (or even before 2017, many of the features are implemented experimentally in advance), but if you want full support across the range of commonly used compilers, you're probably going to be waiting until the early to mid 2020s.

Re: What will C++17 be?

#58
post #9

Earlier quoted context omitted.

From where I'm standing, C++ package management is already quite nicely solved by what we call package managers in the linux world. You know, portage, aptitude, etc.

They are hacks that paper over the lack of good package management. Plus they are too much extra work, and OS-specific. No build system integrates with them as far as I know. I think what people want is something like go, where you add a single line to your code and it magically downloads and compiles the referenced library. C++ doesn't have anything like that (and I doubt it ever will to be honest).

> I think what people want is something like go, where you add a single line to your code and it magically downloads and compiles the referenced library.

Not like Go. It needs to solve versioning.

Re: What will C++17 be?

#59
post #54
post #32

Earlier quoted context omitted.

Hm... Can you elaborate? I have nothing but good things to say about PIP (the only package manager I've used extensively).

It's frustrating having the proliferation of different package managers. Each one can work well in isolation; but when you then need to integrate with your platform package manager or another language's package manager, you get a combinatorial explosion of possible interactions. One example that I've been particularly frustrated by recently is Python/Emacs integration. I have Emacs and Python installed via my system…

I agree with you in theory, but in practice the existing package managers are simply not suitable for the new languages (too fragmented, walled gardens, not powerful enough), so language designers really don't have any other solution except making their own manager. Ideally, though, a language's package manager would integrate nicely with the system's package manager and would know how to automatically install other packages.

Re: What will C++17 be?

#60
post #59
post #54

Earlier quoted context omitted.

It's frustrating having the proliferation of different package managers. Each one can work well in isolation; but when you then need to integrate with your platform package manager or another language's package manager, you get a combinatorial explosion of possible interactions. One example that I've been particularly frustrated by recently is Python/Emacs integration. I have Emacs and Python installed via my system…

I agree with you in theory, but in practice the existing package managers are simply not suitable for the new languages (too fragmented, walled gardens, not powerful enough), so language designers really don't have any other solution except making their own manager. Ideally, though, a language's package manager would integrate nicely with the system's package manager and would know how to automatically install other…

Oh, I know why it keeps on happening, but it leads to a frustrating and fragmented experience. That's why it would be nice to have a common core package manager, that handles all of the tasks that any package manager will need to handle (metadata, versions, dependencies, dependency resolution, conflicts, features, fetching packages, verifying packages, managing an archive of packages, etc), plus the ability to hook in at appropriate places to provide the distro or language specific hooks necessary, and the ability to have cross-archive dependencies (including union dependencies like "either these three Debian packages, these two Fedora packages, or this Homebrew package"). That would then let you focus on solving the common problems in one place, and leave each language or distro to only have to focus on its own particular glue and policies.
Post reply on HN