Введение
Язык программирования J, разработанный в начале 1990-х годов Кеннетом Иверсоном и Роджером Хуэй, является языком программирования массивов, основанным преимущественно на APL (также разработанном Иверсоном). Чтобы избежать проблемы со специальными символами, характерной для APL, J использует только базовый набор символов ASCII, прибегая к использованию точки и двоеточия для образования коротких слов, аналогичных диграфам. Большинство таких первичных (или примитивных) слов J служат математическими символами, при этом точка или двоеточие расширяют значение базовых символов. Кроме того, многие символы, которые в других языках обычно используются в парах (например, [] {} "" `` или <>), в J рассматриваются как самостоятельные слова или, при использовании с точкой или двоеточием, как односимвольные корни многосимвольных слов. J – это очень лаконичный язык программирования массивов, наиболее подходящий для математического и статистического программирования, особенно при выполнении операций с матрицами. Он также применяется в экстремальном программировании и анализе производительности сетей. Подобно языкам FP и FL, разработанным Джоном Бэкусом, J поддерживает функциональное программирование благодаря своим возможностям неявного программирования. В отличие от большинства языков, поддерживающих объектно-ориентированное программирование, гибкая иерархическая схема пространства имен J (где каждое имя существует в определенной области видимости) может эффективно использоваться как основа для объектно-ориентированного программирования, основанного на классах и прототипах. С марта 2011 года J распространяется как свободное и открытое программное обеспечение под лицензией GNU General Public License версии 3 (GPLv3). Также возможна покупка исходного кода по индивидуальной лицензии.
The J programming language, developed in the early 1990s by Kenneth E. Iverson and Roger Hui, is an array programming language based primarily on APL (also by Iverson). To avoid repeating the APL special character problem, J uses only the basic ASCII character set, resorting to the use of the dot and colon as inflections to form short words similar to digraphs. Most such primary (or primitive) J words serve as mathematical symbols, with the dot or colon extending the meaning of the basic characters available. Also, many characters which in other languages often must be paired (such as [] {} "" `` or <>) are treated by J as stand alone words or, when inflected, as single character roots of multi character words. J is a very terse array programming language, and is most suited to mathematical and statistical programming, especially when performing operations on matrices. It has also been used in extreme programming and network performance analysis. Like John Backus's languages FP and FL, J supports function level programming via its tacit programming features. Unlike most languages that support object oriented programming, J's flexible hierarchical namespace scheme (where every name exists in a specific locale) can be effectively used as a framework for both class based and prototype based object oriented programming. Since March 2011, J is free and open source software under the GNU General Public License version 3 (GPLv3). One may also purchase source under a negotiated license.
Очистка
J имеет стандартные средства для остановки при ошибках или в заданных точках внутри глаголов. Он также оснащен уникальным визуальным отладчиком Dissect, который предоставляет интерактивное двухмерное отображение выполнения одного J-выражения. Поскольку одно J-выражение выполняет столько же вычислений, сколько целая подпрограмма на языках более низкого уровня, такое визуальное отображение весьма полезно.
Документация
Документация к J включает словарь, в котором слова J идентифицируются как существительные, глаголы, модификаторы и так далее. Основные слова перечислены в лексиконе, где их части речи указаны с помощью разметки. Следует отметить, что глаголы имеют две формы: монадическую (аргументы только справа) и диадическую (аргументы слева и справа). Например, в выражении ' 1' дефис является монадическим глаголом, а в '3 2' – диадическим глаголом. Монадическое определение в основном не зависит от диадического определения, независимо от того, является ли глагол примитивным или производным.
Структуры управления
J предоставляет структуры управления (подробности здесь), аналогичные другим процедурным языкам. Основные управляющие слова в каждой категории включают: assert, break, continue, for, goto label, if, else, elseif, return, select, case, throw, try, catch, while, whilst.
assert. break. continue. for. goto label. if. else. elseif. return. select. case. throw. try. catch. while. whilst.