【问题标题】:Is there a formalised high-level notation for Pseudocode?伪代码是否有正式的高级表示法?
【发布时间】:2016-11-22 18:44:28
【问题描述】:

我希望能够更好地推理纸上的代码,而不是仅仅写盒子或伪代码。

这里的关键是纸张。在机器上,我很可能可以非常快速地使用带有 linter/编译器的高级语言,而键盘在某种程度上限制了可以做的事情。

案例研究是 APL,一种我们半开玩笑地描述为“只写”的语言。这是example

m ← +/3+⍳4

(解释:⍳4创建一个数组[1,2,3,4],然后将3添加到每个分量中,然后将它们相加并将结果存储在变量m中。)

看看这多么简洁!想象一下在您的日常工作中必须输入这些符号!但是,在白板上写一点点和箭头很好,可以节省时间和墨水。

这是它的 haskell 等价物:

m = foldl (+) 0 (map (+3) [1..4])

还有 Python:

reduce(add, map(lambda x: x+3, range(4)))

但是这些简洁的编程语言背后的原理是不同的:它们使用单​​词和标点符号来描述高级操作(例如fold),而我想为这些常见的操作编写符号。

这种形式化的伪代码存在吗?

【问题讨论】:

  • 提前谢谢各位!
  • 如果您可以自己使用它,那么发明您自己的符号,它完全适合您的领域和您的思维方式,而不是学习由您发明的符号不是更容易吗?别人?
  • 只是好奇(我只知道 APL):Python 和 Haskell-Samples 真的等效吗?该代码中的3 在哪里? (顺便说一句,我完全同意 Evans 的观点:APL 似乎是最好的答案,特别是如果您正在寻找符号而不是文字)
  • 哦!很好发现,将更新示例,谢谢
  • 哦,顺便说一句,我只是发现了一种进一步缩短 APL 代码的方法:m←+/3+⍳4。不需要括号,因为 APL 无论如何都会从右到左处理 ;-)

标签: pseudocode language-design apl


【解决方案1】:

不要刻薄,但您可以使用 APL。毕竟,在变成编程语言之前,它最初是作为一种数学符号发明的。我似乎记得在巴库斯的图灵奖演讲中,我认为你在谈论的内容类似。最后,也许 Z Notation 就是你想要的:https://en.m.wikipedia.org/wiki/Z_notation

【讨论】:

  • 我认为使用 APL 或 Z 的问题在于它不是用于推理 webapp 的正确域。
  • 嗯,抱歉,我没发现问题。无论您是输出到控制台、Windows 窗体还是 HTML,都不应在伪代码级别上产生如此大的差异。算法和数据流等不是主要关注点吗?
  • 顺便说一句,您当然也可以使用大多数/所有 APL 风格开发 Web 应用程序 - 我知道并且最喜欢的是 miserver.dyalog.com - Dyalog APL 可供个人免费使用:)跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 2012-10-06
  • 2016-07-08
  • 1970-01-01
相关资源
最近更新 更多