【问题标题】:Why are "not greater/less" (e.g. "!>" or "!<") operators not used in most programming languages为什么大多数编程语言中不使用“不大于/小于”(例如“!>”或“!<”)运算符
【发布时间】:2019-07-16 17:35:50
【问题描述】:

我知道您可以通过使用 &lt;=!(x &gt; y) 获得相同的行为,但我通常更愿意考虑 不大于 而不是 小于或等于 >,所以拥有像!&gt;!&lt; 这样的东西对我来说实际上非常好,并且可以完美地匹配!= 运算符。

!(x &gt; y) 语法需要更多的字符并且读作:not: x is greater than y,这很不方便,而且与自然语音非常不同。

我从未在任何地方见过!&lt;!&gt; 运算符,但自从我开始编程以来一直想知道为什么它们不受支持。有什么不可以的原因吗?

【问题讨论】:

  • !> 与 = 相同 没有人认为他们需要 x !> y 而不是 !(x > y) 或 x
  • 你不同意这是一个很好的句法糖吗?我希望看到这些运算符得到广泛支持。

标签: syntax comparison operators programming-languages


【解决方案1】:

使用最少数量的逻辑和比较运算符,以及最接近经典数学和逻辑的运算符,可以更轻松地推断条件。

有像 Natural 和 COBOL 这样的编程语言,带有像 NOT LESS THAN 这样的运算符,但是在考虑复杂条件时推理 (a !&lt; b)!(a &lt; b) 困难得多,这相当于(a &gt;= b).

一个例子:

!(!(a < b) && !(a > c))

相当于:

!((a >= b) && (a <= c))

翻译为:

(a < b) || (a > c)

!((a !&lt; b) &amp;&amp; (a !&gt; c)) 没有任何好处?

【讨论】:

  • 该示例没有显示!&lt; 有用的情况。这真的就像!(a &gt; b)(a !&lt; b)(a &gt;= b) 之间的区别一样简单,当然它们都是等价的。我想说的是,当前的操作符比(a !&lt; b) 更不自然。 “a 不小于 b”。这似乎是多余的,但我认为语言应该尽可能符合人体工程学。而且我不理解为同一行为使用多个运算符的缺点。它可以让程序员更好地调整代码结构,更具表现力。
  • 不大于小于或等于更容易阅读是(就像许多“更容易阅读”的主题一样)一种观点,而不是事实。我恰好持有相反的观点。 FWIW,我已经看到(但现在不记得)编程语言的实现,其中“小于或等于”运算符编写为!&gt;,这总是让我觉得这是一个奇怪的选择。我相信 PL/I 有 ¬&gt;(使用 EBCDIC 'not` 字符)以及 &lt;=,但后来 PL/我确实希望拥有所有可能的选项。
  • 当然,这些运算符不应该替换旧的,通常大于或等于在上下文中非常有意义。然而,我经常发现自己在想这样的事情:“如果这个列表中不超过 10 个项目”,然后必须输入“如果这个列表中的项目少于或正好 10 个”或“如果 -not- 此列表中有超过 10 项”...我只是没有看到添加一个显示为“如果此列表中不超过 10 项”的运算符的危害。
猜你喜欢
  • 1970-01-01
  • 2011-03-13
  • 2011-02-20
  • 2020-12-01
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 2011-10-21
相关资源
最近更新 更多