Я использую J в течение нескольких месяцев, и я обнаружил, что чтение незнакомого кода (например, что я не написал сам) является одним из самых сложных аспектов языка, в частности когда он молчалив. Через некоторое время, я пришел с этой стратегией:Лучшие стратегии для чтения кода J
1) Скопируйте фрагмент кода в текстовый документ
2) Возьмите каждый оператор из (1) и поместить его на отдельной строке, так что он читает вертикально
3) Заменить каждый оператор с его словесным описанием на странице словарного
4) есть ли грубый перевод с синтаксиса J в английской грамматику
5) Используйте перевод, чтобы определить, концептуально связанные компоненты и разделив их разрывы строк
6) Написать описание того, что каждый компонент из (5), как предполагается сделать в обычном английской прозе
7) Напишите описание того, что вся программа должна делать, основанный на (6)
8) Напишите объяснение, почему код из (1) можно назвать представляющим концепцию дизайна из (7).
Хотя я многому учусь из этого процесса, я считаю его довольно трудоемким и трудоемким - особенно если кто-то разработал свою программу, используя концепцию, с которой я никогда не сталкивался. Поэтому я задаюсь вопросом: есть ли у других людей в сообществе J любимые способы выяснить скрытый код? Если да, то каковы преимущества и недостатки этих методов?
EDIT:
Пример подобного кода мне нужно будет разрушаться следующий:
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-разговорнике для практики или пытаюсь понять о том, что думал о нем, Роджер Хуэй, когда писал свои решения Project Euler. – estanford