费尔南多·科巴托(Fernando J.Corbató)的“受限语言”


13

Fernando J.Corbató 在1990年的图灵奖演讲中列出了复杂系统不可避免地会失败的原因。在他的结论中,他提出了一些减少故障可能性的建议。他列举了一个想法如下:

[U]使用约束语言进行设计或综合是一种强大的方法。通过不允许程序员或设计师表达不相关的想法,可能出现的错误的范围变得更加有限。

他所说的“受限语言”是什么意思?

一会儿我考虑了约束编程。但是,约束编程是关于限制程序的解决方案空间。它是赋予程序员权力的工具。Corbató所指的功能似乎实际上限制了程序员,或者至少使她更倾向于编写简短代码。

我的第二个想法是他指的是保守的编程语言。Corbató因在1960年代和1970年代所做的工作而获得了图灵奖。据我了解,他处理了很多打孔卡。我从未见过打孔卡,所以我当然不知道如何编程,但是我可能会猜到打孔卡编程非常自由。我怀疑类型检查,静态分析等概念根本不存在。因此,Corbató可能是指限制开发人员犯下愚蠢错误的语言概念吗?似乎也不是这样。安全检查和数据建模与简洁性无关,当他提到“不允许...无关紧要的想法”时,这似乎就是他所谈论的话题。


@jweyrich谢谢您将我转发给Programmers.SE。但是,当我转到StackOverflow上的编程语言标签时,我发现了很多与我一样普遍的问题,例如“是否存在静态弱类型化的语言?”。作者还参考了一般阅读材料
Xander Dunn

5
@thoughtadvances检查您提到的问题的日期,我敢打赌它们中的大多数已经很老了。SO已有4岁了,情况发生了变化,总的来说,随着时间的流逝,我们变得越来越严格。您的问题在Programmers上很好(我在那儿是个mod),但是如果您刚刚标记了此标签以便进行审核,并要求将其迁移而不是重新发布,则会更容易。迁移将有可能挽救你重新发布的麻烦它会与问题一起带来了答案程序员。现在不用担心,我会解决的。
yannis 2013年

3
例如,如果(注意:if)出于某种原因,malloc的想法与特定应用程序“无关”,那么在C(malloc存在)上选择Java(“没有malloc约束”)将限制“可能出现错误的域” “可能使用malloc相关
蚊蚋

@YannisRizos非常感谢您迁移它。我不知道该功能存在。也许StackOverflow上经验丰富的用户可能已经建议了此路径,而不仅仅是关闭它。
Xander Dunn 2013年

3
在打孔卡上编码 ”只是键入程序的另一种方法。在1960年代末和1970年代初,我们所拥有的语言与我们今天使用的语言一样先进。编程语言的许多核心概念已经很好地确立了,到1963
Ross Patterson 2013年

Answers:


8

“受限编程语言”只是一种不提供(简便)方法来执行与语言目的无关的操作的语言。

请注意,这是“无关的”,而不是“愚蠢的”,“愚蠢的”或“不正确的”。

一个很好的例子就是ISO / ANSI SQL(在SQL-92之前),它在查询语言中无法表达许多过程类型的编程工件,例如递归或循环。(尽管现在有了它们,而且供应商以前还是为它们添加了自定义扩展)。


6
这正是Corbató的观点。他在1969年的Datamation文章“ PL / I作为系统编程工具”中做了很多详细介绍(副标题为“ 五年的临时编译器!”)。
罗斯·帕特森

谢谢,这个答案非常有帮助。这个想法具有有趣的含义。这似乎表明,程序员将希望能够访问具有各种功能的多种语言,而不是一种语言来统治所有语言,这就是许多程序员想像的C,C ++或Java。
Xander Dunn 2013年

@RossPatterson太好了!谢谢!我一直在寻找Corbató上有关该主题的详细说明,但没有发现太多。
Xander Dunn

1
该Datamation文章的一个很好的摘要引述:“ 我们在做系统时的目标...一直是探索前沿领域,并了解如何有效地组合一个达到并满足所设定目标的系统。我们正在努力寻找找出关键的设计思想,并与其他人交流,无论他们熟悉什么系统,因此,一定要使用一种超越硬件特定细节的语言,换句话说,它迫使人们进行设计,而不是摆弄代码。事实证明这是它的优点之一
Ross Patterson

2
@thoughtadvances“ 这似乎表明程序员希望访问具有多种功能的多种语言,而不是一种语言来统治所有语言 ”,这是初级和高级程序员之间的区别之一。没有木匠只有一把锤子:-)
罗斯·帕特森


0

首先,您需要了解演讲时(1990年)的计算时代。同样,要意识到他正在与学术界人士交流,而MIT是他的基地。

在那个时代,用于编写语言(元语言)的语言是一个热门话题。元对象协议的艺术才刚刚问世,并且正在激发新语言的设计。但是,所有这些奢侈品都是要付出代价的:复杂性。

为了帮助降低系统的复杂性并允许检查这些系统,出现了诸如Z之类的元语言以制定可测试的规范。我猜他是指这类语言。


2
Corbató不仅是20世纪晚期的MIT学者。他是我们领域的开拓者之一。他在CTSS方面的工作开创性,直接导致了Multics,Unix,CP / 67,以及当今的Linux和z / VM系统。问题的陈述与他在“元对象协议的艺术”和他的图灵演讲之前公开阐述的一项原则有关。
罗斯·帕特森

0

他可能是指一种语言,它掌握的概念数量很少。查看此处的图表其中显示了Coffescript,Ruby和C ++中概念的图形表示。可能是Tuner,这意味着您所用语言中的概念越少,表达无关紧要的想法的机会就越少。


“ ...还是一种语言”-这是对某事的评论吗?
蚊蚋

编辑了帖子,以免看起来像评论。
Manoj R
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.