Problem Of Symbology

Symbology: "The art of expression by symbols"


Yes, there is no "one right way" to express something, so we (try to) pick one that is aesthetically pleasing.

Start with notation.

Polish notation and RPN are mirror images of each other.

The symbols "(", ")", "+", "*", "12", " ", "6", "5" tell us what to do in what order.

Only because the order is ambiguous in algebraic notation.

Then there's (a + b) * c or +*abc (no spaces needed)

Then +*vectorAvectorBspeed

All the detail necessary, not a wasted symbol.

But it doesn't look good to me - it's not esthetic, not .. artistic.

I prefer (VectorA + VectorB) * Speed

Are you sure that isn't because you learned algebraic notation in high school? If you'd learned polish notation from the start, I bet it would look more artistic to you. Talk to some long time Lispers and old HP calculator users.

[In the first example, of "(12 + 6) * 5", I prefer "12 <enter> 6 + 5 *". I learned algebraic notation in high school, am a long-time Smalltalker, and always preferred HP calculators (from my very first HP-35 in 1972).]

I agree that a notation one is not familiar with will seem "weird", no matter how superior it is to the one you are familiar with. -- DavidCary

ForthLanguage, PostScript, HewlettPackard calculators, 8087 assembly, etc., all use ReversePolishNotation (RPN), named in honor of the brilliant Polish philosopher and mathematician Jan Lucasiewicz (ObscureGreatFoobars).

Lisp uses prefix PolishNotation, with the operator preceding the operands, e.g. (* 3 (+ 4 7)).

Inside a compiler, an algebraic expression is often represented in a tree structure. Printing that tree with suffix traversal gives you PostfixNotation (RPN). Printing that tree with prefix traversal gives you PolishNotation. Printing that tree with infix traversal gives you traditional arithmetic notation.

See and many other ComputerScience classes.


View edit of July 22, 2014 or FindPage with title or text search