Is there a formalised high-level notation for Pseudocode?
我希望能够更好地推理纸上代码,而不仅仅是写盒子或伪代码。
这里的关键是纸张。在机器上,我很可能会非常快速地在linter / compiler中使用高级语言,而键盘在某种程度上限制了可以完成的工作。
案例研究是APL,我们半开玩笑地将其描述为"只写"语言。这是一个例子:
m ← +/3+?4
(说明:?4创建一个数组,[1,2,3,4],然后将3加到每个组件中,然后将它们加在一起并将结果存储在变量m中。)
看起来那是多么的简洁!想象一下在日常工作中必须键入这些符号!但是,在白板上书写iota和箭头很好,可以节省时间和墨水。
这是等效的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似乎是最好的答案,特别是如果您正在寻找符号而不是单词的话)
-
哦! 发现的很好,将更新示例,谢谢
-
@svick youre不是唯一给我这个建议的人...
-
哦,顺便说一句,我只是发现了一种进一步缩短APL代码的方法:m←+3+?4。 不需要任何附加条件,因为APL将从右到左进行处理;-)
别太刻薄,但是您可以使用APL。 毕竟,它最初是作为一种数学符号发明的,后来才变成一种编程语言。 我似乎记得在Backus的Turing Award演讲中有类似的话题。 最后,也许Z Notation是您想要的:https://en.m.wikipedia.org/wiki/Z_notation
-
我认为使用APL或Z的问题在于,它不是用于推理Web应用程序的正确领域。
-
嗯,对不起,但是我没有看到问题。 无论是输出到控制台,Windows窗体还是HTML,都不应在伪代码级别上产生这种不同。 Arent算法和数据流等主要关注的是什么?
-
顺便说一句,您当然也可以开发具有大多数/所有APL风格的Web应用程序-我知道并且最喜欢的一个是miserver.dyalog.com-Dyalog APL是免费供个人使用:)