プログラミング蚀語J.䜕を愛するか

画像
Jは、私が知っおいる最も異垞で効果的な蚀語です。 それはあなたが迅速に開発するこずを可胜にし、たたそれに䞍慣れでコヌドを芋おいる人々に冒ずくを匕き起こすこずもできたす。

Jはあたりにも珍しいです。 そしお孊ぶのは難しい。 Jに盎面しおいる人々は、それを孊ぶ意欲に欠けおいたす。 構文は異垞です。
この投皿では、あなたがそれを研究した堎合に䜕が起こるのか、そしおそれがなぜ興味深いのかをさらに詳しく調べたいず思いたした。 私自身の経隓から、この蚀語の利点はすぐには明らかにならないこずがわかっおいたす。 投皿では、デザむンの分析を停止する぀もりはありたせん。 レビュヌのみ。 䟋に突っ蟌み、蚀語の力を感じおみおください。 孊習せずに、蚀語の矎しさを孊びたしょう。 それに぀いおプログラミングを教える蚘事を曞くのは難しく、私はそれは必芁ないず思う。 これを簡単に行うのはそれほど簡単ではなく、公匏Webサむトのトレヌニング資料に問題はありたせん。 䞻なものは欲望です。 それをしたす。

ちょっずした歎史



Jの前はAPLでした。 APL蚀語は、ハヌバヌド蚈算数孊で50幎代に教えながら、 ケネスアむバヌ゜ンによっお開発されたした。 特に教育のために、圌は蚘法を開発したした。 その埌、この蚀語はマシンに転送され、APL控えめプログラム蚀語ずしお知られるようになりたした。 APLは配列を凊理し、配列を凊理するために最適化されおいたす。

APLにはわずかな欠陥がありたす。 操䜜は非暙準の蚘号で瀺されたす。 それを䜿甚するには、特別なキヌボヌドが必芁です。 したがっお、暙準入力デバむスにより適した新しい蚀語を䜜成する必芁がありたす。 アむバヌ゜ンは、ASCII文字を䜿甚するAPL方蚀の䜜成を開始したした。 そこで、ケネス・アむバヌ゜ンは、90幎代前半にロゞャヌ・フアむずずもに蚀語Jを䜜成したした。この時点で、アヌサヌ・ホむットニヌはアむバヌ゜ン・チヌムから「分離」したした。 圌はJを䜜成する方法に぀いお意芋の盞違があり、独自の蚀語Kの䜜成に取り掛かりたした。 これも成功した蚀語になりたした。

ショヌトレビュヌJ



Jはwww.jsoftware.comからダりンロヌドしおむンストヌルできたす。 トレヌニング資料ずさたざたなドキュメントもありたす。

Jは関数型蚀語です。 しかし、蚀語は普通ではなく、叀兞的な機胜的でもありたせん。 なめたせん。 デヌタの単䜍はリストではなく、n次元の配列です。

Jはむンタヌプリタヌですこの実装では。 動的なタむピング。

匏は、動詞、名詞、副詞、動名詞、連合などから構築されたす。 この投皿では、動詞関数/操䜜のアナログず名詞デヌタに興味がありたす。 名詞は、呜什型蚀語のように完党なデヌタではありたせん。 それらは䞍倉です。 したがっお、Jで割り圓おず呌ばれるものは、むしろ「呜名芏則」です。

名詞はn次元の配列です。 たずえば、次のように名詞を䜜成できたす。

3 5 $ 0

れロからなる3 x 5の2次元配列を取埗したす。 任意の次元の配列を取埗できたす。 特殊なケヌスは、れロ次元の配列です-これはスカラヌです。 1次元配列-ベクトル。 したがっお、Jのデヌタ単䜍はn次元配列です。 れロではなく、必芁な数字で満たされた配列を䜜成するには、$蚘号の埌に、スペヌスを介しお文字列に必芁なデヌタを曞き蟌むこずができたす。 たずえば、次の行

3 5 $ 1 2 3

3 x 5の配列を䜜成しお出力し、順番に繰り返しシヌケンス1 2 3で埋めたす。

1 2 3 1 2
3 1 2 3 1
2 3 1 2 3

スカラヌを䜜成するには、1぀の数字で十分です。

a = 4

ここで、名前の割り圓お方法をすでに瀺したした。 ぀たり すでに4぀ありたす。 ベクトルを䜜成するには、スペヌスを空けお行に数字を曞くだけで十分です。

4 5 3 6
4 5 3 6

*ご想像のずおり、Jはむンタラクティブモヌドで動䜜し、すぐに結果を衚瀺したす

次にタむプに぀いお説明したす。 Jでは、配列の次元に加えお、その芁玠のタむプがありたす。 ぀たり 芁玠は垞に同じです。 いく぀かの数倀タむプがありたす論理0、1、敎数、任意の数の文字を含む敎数、有理数、実数、耇玠数。 たた、数倀タむプに加えお、特別な数倀がありたすマむナス無限倧、無限倧、䞍確実性。 Jの動的な型指定は、数孊的な操䜜に最適です。Jに含たれる数倀を各操䜜で決定したす。 たずえば、敎数の行列に平方根を適甚するず、実数たたは耇玠数を取埗できたす。 元の配列の芁玠に応じお。

たた、Jでは、数倀型に加えお、
1シンボルリテラル。 Jでは、テキストも凊理できたす。 ケヌスJのテキストは文字のベクトルです。 文字を指定するには、単䞀匕甚笊で囲みたす。 文字のベクトルを指定するには、テキストを䞀重匕甚笊で囲むだけで十分です。
2ボクシングはパッケヌゞ化されたタむプです。 ぀たり 任意のマトリックスをパッケヌゞ化しお、ボックスを取埗できたす。 そしお、ボックスから配列を䜜成できたす。 このように、ボックスの助けを借りお、ツリヌを䜜成できたす。
さらに、いく぀かの特別なタむプに぀いおは考慮したせん。

名詞を扱いたした。 さお、動詞ずは䜕ですか。
動詞は、他の蚀語の数孊甚語での操䜜のようなものです。 Jの動詞には、モナドmonadずダむアドdyadの2぀のタむプがありたす。 これは単項および二項挔算に䌌おいたす。 そしお、これは玠晎らしい機䌚を䞎えおくれたす。動詞を䜜成するために、入力に名前は必芁ありたせん。 入力は垞に1぀たたは2぀巊右です。

倉数名を䜿甚せずに1行で他の動詞から動詞を圢成する方法には、特別な芏則がありたす。

したがっお、最初の暙準的な䟋

平均 = + / 

動詞avgは、ベクトルの算術平均です。 圌の䜓に泚意しおください-4文字のみ。 ここには3぀の動詞しかありたせん-数字 + / を远加し、ベクトルの長さ  を取埗し、最初の動詞を2番目の動詞  に分割したす。

*蚘号+および/で瀺されるベクトルに数倀を远加したす。 1぀目は2぀の数字の合蚈で、2぀目はすべおの芁玠の間に操䜜を眮くこずです぀たり、巊折り。 スラッシュはビゞヌなので、Jの陀算操䜜は蚘号で瀺されたす。

ベクトルを䜜成し、動詞を適甚したす。

a = 5 3 7 0 2 4
平均
3.5

ベクトルの算術平均を受け取りたした。

この魔法はどのように起こりたすか Jはそのような単玔なルヌルを䜿甚したす。 たず、Jの操䜜には優先順䜍がなく、右から巊に実行されたす。 匏を曞く堎合

2 * 3 + 4
14

10でなく14を取埗したす。これにより、䞀般に、匏の構築が簡単になりたす。 順序を倉曎する必芁がある堎合は、括匧が䜿甚されたす。

 2 * 3  + 4
10

心配しないでください、これらは倀を盎接蚈算する単なる匏であり、 avg = + / を曞いたずき、動詞を組み合わせお動詞を蚭定したした。

次に、算術平均を蚈算する動詞がどのように機胜するかを分析したす。
動詞が連続する3぀の動詞で構成されおいる堎合、最初の動詞が名詞に適甚され、次に右ず巊の䞭倮の動詞が名詞に適甚されたす。
このように


動詞が5぀の動詞で構成されおいる堎合、䞊蚘のように最初に右の3぀が実行され、次に巊から2぀取られ、同じ順序でさらに実行されたす。 たずえば、最倧2぀の芁玠をずる動詞 ">。"。 したがっお、リストの最倧倀 "> ./"
そしお、最倧倀ず算術平均の合蚈を芋぀ける動詞を曞きたす。

d = >。 / ++ / 

ベクタヌに適甚

ダ
10.5

仕組み

「どのように機胜するか」を曞くずき、これらの動詞がJを実行する順序を知っおいるわけではないこずに泚意しおください。このような動詞のストリングを理解する方法の意味のみを説明したす。 動詞の行によっお、私たちが望むものを蚀いたす。 そしお、 どのように -Jを決定したす

䞊蚘では、匏を構築するためのルヌルの1぀のみを説明したした。 できる限り本質を぀かむために、耇雑なアルゎリズムを簡朔に䞀列に簡単に説明しおください。そしお、laconicism Jの秘密は䜕ですか。圓然、Jを説明する意味はもうありたせん。

動詞が匕数ずしお2぀の単玔な配列巊ず​​右のみを受け入れるように、タスクを蚘述するこずができない堎合がありたす。 時には動詞、より倚くの匕数を持぀関数の類䌌䜓を曞く必芁がありたす。 これはボクシングによっお回避できたす。 ぀たり 他の蚀語の関数の入力パラメヌタヌず同様に、実際には倚数の異なる倀が存圚するボックスのベクトルを指定できたす。 そしお動詞では、それらを取り出しおそこから展開するこずができたす。 再垰は動詞でも実装されたす。

䞊蚘のJでの動詞の蚘述圢匏は暗黙的ず呌ばれたす。

ここで、いく぀かの䟋を、それらがどのように機胜するかを説明せずに。

䟋



1.むンナヌゞョむン

SQLのこのような䟋を考えおください。 2぀のテヌブルがありたす。
CREATE TABLE Customers (ID INT, Name TEXT, Age INT, Salary INT) CREATE TABLE Orders (OID INT, Date DATETIME, CustomerID INT, Amount INT) 

どういうわけか私たちはそれらを埋めたす。 そしお、そのような芁求
 SELECT * FROM Orders o INNER JOIN Customers c ON o.CustomerID = c.ID AND o.Amount < 2000 

意図的にテヌブルを結合するのは平等ではなく、タスクを少し耇雑にするために、より耇雑な述語を䜿甚しお結合したす。
Jでも同じこずをしようずしたす。

createTable = [|、。  a
union =  [{。[  、[  [<[:;] 〜〜  a :) " 1  [{[  、。  [{]  { 〜  [{。]  i。[{。[
insert = [ union [  {。、  [  [<[ ] $ 〜 [ 1    >  " 0 {: ) [|[>]
行 = {。  [<、:) " 1 1 [|[  [< " 1 [、。>  " 0 {
倀 = [ ] ` {。 @。  [ 1  =  [、[> [  [<[  = [{。]  [{]  [>]
pr = [、[  [:: [  [<  [> [  、。[>]  " 0 0  " 0 1 [>]  / [  [ <[ rows >  " 0 ]
join = 1  '[[{。[> {。,: [[<> " 0 " 1 [{[1 2 0|[> [、u " 0]pr y '

䞀般に、これはこの問題を解決するためのすべおのコヌドです。 必芁な動詞は次のずおりです。 テヌブルを䜜成しおデヌタを入力したす。

顧客 = createTable 'ID' ; ' 名前「 ;」 幎霢 ' ;' 絊䞎 '
Orders = createTable 'OID' ; ' 日付 ' ;' CustomerID ' ;' 金額 '

顧客 = 顧客が挿入  <' ID' ; 1  、  <' 名前' ; ' ラメシュ'  、  <' 幎霢' ; 32  、  <' 絊䞎' ; 2000 
顧客 = 顧客が挿入  <' ID' ; 2  、  <' 名前' ; ' キラン'  、  <' 幎霢' ; 25  、  <' 絊䞎' ; 1500 
顧客 = 顧客の挿入  <' ID' ; 3  、  <' 名前' ; ' kaushik'  、  <' 幎霢' ; 23  、  <' 絊䞎' ; 2000 
顧客 = 顧客の挿入  <' ID' ; 4  、  <' 名前' ; ' チャむタリ'  、  <' 幎霢' ; 25  、  <' 絊䞎' ; 6500 
顧客 = 顧客挿入  <' ID' ; 5  、  <' 名前' ; ' Hardik'  、  <' 幎霢' ; 27  、  <' 絊䞎' ; 8500 
顧客 = 顧客挿入  <' ID' ; 6  、  <' 名前' ; ' Komal'  、  <' 幎霢' ; 22  、  <' 絊䞎' ; 4500 
顧客 = 顧客が挿入  <' ID' ; 7  、  <' 名前' ; ' マフィヌ'  、  <' 幎霢' ; 24  、  <' 絊䞎' ; 10000 

Orders = 泚文の挿入  <' OID' ; 102  、  <' Date' ; ' 2009-10-10 08'  、  <' CustomerID' ; 3  、  <' Amount' ; 3000 
Orders = 泚文の挿入  <' OID' ; 100  、  <' Date' ; ' 2009-10-10 08'  、  <' CustomerID' ; 3  、  <' Amount' ; 1500 
Orders = Orders insert  <' OID' ; 101  、  <' Date' ; ' 2009-11-11-20'  、  <' CustomerID' ; 2  、  <' Amount' ; 1560 
Orders = Orders insert  <' OID' ; 103  、  <' Date' ; ' 2008-05-20 '  、  <' CustomerID' ; 4  、  <' Amount' ; 2060 


テヌブルで確認しおみたしょう。

お客さた
IDお名前幎霢絊料
1
2
3
4
5
6
7
ラムシュ
キラン
カりシク
チャむタリ
ハヌディク
コマル
マフィ
32
25
23
25
27
22
24
2000幎
1500
2000幎
6500
8500
4500
10,000

ご泚文
オむド日付CustomerID金額
102
100
101
103
2009-10-08
2009-10-08
2009-11-20
2008-05-20
3
3
2
4
3000
1500
1560
2060

そしお、述語を持぀ク゚リ

 [ 2000  > 'Amount'  value  *。 'CustomerID'  value = 'ID'  value  join Customers ; < 泚文
IDお名前幎霢絊料オむド日付CustomerID金額
2
3
キラン
カりシク
25
23
1500
2000幎
101
100
2009-11-20
2009-10-08
2
3
1560
1500

ずおも簡単です。 Jは䞀般的な蚀語であり、リレヌショナルデヌタを凊理するためのツヌルがないこずに泚意しおください。 䞊蚘のコヌドは、テヌブルを䜜成および蚭定する前のすべおのロゞックです。 joinは任意の述語を受け入れるこずができたす。

この䟋は実際には耇雑ではありたせん。 配列はテヌブルに倚少䌌おおり、Jは四角圢でボックスボックスを描画したす。これにより、テヌブルをすぐに衚瀺できたす。

2.数独゜ルバヌ

i = :,  、| :) i。9 9  ,,。 /、。 / i。 4 $ 3
c =  = [〜。  @ -。  0
t = [  [[* / _9 c \ ]  " 1 ]  i  {+ " 1 1  > i。9  * / [ i  = i。  0
r = [ 、 ` $ @。  0e。、  [;  < @ t  " 1
s = 9 9  $ @ r @ 、


これがすべおのコヌドです。 入力行列を䜜成したす。
] m = 9 9 $ "。 " 0 '200370009009200007001004002050000800008000900006000040900100500800007600400089001'
2 0 0 3 7 0 0 0 9
0 0 9 2 0 0 0 0 7
0 0 1 0 0 4 0 0 2
0 5 0 0 0 0 8 0 0
0 0 8 0 0 0 9 0 0
0 0 6 0 0 0 0 4 0
9 0 0 1 0 0 5 0 0
8 0 0 0 0 7 6 0 0
4 0 0 0 8 9 0 0 1

動詞を適甚しお解決策を取埗したす。
sm
2 8 4 3 7 5 1 6 9
6 3 9 2 1 8 4 5 7
5 7 1 9 6 4 3 8 2
1 5 2 4 9 6 8 7 3
3 4 8 7 5 2 9 1 6
7 9 6 8 3 1 2 4 5
9 6 7 1 4 3 5 2 8
8 1 3 5 2 7 6 9 4
4 2 5 6 8 9 7 3 1

より短い゜リュヌション
䞊蚘のコヌドは、スペヌスず改行を含む148文字で構成されおいたす。 より短い解決策がありたす。 䟋
http://nsl.com/k/sudoku/aw3.k
この゜リュヌションでは、72!!!文字しか必芁ありたせん。 しかし、これはK.蚀語の䜜成者であるArthur Whitneyの決定であり、K。Arthur Whitneyの決定はプログラミングの神であり、圌ず競争する意味はありたせん。
私の゜リュヌションには、割り圓おの呚りにわずかなスペヌスマむナス10文字が含たれおおり、動詞を「むンラむン化」するこずもできたす。これは、いく぀かの文字を獲埗するのにも圹立ちたす。 しかし、簡朔にするために、矎しく明確なコヌドを砎りたくありたせん

Jには短い文章を曞く方法があり、経隓䞍足が私に圱響を䞎えるず確信しおいたす。


3.プロロヌグ

マトリックス/配列に近くなく、より実甚的なタスクのためにJコヌドを瀺したいず思いたす。 ベクトルアプロヌチが解析に適しおいるずいう疑問を聞きたした。 投皿のための簡単なタスクを遞択するずいうアむデアが浮かびたしたが、その解決策は解析に関連しおいたす。 Prologを実装したす。 より正確には、すべおのプロロヌグではありたせん。 タスクは実甚的ではなく、倚くの時間ず劎力を費やす必芁はありたせん。 これは、原則ずしお暗黙の録音圢匏もこのようなタスクに適しおいるこずを瀺すために、Prologのサブセットになりたす。 このプロロヌグでは、それを呌び出すこずができれば、クリッピングすらありたせん。 単玔な事実ずルヌル、操䜜「and」、「or」のみ。 だからコヌド

frq = [-。[ 2| + /  \ '' ''  =
sp =   @ [  [<[}。[>]  " 0 0 [  ] < /。 〜 [+ / \ E. *。[ frq ]  、
spf = [<[  [ '、'  sp [-。  '' =  '' { " 0 1 、。  '、'  >
cl =  〜 [-。e。   33 { 。A.  *。 frq
parse = [  [<[  spf @ {。  、  }。 `  [<[  [<[ spf " 0 [ '、'  sp >  " 0 [ ';'  sp [> {:) @。  2=  [ '-'  sp >  " 0 _1}。[ '。'  sp cl

isVar = [ 91  > * 。64  <  [ a。  i。[{。>
replace =  ] i。〜 [{。[  {  [{[  、] `  [<[$[>]  @。  [ 32  = [ 3   0 [>]  " 2 0
gp = [> [{。>
gv = [   〜 [+。 / " 1 isVar " 0  、。
suit =  [  0 `  [[  = [[〜。[{。| :) [〜。[   〜 [-。[ isVar " 0 [ {| :) gv  *。  [*。 / [+。 / [  isVar " 0 、= /、:)@。[[= []  [ gp ]  " 1 0 ]
sr = [  ]  replace〜 [|]  " 2 [  [::。[ isVar {:) " 1 ]  [ gv〜 [ gp ]  " 1 0 スヌツ
groupVars = [  [<] $ 〜2 、 〜 [-  " 1 [> [  [<[:;  > @ [  [<、 " 1 1  " 1 2  > @ ]  / ] < / 。 〜 [{。|
isRuleTrue =  [+。 /  [*。 / ]  isTrue〜 [>]  " 1 0 [> [  " 0 1  `  0<[ getVarsFromRule  @。  0< @ gv @ ; @ ; @ [ 
isTrue = ]  a  e。 @ ]  +。[+。 / [  isRuleTrue〜 [>]  " 1 0 [-。  a ]  [{[| [-。   a :, a :) [  0 2 $ a :)  、[> sr
getVars = ;  [<[〜。  > @ {。 @ [  gv [ gp ]  `  > @ {。 @ [  $  < @ < @ gp @ ]  [ 〜〜を 眮換 |[>]  " 0 0  }。 @ [  GetVarsFromRule〜 [> [{[>]  @。  [<[[>]  " 1 0 sr
getVarsFromRule = ]  [{。]   〜 [  isRuleTrue〜 [>]  " 1 0 [{]  [|[  ]、[<[ replace〜 [| [>]  " 1 0 [] ` groupVars @。  0<  [〜。 [ ; [;]  [<[ getVars〜 [>]  " 1 0 [; [

目暙 =  [< S 0 [{。[ parse [、  '。' ]  [{   > 'No' ; 'Yes'  isTrue  `  [ ] `  > @ {。  、[ '='  、[> {:) @。  2=  " 1 [> getVars  @。  [+。 / [ IsVar " 0 [  [ 解析 [ 

これがすべおのコヌドです。 実際、パヌサヌは゜リュヌションの最初の郚分にありたす。 このような単玔なプロロヌグを解析するタスクは、もちろん原始的です。 それでも、Jは解析に䜿甚できたす。 たた、より耇雑な解析タスク甚。
パヌサヌの唯䞀の「耇雑さ」-プロロヌグでは、単䞀匕甚笊で囲たれた任意の文字からアトムを䜜成できたす。 それ以倖の堎合、パヌサヌははるかに短くなりたす。 それでも、私は特にラむブラリ動詞を䜿甚しおいたせん。 あなたが蚀語自䜓の力を理解するために、どれだけ早くれロから䜕かを曞くこずができるか。 テキストを操䜜するためのラむブラリもありたす。 正芏衚珟を操䜜するためのラむブラリがありたす。

Prologでコヌドを蚭定したしょう
prolog_code = 0  0
男性ゞェフ。
男性フレッド。
女性メアリヌ。
芪ゞェフ、ビンス、ゞェヌン。
芪メアリヌ、ビンス、ゞェヌン。

sister_ofX、Y-女性X、
芪X、F、M、
芪Y、F、M。


そしおいく぀かの質問。
「メアリヌにはフレッドの効がいたすか」
prolog_codeゎヌル 'sister_ofmary、fred'
いや
「メアリヌを姉効にする必芁があるのは誰ですか」
prolog_codeゎヌル 'sister_ofmary、X'
X =ゞェフ

X =メアリヌ

おわりに


Jで耇雑な問題を簡単に解決する方法に觊発されたこずを願っおいたす。 軜さを犠牲にしお、疑問を抱くかもしれたせん。

䟋の目的は、暗黙の圢匏でコヌドを衚瀺するこずです。 コヌドに非暙準のラむブラリ動詞が実質的にないこずに気付きたしたか すべおのコヌドはほが句読点で構成されおいたす。 これらは初歩的な動詞Jです。もちろん、動詞を入力せずに意味のある名前を付けずに、このように曞くこずを匷制する人はいたせん。 しかし、高レベルのJは、コヌドの簡朔さにより、新しい名前を導入しない傟向がありたす。 新しいコヌドを䜜成するための努力のコストは小さく、名前の埌ろにコヌドを隠したくないずいう事実に぀ながりたす。 䞀般的に、これは時間の経過ずずもに、Jのプログラマヌが同じ動詞を読むずいう事実に぀ながりたす。 コヌドはたすたす明確になっおいたす。

䞻流のOOP蚀語で䜜業しおいるすべおのプログラマは、悲しいこずに、ラむブラリずフレヌムワヌクの珟状を悲しげに同意するず思いたす。 優れたプログラミング慣行では、意味のある名前の埌ろに隠れおコヌドをカプセル化する必芁がありたす。 コヌドを䜜成する努力が十分に倧きい堎合、より倚くの名前が衚瀺されたす。 そしお、たずえば、プロゞェクトで䜜業するために新しいチヌムに来たずき、コヌド内の蚀語はほずんど残っおいたせん。新しい゚ンティティ、以前のプログラマヌが名前を付けたものすべおを孊ぶ必芁がありたす。 新しい蚀語を孊ぶこずは垞に図曞通を孊ぶこずを脅かし、その数は急速に増加しおいたす。 Jはこの問題を解決したせんが、先送りしたす。

蚀語ずしおのJの゚ントリしきい倀はかなり高くなっおいたす。 最初は、実際には読めたせん。 すべおの動詞を勉匷したので、ほずんど曞くこずはできたせんが、コヌドを読むこずさえできたせん。 しかし、時間が経぀に぀れお、あなたはそれをより簡単に行うこずができたす。 これは他の蚀語では起こりたせん。

たた、これは、Jのサポヌトが䞍十分であり、Jに十分なラむブラリがないこずを意味するものではないこずに泚意しおください。 Excelファむル、デヌタベヌスの操䜜からビデオの操䜜たで、すでに倚くの開発が行われおいたす。 たた、Jはマルチパラダむムであり、暗黙の圢匏だけでなく、呜什圢でも蚘述できたす。 ルヌプず分岐あり。 ゚ラヌ凊理あり。 JはOOPをサポヌトしたす。

Jでの䜜業はコヌディングずは異なり、匏の掟生です。 最初は、コヌドをじっず芋るず、タむピング速床がずっず遅くなりたす。 しかし、これらすべおにより、結果は、最初であっおも、他の蚀語よりも速くなりたす。 非垞に倧きな経隓ずコヌドの可読性がなくおも、時間が経぀に぀れお、Jの問題を解決するために座っおいるこずは、他のより銎染みのある蚀語で解決するよりもはるかに簡単に思えたす。 Jでの䜜業は、プログラミング蚀語ではなく、匷力な蚈算機での䜜業に䌌おいたす。 䜕䞖玀にもわたっお䜕かを䜜成しおいるずいう感芚はありたせん。 結果を埗る速床はコヌディングの勇気を䞎え、さたざたなオプションを簡単に詊すこずができたす。

これのおかげで、Jにはニッチがありたす-特に金融セクタヌでのデヌタ凊理。 Jでは、デヌタを簡単に「回転」させ、さたざたな仮説をテストしたす。 たた、必芁に応じお、スクリプトを保存しおプログラムずしお䜿甚したす。 Jはデヌタ凊理プロゞェクトで䟿利です。 耇雑なアルゎリズムが必芁な堎合。 さらに、アルゎリズムの耇雑さによっお、「有甚な耇雑さ」、぀たり 最適化のためのアルゎリズムではなく、デヌタ倉換の耇雑さ。 これらすべおにより、Jは非垞に生産的です。 圌が通蚳であるこずを恐れないでください。 圌は衚珟を行ごずに実行するずいう意味でのみ通蚳です。 ただし、行に動詞匏が蚘述されおいる堎合は、それを1回実行しお蚘憶し、デヌタに動詞を適甚するずすぐに機胜したす。 なぜなら 通垞、倧量のデヌタが凊理されるため、Jでの最適化は良奜なパフォヌマンスを瀺したす。 Jは、他の蚀語で曞かれたラむブラリでも動䜜したす。 これにより、問題のある領域を最適化できたす。

この蚀語は、その特性により、プロトタむピングに適しおいたす。 さらに、プロトタむプは曞き換えられない可胜性が高くなりたす。 たたは生産性が適合するか、問題領域のみの最適化を実行するこずが可胜です。

これはすべお良いこずですが、チヌムプロゞェクトでJを䜿甚するこずには1぀の問題がありたす。専門家はほずんどいたせん。 プロゞェクトでJを䜿甚するこずにした堎合、人が芋぀からない可胜性が高くなりたす。

それにもかかわらず、Jはチヌムワヌクだけでなく䜿甚できたす。 それは匷力な孊習効果をもたらしたす。 Jを操䜜するず、アルゎリズム党䜓の芋方が倉わり、「気が倉わりたす」。 他の蚀語での䜜業にプラスの効果がありたす。

たた、この蚀語は、補助蚀語ずしお、仕事に非垞に䟿利です。 私の環境Jは垞に開いおおり、電卓や゚クセルを䜿甚しおいたせん。 䜕かを解析したり、別の蚀語のコヌドを生成したりする必芁がある堎合-Jは玠晎らしいツヌルです。

参照資料


1.公匏りェブサむト www.jsoftware.com
2.優れた蚘事を読むこずをお勧めしたす- プログラミング蚀語J、玹介

Source: https://habr.com/ru/post/J201470/


All Articles