J (язык программирования)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 02:44, 22 мая 2016.
J
J (programming language) icon.png
Парадигма функциональный
Разработчики Кеннет Айверсон и Роджер Хуэй
Первый   появившийся 1990
Стабильная версия J804 / 4 января 2016
Печать дисциплины динамическая
Лицензия GPLv3
Портал: jsoftware.com
Под влиянием
АПЛ, FP, FL
Влияние
K

J - язык программирования, разработанный в начале 1990-х годов Кеннет Е. Айверсон и Роджер Хуэй, представляет собой синтез APL, FP и FL языков на уровне функций, созданный Джоном Бэкусом. J является очень лаконичным языком массивов программирования, и наиболее подходит для математического и статистического программирования, особенно при выполнении операций над матрицами. Он также используется в Extreme Programming и анализа производительности сети. Как и в оригинальной FP / FL языках, J поддерживает программирование на уровне функций. С марта 2011 года J является свободным и с открытым исходным кодом под лицензией GPLv3. Также можно приобрести источник для коммерческого использования в рамках лицензии.

Типы данных

J поддерживает три простых типов:

  • Numeric
  • Literal (Character)
  • Boxed

Примеры

Пример программы "Hello, world!"

#!/bin/jc
   echo 'Hello, world!'
   exit ''

Некоторые примеры использования avg:

  v=: ?. 20 $100     NB. случайный вектор
  v
46 55 79 52 54 39 60 57 60 94 46 78 13 18 51 92 78 60 90 62
  avg v
59.2
  4 avg\ v            NB. скользящая средняя по периодам размера 4
58 60 56 51.25 52.5 54 67.75 64.25 69.5 57.75 38.75 40 43.5 59.75 70.25 80 72.5
  m=: ?. 4 5 $50     NB. случайная матрица
  m
46  5 29  2  4
39 10  7 10 44
46 28 13 18  1
42 28 10 40 12

Реализация быстрой сортировки:

  sel=: adverb def 'u # ['   quicksort=: verb define
    if. 1 >: #y do. y
    else.
     (quicksort y <sel e),(y =sel e),quicksort y >sel e=.y{~?#y
    end.
   )

Управляющие структуры

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

*assert.
*break.
*continue.
*for.
*goto_label.
*if. else. elseif.
*return.
*select. case.
*throw.
*try. catch.
*while. whilst.

Ссылки

  1. Описание
  2. Official website
  3. help
  4. Ewart Shaw