Live data from Hacker News

Should we stop writing functions? (C++)

foonathan.net

11–20 of 44 posts

Re: Should we stop writing functions? (C++)

#11
post #4

You look throught the positives and you start to go yeah, yeah! But then on the downsides. Ugh, it will make debugging even more ugly? Debugging considerations are one of the last things people tend to think about when 'architecting'.

I always push back on decisions that have benefits with reduced debugability. It's rarely worth the hassle to take on a "more performant" or easier to develop tool if devs can't easily figure out what's wrong with it. Especially in a big company where people move around, and tend not to be familiar with tools...

That's a brave argument I'd rarely make of "We could do this thing with major tangible benefits but our Devs might find it a bit hard"

Re: Should we stop writing functions? (C++)

#12
post #7

This kind of post is why I do not understand C++ programmers whatsoever. It's basically a demonstration of the absurd amount of time C++ takes away from you by being the moldy pile of shit that it is. You want better compiler checks and less freedom? Great, me too. Can we please shut the fuck up and use a language that actually supports that?

> This kind of post is why I do not understand C++ programmers whatsoever. It's basically a demonstration of the absurd amount of time C++ takes away from you by being the moldy pile of shit that it is. What? Exactly what led you to think that nonsense? A random blog post of someone misusing lambda expressions? There are plenty of things in C++ to criticize, but a) you are not actually criticising anything at all and…

This isn't a random blog post and the techniques in the blog are actually used by the standard library and some pretty major C++ libraries such as range-v3 and fmtlib.

The author of the blog post is in fact one of the authors of fmtlib.

Getting libraries to play nicely with ADL is actually a huge pain in the ass and in fact the three major C++ compilers don't agree with one another on how to actually perform name lookup in a large number of cases.

Re: Should we stop writing functions? (C++)

#13
post #3

This kind of post is why I do not understand C++ programmers whatsoever. It's basically a demonstration of the absurd amount of time C++ takes away from you by being the moldy pile of shit that it is. You want better compiler checks and less freedom? Great, me too. Can we please shut the fuck up and use a language that actually supports that?

It simply has too many upsides and is way too popular to be replaced with either - a simpler language that does less - a less popular language - a more verbose / restrictive language If you want people to switch to something better, make something better . Its not enough to simply call out the issues (which is valid, but not useful anymore), and it entirely dismisses that replacement languages like D (small, less act…

I like the idea of Rust, the tooling, the package manager (far more better that what you can find in C++).

What you are saying is true: I've been writing high performance scientific code and desktop gui apps. I would love to use Rust for my projects, but it just doesn't cut it. The libraries I am using are very mature in C++, but the libraries in Rust to accomplish the same thing are still too immature to consider in my projects.

Re: Should we stop writing functions? (C++)

#14
post #8

Its important to note the article was published on April 1st.

> Its important to note the article was published on April 1st. Haters don't waste time trying to understand what is before them. They just see a superficial opportunity to unleash hate and just go for it, logic be damned.

Man the irony of your comment... it is in fact you who did not bother to verify that in fact this article was not published on April 1st.

Re: Should we stop writing functions? (C++)

#16

This kind of post is why I do not understand C++ programmers whatsoever. It's basically a demonstration of the absurd amount of time C++ takes away from you by being the moldy pile of shit that it is. You want better compiler checks and less freedom? Great, me too. Can we please shut the fuck up and use a language that actually supports that?

What a well thought out and considerate post! HN needs more people like you making such valuable contributions.

Re: Should we stop writing functions? (C++)

#17

Earlier quoted context omitted.

I always push back on decisions that have benefits with reduced debugability. It's rarely worth the hassle to take on a "more performant" or easier to develop tool if devs can't easily figure out what's wrong with it. Especially in a big company where people move around, and tend not to be familiar with tools...

That's a brave argument I'd rarely make of "We could do this thing with major tangible benefits but our Devs might find it a bit hard"

Why aren't we writing everything in assembler? It's so much faster!

There's a huge number of business process where execution time is almost a non-issue. As long as the thing runs every day/week/month/quarter no one will give a crap. Development time, supportabilty, and onboarding time for new developers tend to matter way more for those sorts of processes. For things your shipping out to end users? Optimization and speed tend to matter enough to justify the development cost, but there's an absolute ton of internal business processes, and even internal applications, where optimizing it would cost way more than just running with what the dev team already knows.

Re: Should we stop writing functions? (C++)

#18
post #3

This kind of post is why I do not understand C++ programmers whatsoever. It's basically a demonstration of the absurd amount of time C++ takes away from you by being the moldy pile of shit that it is. You want better compiler checks and less freedom? Great, me too. Can we please shut the fuck up and use a language that actually supports that?

It simply has too many upsides and is way too popular to be replaced with either - a simpler language that does less - a less popular language - a more verbose / restrictive language If you want people to switch to something better, make something better . Its not enough to simply call out the issues (which is valid, but not useful anymore), and it entirely dismisses that replacement languages like D (small, less act…

>If you want people to switch to something better, make something better.

We already have C, which is better. It existed before C++. It will exist long after C++ is dead. If you don't over-architect and over-abstract your code you can be more productive in C than in C++ precisely because you avoid the kind of nonsense that this article (and the endless other articles about overcoming C++'s shortcomings and cognitive overheads) talk about. In the time you spend waiting for C++ code to compile, you can instead just write more code in C.

Look at all the articles that get posted here about C++. There was a post a day or two ago about trying to work around C++ compilation times. How long does it take to compile C projects? Not long at all, if you follow standard rules that have been well-known for decades like forbidding #include in header files.

>If all the other compilers and languages were THAT much better, they would be used.

Argument from popularity/Blub paradox. If C++ is so good why does it need to be constantly updated and extended? If you think C++23 is better than C++20, then surely you accept that C++23 can at least potentially be worse than things that already exist.

---

People have an attitude towards C. They think "oh but what about std::vector? I will have to write my own containers". But 90% of the time you will have good enough or even better performance with a few lines of code. Often you know statically the maximum size and can just allocate that at compile time, or you know before filling a collection what the size will be. In C++, most code dealing with vectors that I have seen pre-sizes the vector anyway. That could just be a 'malloc' or a static array. The result is that you compile in debug mode and your program actually works, you can use a debugger, everything Just Works. Programs run at almost full speed in debug mode, and debuggers work. It's glorious.

In C++, you spend a hundred thousand lines of code reimplementing standard library containers anyway because anything more complicated than std::vector is unsuitable for non-trivial programs, and then the only way your program will run is with optimisations on, because your 'zero-cost' abstractions are actually very high cost if you aren't compiling with -O3.

Oh yay I have a big standard library in C++. Thanks for saving me from having to use the old ugly BSD sockets API to do networking. I can use a nice modern networking API in C++. Oh... it doesn't exist? Oh well, I'll use a nice modern filesystem API in C++. Oh, it only was added recently and lacks basic functionality? Oh well, I guess in return for learning the 50 different ways of initialising a variable, and all the subtleties of argument-dependent lookup and glprxvalues and template deduction guides and template⟨T=std::enable_if⟨std::is_void⟨void_t⟨int⟩⟩::type⟩::value⟩ I will get the benefit of using a high-quality standard library that contains std::regex and std::random and std::chrono and std::thread and std::vector and std::unordered_map and all the other VERY high quality standard library facilities provided by the C++ standard library!

Oh they're all crap. Pity.

Re: Should we stop writing functions? (C++)

#19

This kind of post is why I do not understand C++ programmers whatsoever. It's basically a demonstration of the absurd amount of time C++ takes away from you by being the moldy pile of shit that it is. You want better compiler checks and less freedom? Great, me too. Can we please shut the fuck up and use a language that actually supports that?

Honestly these are issues introduced by C++, and avoidable by using C.

Re: Should we stop writing functions? (C++)

#20
post #3

Earlier quoted context omitted.

It simply has too many upsides and is way too popular to be replaced with either - a simpler language that does less - a less popular language - a more verbose / restrictive language If you want people to switch to something better, make something better . Its not enough to simply call out the issues (which is valid, but not useful anymore), and it entirely dismisses that replacement languages like D (small, less act…

>If you want people to switch to something better, make something better. We already have C, which is better. It existed before C++. It will exist long after C++ is dead. If you don't over-architect and over-abstract your code you can be more productive in C than in C++ precisely because you avoid the kind of nonsense that this article (and the endless other articles about overcoming C++'s shortcomings and cognitive…

No, C is not better. C is much worse. C lacks basic primitives that allow programmers to do useful abstractions and let them concentrate on the business logic rather than on the low level details of every functions.

You maybe can write small program easier on C as long as you can fit everything in someone's head. And that's why all complex low level programs are written in C++ and not C. (With the Linux Kernel being an exception, because of its stupborn maintainer)

And what about the drawbacks mentioned on the article? 99% of programmers don't need to care about them. The reasons such article exists is precisely because some people love C++ and like to play with their language.

---

> If C++ is so good why does it need to be constantly updated and extended?

Uh? To adapt and evolve to a changing environment. Instead of stagnating and becoming irrelevant. If it is so great, why is the iPhone constantly release new models? Why do every maintained software release new versions? And that's why you should use C++ instead of C.

Post reply on HN