Я знаю, как каждый из них может быть преобразован друг в друга, но никогда не понимал, что такое их приложения. Обычная операция инфикса вполне читаема, но где она терпит неудачу, что привело к созданию префиксной и постфиксной нотации
Зачем нам нужен префикс, постфиксная нотация
Ответ 1
Инфиксная нотация легко читается для людей, в то время как пред-/постфиксная нотация легче анализировать для машины. Большим преимуществом в пред-/постфиксной нотации является то, что никогда не возникает вопросов, таких как приоритет оператора.
Например, рассмотрим выражение infix 1 # 2 $ 3
. Теперь мы не знаем, что означают эти операторы, поэтому возможны два возможных постфиксных выражения: 1 2 # 3 $
и 1 2 3 $ #
. Не зная правил, регулирующих использование этих операторов, выражение infix практически бесполезно.
Или, говоря проще: можно восстановить исходное (синтаксическое) дерево из пред-/постфиксного выражения без каких-либо дополнительных знаний, но то же самое не верно для инфиксных выражений.
Ответ 2
По крайней мере, для обозначения префикса: Преимущество использования префиксного оператора заключается в том, что синтаксически он читается так, как будто оператор является вызовом функции
Ответ 3
Постфиксная нотация, также известная как RPN, очень проста в обработке слева направо. Операнд помещается в стек; оператор выталкивает свой операнд из стека и выталкивает результат. Мало или вообще не требуется синтаксический анализ. Он используется Forth и некоторыми калькуляторами (калькуляторы HP отмечены для использования RPN).
Префиксная нотация почти легко обрабатывается; он используется в Lisp.
Ответ 4
Другой аспект префикса /postfix vs. infix состоит в том, что арность оператора (сколько аргументов, к которому он применяется) больше не должна ограничиваться точно двумя. Это может быть больше или иногда меньше (0 или 1 когда значения по умолчанию подразумеваются естественным образом, например, ноль для сложения/вычитания, один для умножения/деления).