结构化编程语言通常具有一些控制结构,例如while
, if
, for
, do
, switch
, break
, 和continue
用于在源代码中表达高级结构。
然而,多年来提出的许多其他控制结构尚未进入现代编程语言。例如,在 Knuth 的论文“使用 Go To 语句进行结构化编程”,第 275 页中,他引用了一个看起来像异常处理的精简版本的控制结构:
loop until event1 or event2 or ... eventN
/* ... */
leave with event1;
/* ... */
repeat;
then event1 -> /* ... code if event1 occurred ... */
event2 -> /* ... code if event2 occurred ... */
/* ... */
eventN -> /* ... code if eventN occurred ... */
fi;
这似乎是一个有用的结构,但我还没有看到任何语言实际上将它实现为标准异常处理的特例。
类似地,Edsger Dijkstra 经常使用一种控制结构,在这种结构中,根据一组可能为真的条件,非确定性地执行多段代码中的一段。您可以在他关于 smoothsort 的论文的第 10 页上看到这一点。示例代码可能如下所示:
do
/* Either of these may be chosen if x == 5 */
if x <= 5 then y = 5;
if x >= 5 then y = 137;
od;
我知道历史上 C 影响了许多现代语言,如 C++、C# 和 Java,我们今天使用的许多控制结构都是基于 C 提供的小集合。然而,正如另一个 SO 问题所证明的那样,我们程序员喜欢思考关于我们希望拥有但许多编程语言不支持的替代控制结构。
我的问题是——今天使用的通用语言是否支持与我上面提到的 C 风格控制结构完全不同的控制结构? 这样的控制结构不必是无法使用标准 C 结构表示的东西——几乎任何东西都可以这样编码——但理想情况下,我想要一个可以让你处理某些编程任务的例子与 C 模型所允许的完全不同的方式。
不,“函数式编程”并不是真正的控制结构。