【发布时间】: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