Найти тему
Интернет сегодня

J - самый эффективный и безумный язык программирования. Почему его стоит учить

Оглавление

Такое название у статьи неспроста, это не слова на ветер, язык J - самый ёмкий и, в то же время, самый сложный язык из используемых в реальном промышленном программировании. Для начала поймём, что же это вообще за язык, где используется и почему его стоит учить.

Сам J является функциональным интерпретируемым языком с динамической типизацией. Сам язык строится на работе с массивами. Здесь всё является массивом: число - нульмерный массив (скаляр), строка - одномерный массив (или вектор) символов и так далее.

В синтаксисе языка есть глаголы, имена существительные, наречия, союзы и прочее. Весь язык состоит из этих средств, давайте рассмотрим что такое существительные и глаголы.

Существительные

Имя существительное - это какая-то переменная, в которой есть данные. Например массив, строка и число - это существительные. Задаются они так:

a =: 3 5 $ 1 2

Чтобы вывести переменную на экран нужно просто написать её имя:

a
Output:
1 2 1 2 1
2 1 2 1 2
1 2 1 2 1
-2

Как видим, создался массив 3 на 5, который заполнен чередующимися единицами и двойками. С тем же результатом можно выводить на экран сразу значение, не присваивая его переменной:

10 $ 1 2 4
Output:
1 2 4 1 2 4 1 2 4 1

Глаголы

Глаголом в J называется какая-то операция. Для примера, как это делают в большинстве статей по J, напишем операцию для нахождения среднего арифметического чисел в массиве.

Зададим массив:

a =: 45 32 54 575

И напишем операцию для нахождения среднего арифметического:

avg =: +/%#

А теперь применим эту операцию к нашему массиву:

avg a

Ничего сложного! Ага, конечно...

Давайте разберемся, что делают эти символы.

  • +/ означает сумму всех чисел массива, */ например означает произведение всех чисел массива
  • # это просто количество чисел во входном массиве
  • % - знак деления (так как знак / уже занят)

В итоге всё просто, мы делим сумму чисел на их количество

Одной из особенностей языка J является то, что в нём нет приоритета операций, все операции выполняются справа налево. Например:

2 * 8 - 3

Выведет 10, а не 13, сначала выполнится вычитание, а уже потом умножение. Этого можно избежать использовав скобки:

(2 * 8) - 3

Выведет уже 13.

Таким образом код:

mi =: -/
mi 3 4 5

Выведет 4. То есть сначала он посчитает 4 - 5 = -1, а потом 3 - (-1) = 4.

Почему J используют

Несмотря на сложность и, на первый взгляд, несуразность языка J его используют в промышленном программировании и любят за его лаконичность и быстроту написания на нём программ. Вот так например на J выглядит программа для решения судоку:

i =: ,((,|:)i.9 9),,./,./i.4$3
c =: (#=[:#~.)@-.&0
t =: [:(([:*/_9:c\])"1#])i&{+"1 1(>:i.9)*/[:i&=i.&0
r =: [:,`$:@.(0:e.,)[:;(<@t)"1
s =: 9 9&$@r@,

Весь алгоритм решения записан всего в 5 строчек. Это вам не мемы типа "3 строчки на питоне", это реальность под названием "5 строчек на J"!

-3

Где используется

J - достаточно быстрый и в использовании и в работе, благодаря этому J используется в обработке данных, в основном финансовых. На нём можно быстро реализовать алгоритмы, на которые в других языках ушли бы часы работы.

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

Ещё J отлично развивает мозг, помогает освоить алгоритмы и заставляет взглянуть на них под другим углом и начать писать код на других языках компактнее, проще и продуманнее.

Как начать

Вот официальный сайт: code.jsoftware.com

Там можно скачать сам язык и среду разработки для него. Также на сайте есть подробная документация по всем аспектам языка, правда на английском, так что если его не знаете, то переводчик вам в руки.

Ну а если статья была вам полезна, или хотя-бы интересна, то поставьте лайк, мне будет приятно)

До встречи в новых статьях, пока!