我知道一个刚接触计算机科学的人(初学者)会提出一些非常好的问题。这是两个。
1)无限循环。为什么故意将无限循环的实现作为传统语言中受控循环的某种解决方法?甚至Perl也只有选项for (;;) {...}
和while (1) {...}
。我想答案是:a)无限循环被认为是“危险的”,b)通过“结构化编程”范式(惯性)发展历史语言,和/或3)程序正确性的证明很困难。但是,在循环中计算出退出条件的“不受控制”循环是一个非常通用且有用的习惯用法。
是否有任何语言作为原始语言具有无限循环?例如。 doforever {...}
或其他关键字/语法(loop
,forever
,infinite
,infinitely
,<<...>>
,?)?
2)此人在设置“最大闩锁”值时遇到了初学者型错误。范例代码是:
if (current > runningMax) {
runningMax = current;
...
}
此人的错误是使用了错误但名称相似的变量而不是第二个current
。但是这里的普遍问题是,由于需要使用两个变量(正确,非典型性的错误),此类错误的风险大大增加了 ed)两次。为什么这不是原始(内置)?还是有一种语言实际上是原始语言?:
if (isnewMaximum(runningMax,current)) {
...
}
将runningMax
作为参考传递。
同样,我可以想像一些“问题”,但我认为它们没有超过上述错误风险。 a)对于最小和相等的大小写,您将需要3个附加函数(>=
,<
,<=
)。 b)副作用是“不好的”。
这也可以由运算符来完成,而不是由功能来完成:
if (runningMax .> current) {...}
if (runningMax .>= current) {...}
if (runningMin .< current) {...}
if (runningMin .<= current) {...}
为什么不呢?还是有?