J_(プログラミング言語)
[Wikipedia|▼Menu]

Jパラダイムオブジェクト指向プログラミング関数型プログラミング、マルチパラダイムプログラミング、配列プログラミング、関数レベルプログラミング、ポイントフリー 
登場時期.mw-parser-output .plainlist--only-child>ol,.mw-parser-output .plainlist--only-child>ul{line-height:inherit;list-style:none none;margin:0;padding-left:0}.mw-parser-output .plainlist--only-child>ol li,.mw-parser-output .plainlist--only-child>ul li{margin-bottom:0}

1990年 

開発者ケネス・アイバーソン、ロジャー・ホイ 
最新リリースJ9.5 / 2023年12月20日[1]
影響を受けた言語FL、APL 
ライセンスGNU General Public License 
ウェブサイト

http://www.jsoftware.com 

拡張子ijs 
テンプレートを表示

Jはプログラミング言語の一種で、正式名称はアルファベット1文字の「J」だがC言語と同様、「J言語」と一般には呼ばれている。
概要

Jは1989年APLの提案者でもあるケネス・アイバーソンによりAPLの後継として提案された。APLは数式の表記、特に配列の処理に優れており、多くの計算式を極めて単純に表記できる利点を持っていたが、ギリシャ文字やその他の特殊記号を使用するため、利用にはフォントの設定など特殊な環境の準備が必要があり、可読性の低さもあって普及には至らなかった。

JはAPLの反省をふまえて、APLと同様の計算を通常のASCIIコードのみで使用できるようにした。この際、ジョン・バッカスによるFP言語・FL言語(英語版)という関数レベルプログラミング言語(英語版)の影響を受けている(バッカスによるふたつの言語はAPLの影響を受けている)。さらにAPLにあった「作用子」による演算子の合成といった機能が、より拡張強化されている。これらの機能によりAPLのような表記の問題は解消された。しかし、例えば、APLでは?i

と表記するのが、Jではi. i

となるなど、変数と演算子の区別がつきにくくなり、可読性が落ちている。
データ型と記法(直値)
種類

Jのデータ型は他の言語のような整数浮動小数点数文字列の他に有理数複素数などもある。
直値

以上の型の基本的な直値・記法の他、数値は任意の底(基数)nでの表記(n進法)の記法がある。

なお、以下では型と記法の識別を完全に欠いて説明しているので注意。
整数

整数の表記は基本的には他の言語と同じである、しかしJでは負の数はU+002D - '"`UNIQ--templatestyles-00000007-QINU`"'hyphen-minusではなくU+005F _ low lineを用いる。さらにU+002D - を単体で使用すると「無限」として処理される。

式評価後の値
5 - 6_1(−1)
_1 * _(−1 × ∞)__(∞)

浮動小数点数

浮動小数点数の表記も基本的には他の言語と同じである。ただし J では .(ピリオド)が演算子に大きな影響を与えるため .5 のような表記(他言語では0.5として処理される)は許されない。数字の間に e を入れる指数表示は他言語同様 J でも実装されている(例 1.2e3 → 1200)。
有理数

有理数は〈分子〉r〈分母〉と表記する。(例 2r3 → .mw-parser-output .sfrac{white-space:nowrap}.mw-parser-output .sfrac.tion,.mw-parser-output .sfrac .tion{display:inline-block;vertical-align:-0.5em;font-size:85%;text-align:center}.mw-parser-output .sfrac .num,.mw-parser-output .sfrac .den{display:block;line-height:1em;margin:0 0.1em}.mw-parser-output .sfrac .den{border-top:1px solid}.mw-parser-output .sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}2/3を意味する)
複素数

複素数は〈実部〉j〈虚部〉と表記する。この他にも〈[[絶対値]]〉ad〈度数[[偏角]]〉・〈絶対値〉ar〈[[ラジアン]]偏角〉と表記するとそれに対応する複素数を返す。

表記意味
5j45 + 4i
2ad31.99726j0.104672
5ar0.9272953j4

n進法

任意の底(基数)nによるn進法での数値は、〈基数〉b〈数〉という表記する。基底は小数点を含んでもかまわない。

表記意味
2b1015
3b21223
16bff255
0.1b122.1

演算子の種類

JはAPLの特殊文字を全てASCIIコードを組み合わせた演算子として扱うため、膨大な数の演算子を持つ。具体的には演算子の後にコロンやピリオドを加えると別の演算子として扱われる。またAPL同様、演算子を前置記法として使う場合と中置記法として使う場合にかなりはっきりとした意味の違いを持たせている。

一例を以下の表で表す、Jの演算は通常は算術演算子として扱うが、被演算子が1または0の場合は論理演算として扱われる。

演算子前置記法として使用する場合中置記法として使用する場合
+共役複素数を返す。足し算
+:2倍にする。(論理演算)否定論理和を返す。
+.複素数の実数部と虚数部を分離してリストの形式で返す。最大公約数(論理演算の場合は論理和)を返す。
*符号(正なら 1、負なら _1、零なら 0)を返す。かけ算
*:2乗にする。(論理演算)否定論理積を返す。
*.複素数極座標に変更してリストの形式で返す。最小公倍数(論理演算の場合は論理積)を返す。

また J での計算順序は APL と同様に右の演算子が優先される。例えば 8 - 5 - 9 は8 − (5 − 9)であり、12が返される。
演算子の合成

J では演算子を並べることにより、複数の演算子を合成することができる。2つの演算子の合成規則を「フック」、3つの演算子の合成規則を「フォーク」、4つ以上の演算子の合成規則を「トレイン」と呼ぶ。.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}

この節の加筆が望まれています。

脚注^ 出典URL: https://code.jsoftware.com/wiki/System/ReleaseNotes/J9.5

外部リンク

Jsoftware - J言語メインサイト










コンピュータ・プログラミング言語
低水準言語

機械語

アセンブリ言語

高水準言語

1950年代

FORTRAN

ALGOL

RPG

COBOL

1960年代

LISP

CPL

BASIC

PL/I

APL

BCPL

Simula

LOGO

B

1970年代

Forth

Pascal

C

Prolog

Smalltalk

Scheme

ML

AWK

Ada

1980年代

C++


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:16 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef