为什么流行的编程语言如 c、c++、java、python、PHP 不支持后缀逆波兰表示法或前缀表达式?

问题描述

注意:- 我不是在谈论增量和减量运算符。我说的是前缀和后缀表达式。

python 中的示例:-

def calculate(a,b,c,d):
    return a * ( b + c ) / d 

calculate(1,2,3,4)

我知道python不支持前缀或后缀表达式。但是想象一下如果python支持后缀表达式,我可以写这样的函数

def calculate(a,d):
    return a b c + * d /

calculate(1,4)

在这link 中读到评估后缀表达式比中缀表达式更快

  1. 评估一个中缀表达式所需的时间是 O(n^2) -> 原因 - 需要找到具有最高优先级的运算符。
  2. 后缀表达式求值所需的时间为 O(n) -> 原因 - 无需查找运算符的优先级。我们只需要从左到右进行评估。

如果是这样,那么为什么 C、C++、Java、Python、Ruby 或 PHP 等流行的编程语言本身不支持后缀表达式?

解决方法

我在 this link 中读到评估后缀表达式比中缀表达式更快。评估一个中缀表达式所需的时间是 O(n^2) -> 原因 - 需要找到具有最高优先级的运算符。

这个答案是错误的。它声称的关于编译器如何解析表达式的描述是无稽之谈。但是见鬼,即使它是对的,这里的 n 也是微不足道的。典型的表达式有什么,1-5 个运算符?即使对于二次算法,这也是儿戏。

此外,语言并非旨在通过解析器获得微性能提升。它们旨在帮助人类以最大的可读性、简洁性、表现力或每种语言具有的任何其他目标来表达他们的想法。我什至无法想象有人编写的解析器如此之慢以至于加速实际上会很明显。

如果是这样,那么为什么 C、C++、Java、Python、Ruby 或 PHP 等流行的编程语言本身不支持后缀表达式?

人们熟悉中缀表示法。由于性能论点是错误的,流行语言没有令人信服的理由使用前缀或后缀表示法。使用其中任何一种都可以保证语言不会成为主流(对不起,Lisp 粉丝!)。