1. |
Мнемоническое одно- или двух- буквенное обозначение примитивов.
|
2. |
Отсутствие приоритета операций.
|
3. |
Систематическое использование двойственности функций, которые,
как знак "минус" в арифметике, могут означать одну функцию,
когда вызваны с двумя аргументами (вычитание в
случае -), и другую, когда вызваны с
одним (перемена знака в случае -).
|
4. |
Использование понятий из грамматики естественного языка,
более подходящих для описания грамматики J, чем термины,
используемые обычно в математике и других языках программирования.
Тоесть функция (такая как сложение) называется также
глаголом (поскольку она производит действие),
а нечто, изменяющее действие глагола (понятие, отсутствующее во многих
языках программирования), называется, соответственно, наречием.
|
5. |
Систематическое использование наречий и союзов для изменения действия
глаголов позволяет представить богатый набор операций, используя
сравнительно небольшое множество глаголов.
Например, +/a обозначает сумму по
элементам a , */a обозначает произведение
по a , a */ b есть таблица
умножения a и b .
|
6. |
Работа с векторами, матрицами и другими массивами как с примитивными
обьектами.
|
7. |
Использование функционального или неявного программирования,
не требующего явного упоминания аргументов определяемой функции (программы);
использование присваивания (имен) для функций
(как в sum=:+/ и mean=:sum % #).
|
Следующие разделы содержат комментированные протоколы сессий