我已经使用J了几个月了,我发现阅读不熟悉的代码(例如,我没有写自己)是该语言最具挑战性的方面之一,特别是当它默默无闻。过了一会儿,我想出了这个策略:阅读J代码的最佳策略
1)代码段复制到word文档
2)取从(1)每个操作员,并将其放置在单独的行,以便读取垂直
3)更换各运营商,在词汇页面
4)不要自J语法粗略翻译成英语语法
5)它的文字描述使用翻译,以确定概念相关的组件和与换行
6)收件的什么从(5)假定每个组件做一个描述它们分开,用简单的英语散文
7)收件的什么整个程序是应该做的说明,基于(6)
8)写一个解释为什么从(1)的代码可以说代表从(7)的设计概念。
尽管我从这个过程中学到了很多东西,但我觉得它很费时费力 - 尤其是如果有人使用我以前从未遇到过的概念设计他们的程序。所以我想知道:J社区中的其他人有最喜欢的方式来找出隐藏的代码?如果是这样,这些方法的优点和缺点是什么?
编辑:
排序的代码,我需要打破的一个例子是:
binconv =: +/@ ((|[email protected](2^[email protected]#@])) * ]) @ ((3&#.)^:_1)
我写了这一个我自己,所以我碰巧知道,它需要一个数值输入,将其重新解释为三元数组,并将结果解释为基数为2的数字的表示,并且至多有一次重复。 (例如,binconv 5 =(3^1)+ 2 *(3^0) - > 1 2 - >(2^1)+ 2 *(2^0)= 4。)但是如果我没有偶然发现它任何以前的历史或文档,搞清楚这是它的一个非平凡的练习。
有趣。我以前从来没有明确地将事情按照词类分解 - 通常我的思维停留在结构与物质操作者的层面上,至少在我解释J练习中的默示动词时,或者试图罗杰辉在撰写他的欧拉项目解决方案时想到了什么。 – estanford 2010-05-05 22:43:42