質問

私はC、Fortran、Python、R、Matlab、およびいくつかのLispの背景から来ています-そして私はHaskellでいくつかのことを読んだことがあります。JやAPLファミリーの他の言語で、ユニークでより一般的な言語で実装されていない、きちんとしたアイデア/例は何ですか?私はいつも私が欠けているものを見つけることに興味があります。..

役に立ちましたか?

解決

Jには非常に大きな演算子があり、ライブラリを探すことなく複雑なプログラムを簡単に作成できます。非常に強力な配列処理機能と、明示的な制御構造をほとんどの目的に無関係にする反復構造を備えているため、明示的なループを宣言するのにテンソル代数を使用する方が便利です。Jはインタプリタで実行されますが、良いJスクリプトはコンパイラ言語で書かれたプログラムと同じくらい速くすることができます。(明示的なループを取り出すとき、インタプリタはループを実行するたびにループの内容をコンパイルする必要はありません。)

Jのもう一つの楽しい機能は暗黙のプログラミングです。入力変数を明示的に参照せずにスクリプトを構築することができ、純粋に何をしようとしているのかという観点からアイデアを表現できます。たとえば、average関数を「リスト内の用語を合計し、リスト内のエントリ数で除算する」と定義することができます:

(+/ % #)

または、2D配列にスライスし、平均が10を超える行の平均のみを返すスクリプトを作成することもできます:

(10&<#])(+/%#)"1

Jでできることは他にもたくさんあります;これは実行可能な形式の数学的表記法です。アイデアは簡単に一般化するので、言語がどのように機能するかのいずれかの側面を学ぶことから多くの利益を得ることができます。

他のヒント

Jの最も興味深い側面の1つは、それがリモートでさえ主流でさえ

でさえも非常に少ない非フォンノイマン言語の1つであると思います。

UHM。J主流?ええと、 ノンヴォンノンマン言語と比較して、それがそうです!非常に少ない非von-neumann言語のみがあります。あれば1のユーザーベース。一般的に、それらは少なくとも1人がそれを発明した男と同じ階に座っていない場合に成功したと見なされます。

と比較して、、j は主流です。特に、Jは、彼のセミナルチューリング賞の講義「プログラミングはフォンノイマンスタイルから解放されて解放することができ、それはそれの唯一の作業実装である唯一の作業の実装に基づいています。(たとえば、背景は実際にはFPを実装したとは思わない。)

これは私がそれを解決するのと同じくらいユニークではありませんが、私がjのために考えることができるトップの機能は暗黙の型付けです。それは、処理中のデータに焦点を合わせるための実行とメモリ管理の上の素晴らしい抽象化レベルを作成します。

番号を保存する必要があるとします。

var1 =: 10
.

やりました。アレイ?

var2 =: 4 8 15 16 23 42
.

完了。ああ、しかし待って、あなたはそれを3.7で割る必要がありますか?キャスティングに迷惑をかけないでください。

var2 % 3.7
.

その必要性を取り除くためには、鋳造して操作して割り当てることが小さな祝福です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top