Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

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

Из Википедии — свободной энциклопедии

Не путать с J++ или J#.

J — функциональный векторный язык программирования, диалект APL, не требующий в отличие от прототипа специальной раскладки клавиатуры для ввода математических символов (использует только символы ASCII).

Разработан в начале 1990-х создателем APL Кеннетом Айверсоном и Роджером Хуэем (англ. Roger Hui) с применением идей из языков комбинаторного программирования FP[en] и FL[en] Джона Бэкуса. Основные его черты — это ориентированность на MIMD-инструкции, функциональный подход (переменные исключены вообще, вместо них действует механизм переименований и комбинаторы).

Сочетает несколько идей и парадигм, при этом является чисто функциональным языком — единственными способами передачи значения является получение его как результата вызова функции и передача его функции в качестве параметра. Существенно ориентирован на обработку данных.

Единственный из разработанных полноценный интерпретатор J был в период 1994—2010 годов несвободным, 6 марта 2011 года исходные коды 7-й версии были открыты под лицензией GPL3[2].

Понятия языка

Для описания элементов программирования, J использует терминологию грамматики естественных языков, например, термин «глагол» используется в смысле, соответствующем «функции» или «оператору» в Си.

Соответствие терминов языка J терминам языка Си:

Термин языка J Термин языка C
Глагол Функция или оператор
Имя существительное Объект
Глагол-связка Присваивание
Знак препинания Разделитель
Наречие (#define macro)
Союз (#define macro)

У каждого слова в предложении языка J есть часть речи, аналог типа в языке C. Это глагол, имя существительное, глагол-связка, наречие, союз или знак препинания. Главные части речи это существительное, глагол, наречие и союз. Все имена, которые будет создавать программист и все имена, определённые в языке J (за исключением глаголов-связок (=. и =:) и знаков препинания), будут относиться к одной из главных частей речи. Сущность (англ. entity) это объект, тип которого — одна из главных частей речи. Другими словами, сущность это наречие, существительное глагол или союз. Сущности может быть дано имя, но большинство из них имени не имеют и возникают посреди выполнения выражения и исчезают сразу после, в точности как промежуточные результаты вычисления выражения на языке С.

Существительное содержит данные, глагол производит действие над одним или двумя существительными с тем, чтобы получить в результате существительное. Наречие производит действие над глаголом или существительным, получая результатом сущность, союз оперирует над двумя существительными или глаголами, и имеет результатом сущность. Наречия и союзы называются модификаторами. В С модификаторы можно представить в качестве макроса препроцессора, который принимает имена функции и содержит код вызывающий код функции.

Знаки препинания в языке J состоят из символов () ' и символа конца строки, а также ограничителя NB. и нескольких специальных слов, таких как if. и case. Больше символов пунктуации в языке J нет. Даже символы [ ] , . " ; { } являются глаголами, а скобки [ ] и { } независимы и используются по одной, а не парами.

Синтаксис

Исполняемой единицей языка J является предложение, которое соответствует выражению в языке C. Ограничителями предложения языка J являются символ конца строки (LF) и управляющие слова, такие как if. Предложение включает все символы между разделителями, а поскольку символ LF является разделителем, предложения J должны вписываться в одну строку. Способов разнести предложение на две строки нет.

Все комментарии начинаются с NB. и заканчиваются концом строки. Комментарий в процессе выполнения предложения игнорируется. В языке J выделяются такие типы лексем:

  1. Существительное
  2. Глагол
  3. Наречие
  4. Союз

Отношения между лексемами и частями речи иллюстрирует диаграмма на рис. — лексемы языка J и части речи.

Слова в предложении языка J делятся на идентификаторы, примитивы, числа, знаки пунктуации и символьные константы. Разделяют слова пробелы и символ табуляции. У символов «.» и «: » особое значение.

Имена (идентификаторы) в языке J подобны таковым в языке C. Они начинаются с буквы латинского алфавита, допускают нижнее подчёркивание, различают регистр и состоят только из алфавитно-цифровых символов и символа нижнего подчёркивания. Имена, заканчивающиеся на символ подчеркивания и содержащие в себе два символа подчёркивания обрабатываются особым образом, это связано с понятием локали.

Графические символы ASCII (например «+») называются примитивами или операторами.

Каждый графический символ может образовать новый примитив, если к нему добавить «.» или «: ». Поскольку все примитивы — зарезервированные слова, то символы «.» и «: » в именах не допускаются. Примитивы не обязательно разделять пробелами. Часть речи каждого примитива есть постоянная для языка J. Примеры:

  + +. +: { {: {:: i. i: for. select. case. end.

Порядок вычисления

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

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

  result =. name1 verb2 5

нужно знать, является ли name1 глаголом или существительным. В случае, когда он глагол, порядок вычисления name1(verb2(5)), а если он существительное, verb2 — диадный и результат (name1 verb2 5).

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

Существительные со скобками

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

Грамматика

J позволяет построение нескольких синтаксических деревьев для одной и той же строки кода. То есть описания языка не полны, отсутствует исчерпывающая спецификация. Язык J контекстно-зависимый, и стандартные средства для его описания (например, грамматика в форме Бэкуса-Науэра) не подходят. Понятие абстрактного синтаксического дерева даже теряет своё значение, так как оно корректно лишь в области контекстно-свободных языков.

Примечания

Литература

Ссылки

Эта страница в последний раз была отредактирована 18 декабря 2023 в 10:01.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).