J (язык программирования)
Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей.
|
Семантика: | |
---|---|
Тип исполнения: |
интерпретатор |
Появился в: |
1990 г. |
Автор(ы): | |
Последняя версия: |
6.02 / 3 марта 2008 |
Типизация данных: |
динамическая |
Испытал влияние: | |
Повлиял на: |
J — функциональный векторный язык программирования (Массивное программирование). Диалект АПЛ. В отличие от АПЛ не требует специальной раскладки клавиатуры для ввода математических символов, поскольку использует символы ASCII.
Язык программирования J был разработан в начале 1990-х Кеннетом Айверсоном и Роджером Хуэем (Roger Hui) (англ.) как синтез APL (также разработанного Айверсоном) и языков функционального уровня FP (англ.) и FL (англ.), разработанных Бэкусом. Основные его черты это ориентированность на MIMD инструкции, функциональный подход (переменные исключены вообще, вместо них действует механизм переименований и комбинаторы).
Язык J сочетает в себе несколько идей и парадигм. Он, в числе прочего, сильно ориентирован на обработку данных. J — чисто функциональный язык. Единственными способами передачи значения является получение его как результата вызова функции и передача его функции в качестве параметра. Переменных в J нет.
Единственный из разработанных полноценный интерпретатор J является несвободным.
Понятия языка
Для описания элементов программирования, J использует набор слов, относящийся к грамматике английского языка. Эта терминология не такая странная, как может показаться на первый взгляд. «Глагол» используется в смысле, соответствующем «функции» или «оператору» в C.
Соответствие терминов языка 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 выделяются такие типы лексем:
- Существительное
- Глагол
- Наречие
- Союз
Отношения между лексемами и частями речи иллюстрирует диаграмма на рис. — лексемы языка J и части речи.
Файл:J lexem rus.png
Слова в предложении языка 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 контекстно-зависимый, и стандартные средства для его описания (например, грамматика в форме Бэкуса-Науэра) не подходят. Понятие абстрактного синтаксического дерева даже теряет своё значение, так как оно корректно лишь в области контекстно-свободных языков.
См. также
Cсылки
- Описание
- Домашняя страничка(англ.) (в том числе Вики-справка)
SQL | Это незавершённая статья о компьютерных языках. Вы можете помочь проекту, исправив и дополнив её. |
Основные языки программирования (список • сравнение • IDE • история • хронология) |
|
---|---|
Используемые в разработке |
Ада • АПЛ • Ассемблер • ActionScript • ABAP/4 • AutoIt • AWK • BASIC • C • Кобол • C++ • C# • ColdFusion • Common Lisp • D • dBase • Delphi • Eiffel • Erlang • F# • Forth • Фортран • Gambas • Groovy • Haskell • Icon • Java • JavaScript • Limbo • Lua • MATLAB • Object Pascal • Objective-C • OCaml • Oz • Оберон • Parser • Паскаль • Perl • PHP • PowerBASIC • PureBasic • Python • ПЛ/1 • Пролог • Ruby • Scala • Scheme • Smalltalk • SQL • PL/SQL • Tcl • Vala • Visual Basic • VB.NET |
Академические | |
IEC61131-3 |
Instruction List • ST • FBD • Ladder Diagram • SFC |
Прочие | |
Эзотерические |
de:J (Programmiersprache)
en:J (programming language)
es:Lenguaje de programación J
fi:J (ohjelmointikieli)
fr:J (langage)
gl:Linguaxe de programación J
ja:J (プログラミング言語)
uk:J (програмування)
zh:J语言
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....