【问题标题】:Who invented the switch statement? [closed]谁发明了 switch 语句? [关闭]
【发布时间】:2016-07-23 12:31:37
【问题描述】:

Switch 语句现在以所有主要语言(Javascript、Java、PHP、C#、C++、C)出现,但该语句第一次出现在什么语言中?

【问题讨论】:

标签: history


【解决方案1】:

Lisp 有 condWikipedia's source 位于 1956-1958 时间范围内。

我在 FORTRAN 中为麻省理工学院的 IBM 704 编写的一组国际象棋合法移动例程中发明了条件表达式。在 1957-58 年间...一篇定义条件表达式并提议在 Algol 中使用的论文被发送到 ACM 通讯部,但由于篇幅很短,被任意降级为致编辑的一封信。

-- John McCarthy: Lisp Prehistory - Summer 1956 through Summer 1958

【讨论】:

  • 对,忘了 Lisp 分支!早于 BCPL 和 ALGOL(虽然晚于 FORTRAN 的 not-quite-yet-switch)。 +1
  • 认为这篇文章会在 CACM 第 2 卷第 8 期(1959 年)中,但他们的在线存档似乎不包括给编辑的信。如果任何有权访问旧版本的人都可以验证这一点,或者理想情况下,提供指向原始版本的链接,那就太好了。
  • 维基百科的文字声称这个事件是cond 被发明的时候,但粗略阅读 Lisp Prehistory 文章似乎并不能证实或反驳这一说法。维基百科暗示了“更一般的 cond 结构”,而不仅仅是 if - then - else 所以这就是我这个答案的基础。
【解决方案2】:

无法真正回答,因为它是一个概念的演变。 C(您列表中最古老的)是从 B(也有 switch)演变而来的,它是从 BCPL(有 switchon 语句)演变而来的。 BCPL 来自 CPL,而 (AFAIK) 没有。在 Pascal-vs-C 峡谷的另一边,ALGOL(在 ALGOL68 中有 case 语句)从 FORTRAN(在计算的 GO TO 语句中有一个基本的前身)演变而来。计算出的GO TO 非常底层,很容易在汇编中实现。

【讨论】:

  • 我问的是所有流行语言都使用的语法。我也相信是 B。
【解决方案3】:

在您所指的语言中,C 可能是第一个。然而,如果你仔细观察,这个概念来自更基本的语言,就像汇编级语言一样,

【讨论】:

    猜你喜欢
    • 2014-11-25
    • 1970-01-01
    • 2021-04-11
    • 2011-05-23
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多