Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Just use parentheses if you're doing many operations on one line? This is common sense in any programming language.

I've been programming in C for years and never had an issue with operator precedence.




There's a lot of exaggeration that goes on with certain fans of postfix systems when they talk about infix systems.

For example: I really like HP calculators, so I'm in several facebook groups for fans of RPN/RPL and HP specifically. Sometimes a few of them go way too far out of their way to try to demonstrate how inferior algebraic systems must be.

For the record, my copy of K&R wants to open into either section 7.6 or appendix B. No idea what this says about me, though.


Indeed, different strokes for different uses. I "grokked" RPN pretty early in my career and use it for all my calculator stuff... only. infix for programming languages is equally comfortable for me. I still have to think and study quite hard the prefix LISP notation. I get it, it's just not internalized like the other 2.


I don't know what it is with C programmers and programming "terseness". It hasn't been the 60s since the 60s, and you have gobs of memory available, your source code can have syntactic sugar for the purpose of readability and the world won't end.


Can you give an example of syntactic sugar in a modern language that makes order of operations a non-issue?


These aren't syntactic sugar, but formatters. I rather like Ormolu for Haskell and elm-format for Elm. I occasionally type a bunch of parenthesis so that I'll for sure have the right order of operations. Then the format on save removes the redundant ones. It's delightful. The typecheckers and tendency to wrap primitives in a semantically significant constructor help with that.


Parentheses


Yeah, that's why I said

> Just use parentheses

Not sure what that has to do with memory usage..?


Just to clarify, I'm not the original person you replied to, and we all agree about using parentheses.

mrguyorama just implied that the only reason you would check the operator precedence chart would be to shave a few bytes off the size of your source code, which has not been a reasonable reason to do anything for many decades, and yet C programmers seem to like to do it anyway.


I agree, but I'm still cracking open that page when I'm reading someone else's code. I guess you work solo most of the time?


Nope, I work on a team. I guess we all have similar instincts about what is readable.


It's not that YOU have any issues with it -- because you're perfect.

https://www.youtube.com/watch?v=fKHaNIEa6kA

It's about the poor people who read your code that relies on both you and them having perfectly memorized every single little detail of operator precedence and associativity, instead of simply and consistently using parenthesis.

Quick without looking: can you tell me what the precedence and associativity of the ternary ?: operator is?

The designer of PHP got it wrong (which isn't surprising given his proudly self proclaimed contempt towards computer science and incompetence at parser writing), but then millions of PHP programmers also learned it the wrong way.

https://en.wikiquote.org/wiki/Rasmus_Lerdorf

Do you really want any of those people who were corrupted by PHP messing around with your code, if you relied on it being one way, and they assume it works the other way?

It's not that you can't tell what it actually does, it's that you can't tell what the person who wrote it actually meant, which is more important than what it actually does, especially when it has bugs.

Don't do many operations on one line, AND do use parenthesis, AND do use indentation, with no exceptions except for very simple expressions. Take every opportunity to use line breaks and vertical alignment to make symmetry and repetition and nesting visually obvious, like:

  float distance =
    sqrt(
      (x * x) +
      (y * y))
Redundant parens, plus breaking expressions into multiple lines and indenting according to depth, unambiguously express programmer INTENT, so the reader doesn't need to wonder if the person who wrote it had a clue or was just showboating.

Just use parenthesis, and put a comment on it, sailor.

https://wellcomecollection.org/works/m33njwx3/items

My copy of The Little Schemer won't open to page 13 because of the jelly stains.

https://vpb.smallyu.net/[Type]%20books/The%20Little%20Scheme...


What is with the gay sailor condom ad? You're being completely ridiculous.

I'm glad you enjoy Forth so much, I guess. I'm sure postfix will catch on any day now.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: