我希望能够在纸上推理代码而不仅仅是写盒子或伪代码。
这里的关键是纸张。在一台机器上,我很可能非常快速地使用带有linter /编译器的高级语言,并且键盘限制了可以做的事情。
案例研究是APL,我们半开玩笑地描述为"只写"的语言。这是一个example:
m ← +/3+⍳4
(解释:⍳4
创建一个数组[1,2,3,4]
,然后将3添加到每个组件,然后将它们相加在一起,结果存储在变量m中。)
看看它是多么简洁!想象一下,你必须在日常工作中输入这些符号!但是,在白板上写iota和箭头很好,可以节省时间和墨水。
这是它的等效物:
m = foldl (+) 0 (map (+3) [1..4])
和Python:
reduce(add, map(lambda x: x+3, range(4)))
但这些简洁编程语言背后的原理是不同的:它们使用单词和标点符号来描述高级操作(例如fold
),而我想为这些常见操作编写符号。
这样的形式化伪代码是否存在?
答案 0 :(得分:2)
不要太苛刻,但你可以使用APL。毕竟它最初是作为数学符号发明的,然后才变成编程语言。我似乎记得在Backus'中有类似于我认为你在谈论的东西。图灵奖演讲。最后,也许Z符号是你想要的:https://en.m.wikipedia.org/wiki/Z_notation