]]> ]]>
Править | Обсудить | История

J

Дата создания:
1990
Создан под влиянием:
Повлиял на:
Парадигма:
Типизация:
Принятые расширения файлов:
.ijx
Реализации и версии (свернуть все | развернуть все):
Язык программирования

J — язык программирования, созданный как синтез языков APL, FP и FL. Основное назначение — математический и статистический анализ данных.

J был разработан в 1990 году Кеннетом Айверсоном (Kenneth Iverson) и Роджером Хуэем (Roger Hui). Авторы языка взяли за основу APL, но существенно его переработали. Так, например, в J нет понятия переменной — язык оперирует на уровне функций и их переименования. Синтаксис языка отличается от APL отсутствием специальных символов — для записи программ используются символы 7-битного набора ASCII, каждая функция записывается одним или двумя символами.

Характерной особенностью языка является использование терминов грамматики для описания сущностей программы. Данные называются существительными, функции — глаголами, операторы, создающие функции, — наречиями. Отметим, что J позволяет программисту определять свои собственные наречия, не ограничиваясь стандартным набором.

Как и в APL, в J существует единственный составной тип данных — однородные массивы произвольной размерности. Для организации более сложных структур данных и объектов используется принцип boxing, унаследованный из APL.

J предоставляет набор блочно-ориентированных управляющих структур, характерных скорее для процедурных языков: циклы, условные переходы, обработку исключений и т.д.

В отличие от APL, программы и данные в J хранятся не в рабочем пространстве, а в файлах-скриптах, которые можно редактировать в любом редакторе.

Элементы синтаксиса:

Комментарий до конца строки NB.
Присваивание значения переменной =

Логотип J
Логотип J

Примеры:

Hello, World!:

Пример для версий J602, J701
'Hello, World!'

Числа Фибоначчи:

Пример для версий J602

В этом примере используется формула Бине.

Запись g =: -: >: %:5 эквивалентна g =: 0.5 * (1 + 5 ^ 0.5) и присваивает имя g значению золотого сечения. Для этого используются следующие функции: %: извлекает квадратный корень из числа, >: увеличивает число на единицу, -: делит число на два. Если в формуле нет скобок, то действия выполняются справа налево.

Запись fibb=: (%:5) %~ g&^ — (1-g)&^ эквивалентна fibb =: (0.2 ^ 0.5) * (g &^ — (1-g) &^); таким образом определяется формула для n-ого числа Фибоначчи при заданном n. Функция %~ выполняет операцию деления, но делимое и делитель имеют порядок, обратный традиционному.

i.16 генерирует числа от 0 до 15, включительно.

load 'printf'

g=: -: >: %:5
fibb=: (%:5) %~ g&^ - (1-g)&^
fstr=: '...' ,~ ,~^:4 '%d, '
fstr printf fibb 1+i.16

Числа Фибоначчи:

Пример для версий J602

В этом примере используется рекурсивное определение чисел Фибоначчи. Оператор @. — селектор, выбирающий 1, если аргумент функции меньше или равен 2, и рекурсивное определение в противном случае.

load 'printf'

fibr=: 1:`(-&2 + &fibr -&1) @.(2&<)"0
fstr=: '...' ,~ ,~^:4 '%d, '
fstr printf fibr 1+i.16

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам