1)将代码片段复制到Word文档中。
2)从(1)中取出每个运算符并将其放在单独的一行上,以便垂直阅读。
3)将每个运算符替换为词汇页中的口语描述。
4)从J语法粗略地翻译成英语语法。
5)使用翻译来识别概念相关的组件,并用换行符将它们分开。
6)用简明易懂的英语散文写下(5)中每个组件应该做什么的描述。
7)根据(6)编写整个程序应该做什么的描述。
8)解释为什么可以说(1)中的代码代表(7)中的设计概念。
虽然我从这个过程中学到了很多东西,但我觉得它相当费时费力 - 特别是如果有人使用我从未遇到过的概念来设计他们的程序。所以我想知道:J社区中的其他人是否有喜欢解析晦涩代码的方法?如果有,这些方法的优缺点是什么?
编辑:
以下是需要分解的代码示例:
binconv =: +/@ ((|.@(2^i.@#@])) * ]) @ ((3&#.)^:_1)
我自己写了这个程序,所以我知道它需要一个数字输入,将其重新解释为三进制数组,并将结果解释为最多有一个重复的二进制数的表示形式。(例如,binconv 5 = (3^1)+2*(3^0) -> 1 2 -> (2^1)+2*(2^0) = 4。)但是如果没有任何先前的历史记录或文档,发现它的功能将是一个不容易的练习。
9!:3
。 - Micha Wiedenmann