Ho usato J da alcuni mesi e trovo che leggere un codice non familiare (ad esempio che non ho scritto io stesso) sia uno degli aspetti più impegnativi della lingua, in particolare quando è in tacita. Dopo un po ', mi si avvicinò con questa strategia:Le migliori strategie per leggere il codice J
1) Copiare il segmento di codice in un documento Word
2) Prendere ogni operatore da (1) e posizionarlo su una riga separata, in modo che legga verticalmente
3) Sostituire ogni operatore con la sua descrizione verbale nella pagina di vocabolario
4) fare una traduzione approssimativa dalla sintassi J in inglese grammatica
5) Utilizzare la traduzione per identificare i componenti concettualmente correlati e separarli con interruzioni di riga
6) Scrivere una descrizione di ciò che ogni componente da (5) che deve fare, in pianura prosa inglese
7) una descrizione di ciò che si suppone l'intero programma di fare, basato su (6)
8) Scrivi una spiegazione del perché il codice da (1) può essere detto per rappresentare il concetto di progetto da (7).
Anche se imparo molto da questo processo, trovo che sia piuttosto arduo e dispendioso in termini di tempo, soprattutto se qualcuno ha progettato il proprio programma utilizzando un concetto che non ho mai incontrato prima. Quindi mi chiedo: le altre persone nella comunità J hanno i modi preferiti per capire il codice oscuro? Se sì, quali sono i vantaggi e gli svantaggi di questi metodi?
EDIT:
Un esempio del sorta di codice che avrei avuto bisogno di abbattere è la seguente:
binconv =: +/@ ((|[email protected](2^[email protected]#@])) * ]) @ ((3&#.)^:_1)
ho scritto questo uno io, così mi capita di sapere che ci vuole un numerica input, reinterpreta come array ternario e interpreta il risultato come la rappresentazione di un numero in base-2 con al massimo una duplicazione. (ad esempio, binconv 5 = (3^1) + 2 * (3^0) -> 1 2 -> (2^1) + 2 * (2^0) = 4) Ma se mi fossi imbattuto in esso senza qualsiasi storia precedente o documentazione, capire che questo è quello che fa sarebbe un esercizio non banale.
Interessante. Non ho mai rotto le cose in modo esplicito in termini di parti di discorso prima - in genere il mio pensiero rimane al livello di struttura rispetto agli operatori di sostanze, almeno quando sto decodificando i verbi taciti nel frasario J per esercitarsi o cercando di capire cosa diavolo stava pensando Roger Hui quando ha scritto le sue soluzioni Project Euler. – estanford