Live data from Hacker News

Five Popular Myths about C++: Postscript

isocpp.org

11–20 of 39 posts

Re: Five Popular Myths about C++: Postscript

#11

> "Unfortunately, there is not a single place to go to look for C++ Libraries." I don't understand this. I code in C++ everyday at the moment (that's a story for another day) so I know the ecosystem, at least for scientific computing, pretty well. With all the changes and improvements being introduced, what's stopping a package manager from being added? The bane of my existence at the moment is the fact that I have t…

A package manager is generally not part of the language per se and should not be part of the language, but rather be part of the tooling ecosystem around it. Don't get me wrong. A de facto package manager is extremely important for any major language - and it's high time someone in the C++ community builds and promotes one. It just doesn't belong in the spec.

I do know of at least one: Microsoft's NuGet now supports C++ packages.

Something tells me that isn't the answer folks are looking for.

Re: Five Popular Myths about C++: Postscript

#12

There are a lot of objections to C++, but I've never seen any of the five he mentions. They sound more like strawmen to knock down than real objections by actual users or commentators critical of the language.

Congratulations! Your accusation of Stroustrup's strawman is strawman itself.

Re: Five Popular Myths about C++: Postscript

#13

> "Unfortunately, there is not a single place to go to look for C++ Libraries." I don't understand this. I code in C++ everyday at the moment (that's a story for another day) so I know the ecosystem, at least for scientific computing, pretty well. With all the changes and improvements being introduced, what's stopping a package manager from being added? The bane of my existence at the moment is the fact that I have t…

> what's stopping a package manager from being added? ...

> It just startles me that there isn't a single,

> consolidated package manager to have rolled out of the

> millions of work-hours that have gone into C++ projects.

>

> It's possibly the single biggest criticism of the

> language that I felt wasn't tackled at all.

As far as the standard committee: "creating tools" is outside the scope of "defining a language and its standard library." As far as the "millions of work-hours that have gone into C++ projects," it's probably a combination of nobody's come up with a package manager that satisfies enough programmers and nobody's been willing to spend the extra time to create such a tool. It's hard enough to ship code on time.

> There is a complete lack of consensus. In trying to

> accommodate everything and anything, C++ has in my

> experience overshot the mark.

It's certainly true that projects that try to take full advantage of C++'s flexibility end up collapsing. Projects generally shouldn't allow "everything and anything" in the code base. And many of the design principles that the committee follows should probably not be applied to software projects in general.

But the language has to satisfy more than your project, or more than the average project that programmers believe exists but can't agree on what it is. I've been writing C++ code professionally for years, and while I know how to, I haven't shipped any GUI code. I did write a gtkmm-based stopwatch to help my son with an elementary school science project (because I thought it was more fun to do that than to buy a stopwatch at the local sporting goods store). But professionally I've only written code for back end web services. I know I'm not the average C++ programmer people imagine, but I'm not sure if the average C++ programmer is writing desktop GUI software, or iPhone software, or libraries that will be called from Java, C# or some other language via SWIG. I know they aren't the average C++ programmers, but I do know some people write C++ to run on supercomputers (I used to work with one of them).

Regarding a package manager specifically: I personally have been happy to use RPM on my personal Linux system to manage packages. I wouldn't expect people to use RPM on a BSD or Apple system. I'm not sure that we need a special package manager just for C++ libraries. I miss anything like RPM when developing on Windows (edit: another comment mentions NuGet: I'll try it, thanks!). If you write something for Windows, I'll buy a copy.

My web services interact with efficient number crunching libraries written in C++. In my case, I don't need things to be as efficient as possible, but others do. I know Dan Bernstein believes the way to get super-efficient libraries is to use different implementations to take advantage of CPU-specific features ( http://www.tedunangst.com/flak/post/some-gripes-about-nacl ), but this makes package management much harder (at least without function multiversioning -- https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Function-Multiv... -- which isn't required by the standard). Should the committee tell Bernstein he's wrong? Or encourage compiler writers to ship with tools that Bernstein and others have no use for? How should the package manager handle a case where a library could work on my platform, but nobody's compiled it for me yet? What about platforms where the ABI isn't completely nailed down yet?

You have identified a real shortcoming in C++ development. There isn't an easy answer. But, seriously, if you write one I'll be sure to send you some money.

Re: Five Popular Myths about C++: Postscript

#14

> "Unfortunately, there is not a single place to go to look for C++ Libraries." I don't understand this. I code in C++ everyday at the moment (that's a story for another day) so I know the ecosystem, at least for scientific computing, pretty well. With all the changes and improvements being introduced, what's stopping a package manager from being added? The bane of my existence at the moment is the fact that I have t…

The bane of my existence at the moment is the fact that I have this HUGE Boost dependency in my code, even if I'm only using a few packages... It just startles me that there isn't a single, consolidated package manager... Sincerely, I have never understood this common complaint about C++ (applies to C as well, actually). My OS comes with a huge repo of C++ libraries. For example, there is a separate package for each…

Using the packaged versions that comes with the OS is very convenient if you can live with the versions you get. This means that you might have to update your application code when updating the operating system.

This can be fine for open source development, but it has never been acceptable at any closed source shop where I've worked. We wanted the freedom of not updating things in lockstep.

Re: Five Popular Myths about C++: Postscript

#15

Earlier quoted context omitted.

The bane of my existence at the moment is the fact that I have this HUGE Boost dependency in my code, even if I'm only using a few packages... It just startles me that there isn't a single, consolidated package manager... Sincerely, I have never understood this common complaint about C++ (applies to C as well, actually). My OS comes with a huge repo of C++ libraries. For example, there is a separate package for each…

Windows. OSX (to some degree; Homebrew and MacPorts mitigate this). Linux if you want library versions newer than those supplied by the distro, if you want something that's not supplied by the distro, or if you want to be able to handle your build in a distro-independent manner (those "separate packages for each of the Boost libraries" you reference are provided by your distribution; Boost themselves only distribute…

This.

I've been playing out with Cargo and the Julia package manager and it's so nice to have a consolidated way of dealing with dependencies, included their build-systems.

I've now resorted to setting up a template project for myself [1] that uses CMakes ExternalProject_Add to pull in dependencies, configure and build them. ExternalProject_Add is so finicking though. How I'd love a packages.json solution for C++, where I can specific standardized libraries or Github/Bitbucket repositories not provided by the distro/package manager.

I'd love to see a Homebrew fork morph into a cross-platform package manager for C++. Would make my life so much easier.

[1] https://github.com/kartikkumar/cpp-project

EDIT: Added missing reference

Re: Five Popular Myths about C++: Postscript

#16

There are a lot of objections to C++, but I've never seen any of the five he mentions. They sound more like strawmen to knock down than real objections by actual users or commentators critical of the language.

I've encountered each of these myths "in the wild," and I dare say you'll see them thrown up repeatedly here on HN in various contexts.

The third item on that list especially is something you can almost certainly see every day in a random HN thread about programming languages (along with counterpoints).

In fact, 'safety', of which GC is a subset, is a huge objection, and one of the first, most frequently raised in my experience. People are afraid of pointers, some rightly (e.g. because they've personally experienced bad memory management code, or they've never worked outside of a dynamic language, etc.), but most not.

Re: Five Popular Myths about C++: Postscript

#17
post #8

Earlier quoted context omitted.

The bane of my existence at the moment is the fact that I have this HUGE Boost dependency in my code, even if I'm only using a few packages... It just startles me that there isn't a single, consolidated package manager... Sincerely, I have never understood this common complaint about C++ (applies to C as well, actually). My OS comes with a huge repo of C++ libraries. For example, there is a separate package for each…

Pretty much. In particular, Boost is already packaged and available for clean dependency management on all Linux distros. And on Windows, you're almost always looking at shipping a statically build binary (or one with the DLLs packaged) anyway, so an external package manager would provide little value anyway. Really the existence of language-specific package management might be considered the bug, and not the feature…

Do you think every Node.js package should be released as an OS level package?

Re: Five Popular Myths about C++: Postscript

#18
Manual memory in C++ is so cumbersome that is efectively imposible to develop programs with no memory leak bugs in real life.

Anyway, the more important fact about C++ is that it is a language complicated to no end, with an insanely bad design on purpose, so a couple of guys can sell consulting services, write books, and the like.

The year 2015 is about to come, let's just stop filling the world with such primitive and ugly ugly code. We have saner alternatives to C++ since ever.

Re: Five Popular Myths about C++: Postscript

#19

There are a lot of objections to C++, but I've never seen any of the five he mentions. They sound more like strawmen to knock down than real objections by actual users or commentators critical of the language.

I've encountered each of these myths "in the wild," and I dare say you'll see them thrown up repeatedly here on HN in various contexts. The third item on that list especially is something you can almost certainly see every day in a random HN thread about programming languages (along with counterpoints). In fact, 'safety', of which GC is a subset, is a huge objection, and one of the first, most frequently raised in my…

Note that one can be against a programming language feature without being afraid of them. I think pointers are a bad feature in a programming language because they're not necessary. It's rather unfortunate that Go, for example, supports pointers (which is of course not surprising when you consider who designed it).

Re: Five Popular Myths about C++: Postscript

#20
post #18

Manual memory in C++ is so cumbersome that is efectively imposible to develop programs with no memory leak bugs in real life. Anyway, the more important fact about C++ is that it is a language complicated to no end, with an insanely bad design on purpose, so a couple of guys can sell consulting services, write books, and the like. The year 2015 is about to come, let's just stop filling the world with such primitive a…

shared_ptr a = make_shared(10);

What's so hard about managing that? shared_ptr is basically equivalent to Python garbage collection.

Shared_ptr were standardized in 2003, and Microsoft implemented CComPtr way back in the 90s for this easy to use reference-counted smart-pointer concept.

http://msdn.microsoft.com/en-us/library/aa266806%28v=vs.60%2...

So... yeah. Stop doing manual memory management in C++. Something better has existed... since the 90s.

So how about you criticize something in C++ that wasn't solved at least 16 years ago?

Post reply on HN