Live data from Hacker News

Stroustrup's Rule (2024)

buttondown.com

21–30 of 37 posts

Re: Stroustrup's Rule (2024)

#21
I dislike terse notations even as an experienced engineer.

Writing few characters more has never been an issue, at best it's annoying.

I can understand the counter argument and it's benefits but in my experience one never discussed aspect is that terse notations are cool in isolation, yet quickly compound to hard to reason soups.

Take JavaScript: ternaries are cool, yet quickly become hard to understand when nested. Null coalescing operator (??) is cool in isolation, yet becomes hard to reason as soon as compounded with more operators.

Haskell combinators and arrows are the same.. Cool when taken alone, balloon energy needed to understand the code when you start compounding.

Re: Stroustrup's Rule (2024)

#22

>At the beginning of a language's life, everybody's a beginner. Over time the ratio of experts to beginners changes, and this leads to more focus on "expert-friendly" features, like terser syntax. Hence why so many shell classics are so short. You don't type R-I-P-G-R-E-P, you type R-G and get on with it, which itself probably evolved from something like the author's own `alias eg="grep -r"` pattern back in the day (…

> probably evolved from something like the author's own `alias eg="grep -r"` pattern

this is from the official faq:

> When I first started writing ripgrep, I called it rep, intending it to be a shorter variant of grep. Soon after, I renamed it to xrep since rep wasn't obvious enough of a name for my taste. And also because adding x to anything always makes it better, right?

> Before ripgrep's first public release, I decided that I didn't like xrep. I thought it was slightly awkward to type, and despite my previous praise of the letter x, I kind of thought it was pretty lame. Being someone who really likes Rust, I wanted to call it "rustgrep" or maybe "rgrep" for short. But I thought that was just as lame, and maybe a little too in-your-face. But I wanted to continue using r so I could at least pretend Rust had something to do with it.

Re: Stroustrup's Rule (2024)

#23

The discussion for the (linked by Hillel) defunct web page when it was submitted a decade ago here: https://news.ycombinator.com/item?id=13192052 - 16 December 2016, 73 comments

And here's an archive for that defunct web page https://web.archive.org/web/20210118175621if_/https://www.th...

Re: Stroustrup's Rule (2024)

#24
post #12

> as they become experts, they prefer terse syntax. In my experience, the man-hours of expertise may be less than you'd think: I've probably spent more hours (or at least subjective frustration ) being the beginner in different things than I have spent hours being able to enjoy expertise after earning it in a language/framework/convention/tool. Sometimes it's even the same subject, years later. I propose that caterin…

This is why I think the "AI agents are useless for seniors" framing is misleading. Unless you're doing something very niche and specific, you will constantly encounter new libraries, new domains, new protocols, new things you're not that familiar with. Very few people are an expert in CORS, Postgresql query optimization, advanced Typescript generics, setting up Blue-green deployments on Kubernetes, and modeling the d…

I think it's more like "LLMs agents are especially dangerous for beginners in $X."

Those are the users who won't have (as much) necessary knowledge, unused mental-bandwidth, or "instinctive taste" to recognize things that need validation and then fact-check them.

Re: Stroustrup's Rule (2024)

#25
post #5

But that's not a rule, it should be Stroustrop's Observation: For new features, people insist on LOUD explicit syntax. For established features, people want terse notation.

A rule can be prescriptive (thou shalt...) or descriptive (it's always true that...). The Golden Rule is the first. This is the second. Nobody follows Hyrum's Law (also the second), they suffer from it inevitably applying to them.

And muddling these two goes poorly

Language "pedants" such as "grammar nazis" confuse their prescriptions for how they believe a language should be used for descriptions of how it is used and then get angry because they're wrong.

But equally confusing descriptions of Mother Nature's laws for a prescriptive rule you could defy won't end well. No matter how many TikTok viewers you have, or how fervent their belief in your ability to fly, no matter how many US Supreme Court Justices have insisted that the US constitution says you can fly, when you jump off the roof Gravity doesn't give a shit and you're going down.

Re: Stroustrup's Rule (2024)

#27
I feel this is on of those examples of where humanities and the softer sciences can teach us things. This is exactly how 'normal' languages work. New things are introduced and people (particularly older people) hate them. Over time common words (or even sounds) become shorter, in some cases disappearing entirely when they are 'understood from context'.

Re: Stroustrup's Rule (2024)

#28
Even though the premise sounds true (kind of, sort of), everything about the post makes me question it. And it's not just that Stroustrup is among the last men I'd trust about syntax design, every example in the post just feels wrong.

Python walrus operator wasn't opposed by "teachers and beginners", because it's "harder to learn". Quite the opposite, it was opposed by purist old-timers, because for 20 years the absence of stuff like that was considered a feature and "the Python way". I don't think I pass as a beginner, but while I personally am not opposed to that operator, I totally get what's their problem with it. I think, that := is explicit enough, but addition-assignment was a native feature of most C-like languages which usage was actively discouraged by most teams, at least unless it really makes the concrete situation much more readable. Which the example in the post hardly does.

Rust ? operator isn't some example of terse Perl-like syntax, it's very intuitive and by no way it's any harder to grasp for a beginner, than the explicit match. In fact, it's probably the opposite, since it really matches the surface behavior. It only appeared after the explicit syntax, because it's really just syntactic sugar in Rust's case, and the language primitives are Ok/Err and pattern matching, not the "?" operator.

And I don't even know TLA+, but I could guess what "Good" example does, because it's basically plain English / standard math notation. The explicit "procedural" version is much less clear (mostly, because of the unfamiliar syntax).

Re: Stroustrup's Rule (2024)

#29
post #2

There's a missing dimension: orthogonality. Having terse notation that implements a feature that you can reason about in isolation is fine for both beginners and experts. But features that have complex interactions with their environment are hard to reason about regardless of the syntax (though bad syntactic choices can certainly make it worse). You can introduce a notation that's terse without problem, so long as it…

This operator exists as a macro in rust as dbg[1]. I know this wasn't the point of your comment; I just thought it was a funny coincidence.

[1] https://doc.rust-lang.org/std/macro.dbg.html

Post reply on HN