这段代码片段的编程语言是什么?

时间:2013-07-26 00:15:31

标签: language-agnostic programming-languages

我对这个编程挑战感到困惑 - 我不知道它是什么语言(这是乐趣的一部分,但我需要一些帮助)。 我不是在寻找挑战的答案,即在代码中找到一个错误,所以不要为我破坏它。我只需要找到它所使用的优秀语言。代码挑战预先假定代码中只有一行存在错误,因此我们必须接受多行中的所有内容。

我试图弄明白这一点。我看过rosettacode,我在那里找不到任何东西。它最接近的是Algol 60,但并不严格按照那里定义的Algol 60。有各种各样的问题。例如,评论以%开头,就像在Erlang中一样。 Algol 60中没有define,也没有奇怪的<unsigned number> #语法。 Algol 60还使用了标识符的转义语法(它们有一个单独的命名空间,通常以粗体显示) - 这两者都无处可见。

看看我熟悉的不太受欢迎的东西,它不在IEC 61131-3中,也不是HAL / S.

begin

  % Speed of light in meters/second
  define c=2.99792458e8#;

  % Convert frequency in Hz to free-space wavelength in meters.
  real procedure wavelength(frequency);
    value frequency;
    real frequency;
    wavelength := c/frequency;

  real f, lambda;

  lambda := wavelength(f);
end.

3 个答案:

答案 0 :(得分:1)

我很幸运能够与两台使用Algol 60的机器一起工作。 首先,具有多个Algol 60编译器的English Electric KDF9非常符合修订的Algol 60报告中描述的语言。 然后我搬到了Burroughs Machines,该机器最终变成了Unisys。 因此,DEFINE语句是Unisys Extended Algol用于文本替换的功能。请参阅《 ALGOL编程参考手册1》的第3-90页。 我认为必须知道,在这种Algol风格中,具有指数部分的数字常数需要在此之前加上@而不是E作为前缀,这是不公平的!参见1的第2-6页。

答案 1 :(得分:0)

Circuit Cellar Code Challenge的第8周现已结束。挑战的作者搞砸了,我会和他们一起讨论,BTW。

正如我所说,语言 Algol 60 。没有“只是”Algol这样的东西,Algol 68是一个完全不同的野兽!错误是“指数”,据说正确的是define c=2.99792458@8

唉,那个星期的挑战是虚假的,因为他们已经选择了一些模糊的Algol 60,而不是标准的,所以我对他们很生气。在代码挑战中如此模糊是没有意义的,因为代码挑战应该由作者以外的其他人解决。我的意思是,如果在stackoverflow曝光的网站上没有人会指向任何代码片段中Algol 60的模糊变体,那么他们是否真的认为会有任何答案?

哎呀,对于大多数人来说, Algol 60并不是很明显,尽管Algol 60在计算史上有点像是一件大事。 Backus-Naur表格直接来自Revised Report on the Algorithmic Language Algol 60

在寻找答案时,我从20世纪60年代中期开始对英国电气KDF9仿真运行Whetstone Algol。似乎挑战代码没有使用该特定变体,即使我在首次将其转换为标准Algol 60表单后进行编译(没有定义,没有评论,特殊处理关键字)。

答案 2 :(得分:-4)

错误是

  

f是一个自由变量。

这让我相信它真的是一种虚构的语言,只是为了抽象地测试你,因为可以在不知道任何语法细节的情况下检测到这个错误。你已经分析了它可能是什么的主要候选人,它并不是真的像什么。如果重点不在于这是一个用语言提高技能的难题,而是为了测试你的通用编程技巧,那么这又有意义。

我解决问题的秘诀就是尝试将其翻译成真正的编程语言。您将无法消除一个错误。

我的第二个暗示是:

  

lambda抽象的目的是什么?