アイちゃんも来ないのかよw
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
J使いはいないんだろうかw
FizzBuzz問題をJでやってみた。
ググって見ると何人かの人がやってみたようだが。
fb =: 3 : 0
fb0 =: 3 : 'if. 0=15|y do. <''FizzBuzz'' elseif. 0=3|y do. <''fizz'' elseif. 0=5|y do. <''Buzz'' elseif. do. <y end.'
fb0"0 >: i. y
)
2行目はアレだが、3行目はJっぽい処理の仕方じゃないかと思う
本当に誰も来ないな…
ふと思って試してみたんだが、explicit deffinitionは無名関数として使えるっぽい。
( 4 : '2 * x + y') / 1 2 3
で、ちゃんと期待する結果(22)が出る。
おお、とうとうJ言語もスレができたんですね。
では、ごあいさつがわりに私もFizzBuzzを。
wd&.>(<'FizzBuzz')(I.0=15|n)}(<'BUzz')(I.0=5|n)}(<'Fizz')(I.0=3|n)}<"0 n=.>:i.100
一人でやってるとなんか言いたくなることがあるんで、立ててみました。
本家のフォーラムや個人のblogにレスつけられる程じゃないんで。
FizzBuzzはそう言う書き方もあるんですね。 } のその使い方は初めて知りました。
組込みの配列処理動詞は覚えて多用すべきなんでしょうが、数が多いのと、自分の
用途(簡単な数値計算)にはあまり使わないのとで、ごく簡単なもの以外は放置状態です。
で、なんか言ってみる。
複数の動詞の和の形のtrain (v1+v2+... +vn) が、
(v1 y)+(v2 y)+ .... +(vn y) のように働いて
くれたらなぁと思って試してみたら、実際そう動いた。
一応、trainの評価規則を確認してみると自然に
そう言う評価になるように作ってあるようだ。
うまく考えてあるなぁと感心した。
J言語は個別の要素の書き換えがめんどうですね。
Cなどで配列aの要素に代入する場合
a[0]=1
ですがこれと同様のことをJでかくと
a=:1(0)}a
になってわかりにくいです。
でも驚きを与えてくれる不思議な言語で結構きにいってます。
> J言語は個別の要素の書き換えがめんどうですね。
確かに。
JやAPL流のコーディングスタイルでは配列の要素を個別に処理する事はあまりないから、デザイナーとしてはその辺の冗長さは気にしてないって事なんですかね?
> でも驚きを与えてくれる不思議な言語で結構きにいってます。
俺レベルだと、驚くよりも難解な仕様に首をひねることの方が多いですよw
今日も x { y の使い方を覚えるので一苦労しました。 左引数の構造が、
要素指定の方法によって一見バラバラに見えて、しばらく途方にくれましたよ。
>>11 リンク先見ましたが、Jは健闘してますねぇ。
俺もなんか解いてみようとしましたが入出力の仕様がよく分からないんでやめました。
私にわかる範囲のことであればお答えしますので
ぜひ解いてみてください。
thx
でもまあ、一応自分で公開済みのソース見て考えてみますよ。
つーかそのランキングおかしいだろw
D言語がCOBOLやJavaFX抜いてるとかねぇよwww
PL/IやVHDLがJより下ってのも絶対にありえん
これコミュニティ数でしょ?
企業で使われてるけど趣味で使わないみたいな言語が下位になっているのでは
なんで、そんな小ネタにだけ反応するんだよw
ネタがないので、前から気なってるJの変数周りの妙な動作について。
受け取った2項動詞をそのまま返すだけの副詞hogeを定義する。
hoge =: 1 : 0
:
f =. +
x u y
)
で、なんか動詞を食わせて動かしてみる。
1(+ hoge)2
3
2(* hoge)4
8
(つづく)
で、適当な変数にバインドしたのを食わせても動作は同じ。
g =: *
2 (g hoge) 5
10
ここまでは異常なし。で…
f =: *
2 (f hoge)5
7
なぜか、hogeの中で定義したローカルな f にバインドされた動詞(+)を呼んでるっぽい。
(オチは無い。)
>>19 いきなり、むずかしいとこにいっちゃうんですね。
もちろん、私の理解の範囲外です。
難しいですw 俺も何が起こってるのかよく分かってません。
どうもJではoperatorに動詞を食わせるとその名前が渡る場合があって、
その場合にグローバルとローカルの名前が区別できてないんじゃないか
とも思ったんですが、↓のように戻り値をtacitな定義にすると普通に
動くんで単純にそうとも言えないようです。
hoge =: 1 : 0
f =. +
u
)
まあ、とりあえずの解決策としては動詞をoperatorに食わせる前に f. で
定義に置き換えてしまえばOKなんですが、これもその動詞が $: で
自己参照してると使えないんで若干気持ち悪いです。
>戻り値をtacitな定義にすると普通に動くんで単純にそうとも言えないようです。
と、書いたがやっぱり単純にグローバル名とローカル名の区別が付いてないっぽい。
>>22のhogeの最終行をいじって、u (hogeの左引数)を必ず評価して返すように変更すると、
>>19-20の結果が再現された。
huga =: 1 : 0
f =. +
u f.
)
>>20のhogeで普通に動いて見えるのは、多分、uにバインドされた名前 ' f ' がそのまま返って、
元のコンテキストで評価されるからなんだろう。
これはどう解釈したらいいんだろう。
a=:'N='&,":
a 7
N=N=N=N=N=N=N=7
dictionaryを調べたら & の用法に x m&v y ? m&v^:x y てのがありました。
要するに「(m&v)をyに対してx回作用させる」と言う事のようです。
件の定義の 'N='&, の場合、yの頭に文字列'N='をx個くっつけると言うことになります。
で、全体としては ('N='&,) ": は典型的な hookで、monadとしてtacitに書くと
y ('N='&,) ": y となるので、例示の通りの動作となります。
26 :
25訂正:2010/02/06(土) 00:28:34
【誤】 x m&v y ? m&v^:x y
【正】 x m&v y ⇔ m&v^:x y
【誤】tacitに書くと
【正】explicitに書くと
ついでですが、 dyadとして使った場合は x ('N='&,) ": y (dyadic hook)となって、
2 a 7
N=N=7
のように左引数でN=の数を別に指定できます。
>>25-27 説明、ありがとうございます。
そうか、単項動詞のつもりが、二項動詞になっているのか。
どういたしまして。
独り言。
Learning Jを一通りさらおうとしてるが16章の配列要素の操作の説明が略しすぎで苦労した。
dictionaryも凝った例で読みにくいし、自分でいちいちテストデータを考えて動詞の機能を
試す羽目に。
正直ちゃんとした日本語の解説書か、英文でいいから普通の形式の仕様書が欲しい。
アルファベットの大文字、小文字をならべた文字列
をつくるのにあれこれやっていたらこんなのができた。
'A a'=:0 7{;:65}.a.
A
ABCDEFGHIJKLMNOPQRSTUVWXYZ
a
abcdefghijklmnopqrstuvwxyz
>>31 こう言うのを簡単に書ける人がうらやましい。
配列操作周りも書いてくれw
>>32 ;: が大文字列、小文字列を名前として解釈するのを利用するわけですか。
アイデアですねぇ。
試しに英数字の間にある記号列をインタプリタに食わせてみたら、殆どの部分が
tacitな定義として解釈されましたよw
本家のメーリングリストの購読を始めた。
なんかもうすぐ次期バージョン(J7)のベータが公開されるらしい。
special codeなんですかね。
2 ^. 3
1.58496
x: 1.58496
4953r3125
としかならないですし。
ああ、
>>37はあまり意味がないか。
x:抜きで計算させると↓となるので、x:が頭に付いた式は中でなんかやってるんじゃないかと。
0j20":2^.3
1.58496250072115630000
とまで書いて、ふと思いついてやってみた。
a =: 2^.3
0j20": a
1.58496250072115630000
0j20":x: a
1.58496250072119330535
2^.3はaにバインドされる前に評価されてる筈だから、^.自体元から拡張精度で計算されてるっぽい?
底が2のlog(3)をwindowsの電卓で計算すると
1.5849625007211561814537389439478
念のためmaximaでも計算。
(%i34) (fpprec:32,bfloat(log(3)/log(2)));
(%o34) 1.5849625007211561814537389439478b0
0j20":x:2^.3
1.58496250072119330535
結局、J言語の計算は小数点以下13桁までしか正しくないようだ。
本当に誰も使ってないんだな
悲しくなってきた
だがそれがいい
まあ、特定用途向けのライブラリとか薄いっぽいし、実用しようって人間は
少ないだろうな。
「フロントエンドが今度からhtmlとGTKベースになるとか書いてある。
で、htmlのフロントエンド開いても今ひとつ使い勝手が良くない。
ヘルプもj602のままだし。
保守
ここのところはJで作ったアプリケーションを使ってるだけで学習は進んでない。
オブジェクト指向分析設計の本を読んでるんで、暇になったらJへの適用を
試してみようと思ってる。
保守
最近はちょっとずつ"learning J"の抄訳+αをやってる。
前に
(3 :'y+y')5
10
みたいに明示的定義でも名前をつけずに使えるという話があったけど
複数行の定義でもできるとは知らなかった。
(3 :0)5
y*y
)
25
さらにこんなのもありなのね。
((3 :0)10),(3 :0)10
y+y
)
y*y
)
100 20
>>48 どう言うメカニズムでこんなことが起きるのか不思議ですね。
(種あかしはしないでくださいよw自分で何とか考えてみます)
でもって、独り言。
携帯電話のキャリアを乗り換えたのを機にwindows mobile
(
>>49続き)
搭載のスマートフォンを導入したんだが、これにJのPocket PC用を入れてみた。
入れてみてデモを走らせただけで全然使ってないがw
52 :
デフォルトの名無しさん:2010/07/07(水) 00:10:18
APLはここでおk?
まあいいんじゃないですか?Jのご先祖だし。
HSPレベルの自己満言語?
ふーん
>>55 Roger Huiまで来てるし、本家メーリングリストのの出店と化してるようなw
保守
Learning Jが終わったら「テスト駆動開発入門」をJで写経してみるかと思ってる今日この頃…
NB.
>>1 スレ建て乙/おめ/有難うございます。
fmt_x_if_y_is_empty=. ":@[ ^: (0: = #@])
f_b_fb =. (0: = 3 5&|"0) <@;@# (;:'Fizz Buzz')"_ NB. fork です。
fbbox=: (fmt_x_if_y_is_empty&.> f_b_fb)f. NB. hook です。f. はお約束。
NB. ↑私も御挨拶代りにFizzBuzzを。
>>4 さんや
>>6 さんのとは少し仕様が違い,
fbbox 7+i.10 NB. 等として使います(因みにFizzBuzzはこのスレで知りました)。
NB. exposure age は rosettacode からのパクり(w)。
>>11 「anarchy golf
http://golf.shinh.org/ の問題を解くことぐらい」
んでもって
>>59 のを色々いじってたら短くなったので submit しちゃいますた。echo 使うのはインチキかもですが。
(([:(,+:/)0=3 5|])echo@;@#'Fizz';'Buzz';])"0>:i.100
洩れは通常 j504(N0 V1 V2 未導入)を使ってる(Win98SE上)ので,それだと下記(echo は j6 と同様に再定義):
(([:(,+:/)0:=3 5&|)echo@;@#'Fizz'"_;'Buzz'&;)"0>:i.100
尚, (([:(,+:/)0=3 5|]);@#'Fizz';'Buzz';])&.>>:i.100 等とすると,
>>4 さんや
>>6 さんのに近い仕様になります。
61 :
I., S.:2010/10/23(土) 22:12:42
保守を兼ねてJ言語での表示周りの Tips を何か書いてみる。
箱入り混合配列の中身が手軽に眺められるのは便利だが,
行数を食って叶わんという貴方に:
] t=: (fdir=: 1!:0) '*' NB. ←ディレクトリ一覧を例に使う
(p1=: ":each(s:@)"2) t NB. 邪道だけど速効簡便法
(p2=: ( peel=: (}.~ *@$);.0^:2 )@":"2) t NB. 外枠を削る
(p3=: ( rm024=: (#~ $&0 1@#) )@":"2) t NB. 横罫を削る
(p4=: ( rm135=: (#~ $&1 0@#) )@p2"2) t NB. 外枠と横罫を削る
(p5=: ,.&.:>"1@|:"2) t NB. 数値を縦に揃えてスッキリ
(p6=: p2@p5"2) t NB. もっとスッキリ
p2 <"0' OX'{~19 22 7#:~3#3 NB. どっかで X がドキュソだった訳だが
5!:1<'p1' や 5!:2<'p1' のような入れ子には使えんが,
多くの典型的な矩形箱入り配列に適用できると思うので,例えば
t=: <"0 i.2 3 5 とかでもお例しを(その為に "2 が付いている)。
>>53 でもRはダメっていうw
今、NARS2000をダウンロードして遊んでいます。
Amazonで注文した入門書がまだ届かないので、いろいろ試している段階です。
APLでも普通に副詞、フック、フォークがあるんですね。
Rにはこれらの機能がないので、ループや変数を使わずに記述できる範囲に制限があるのかも知れません。
それにしてもAPLを搭載したPCであるIBM 5100って凄かったんだなあと思います。
試作品が'73だそうです。
有名なAltoも'73。
Smalltalkは触ったことがないけど、
もしかしてクラスライブラリでAPLに近い配列、行列演算とか出来たんでしょうか?
>>62 Smalltalk も '70年代の初期の実装では APL の影響をいくつか受けています。
現行の実装では Squeak Smalltalk にその名残がみられます。
#(1 2 3) , #(4 5 6) "=> #(1 2 3 4 5 6) "
#(1 2 3) + #(4 5 6) "=> #(5 7 9) "
1 + #(1 2 3) "=> #(2 3 4) "
#(1 2 3) + 1 "=> #(2 3 4) "
#(1 2 3) negated "=> #(-1 -2 -3) "
#(1 2 3) sum "=> 6 "
もしかして、副詞の有無がRとの根本的な違いでしょうか。
+/ 1 2 3
は
1+(+/ 2 3)
という具合に再帰的に適用されて制御構造の役割を果たすので、制御構造を用いた記述が不要になる。
Rでは副詞が無くなっているので、ループはダメとか言われながらも制御構造を用いた記述を捨てられない。
メモリを買ったので、JとRに行列の積を計算させてみた。
スピードに圧倒的な差が出た。
4Gバイト超のメモリを積んでも、計算速度の限界のほうが先に来る。
チューリング完全なJ言語では、BLASに処理を投げるRに勝てないのかな。
b=:a+/ .*a=:((x,x)$(?(x^2)$x))%x=:1500
x<-1500
a<-matrix(sample(0:(x-1),x^2,replace=TRUE),x,x)/x
b<-a%*%a
66 :
I., S.:2010/11/29(月) 06:43:25
>>65 「メモリを買ったので、JとRに行列の積を計算させてみた。スピードに圧倒的な差が出た。」
ベンチマーク乙。どのくらいの差が出たか情報きぼんぬ。
小ネタだが, 以前J言語のメーリングリスト(JForum)に
「ケネス・アイバーソン博士から『(固有値動詞) c. の(J言語への)実装は
まだかまだか』という催促の電話がちょくちょく掛かって来る」みたいな事を
Roger Hui氏が書いていたが, 結局 c. の実装は取り下げられて LAPACK addon を
使って下さいという事になった経緯がある(実際Jのデモの eigenpictures は
そうなっている)から, シビアな行列演算は LAPACK を使うのが現実的かも
(LAPACK は BLAS を下請けで呼ぶ)。
+/ .* の special code によるサポートも浮動小数点/複素数型については
J R5.04 が最新の更新のようだし(+/ .* 以外の多くの f/ .g
例えば +./ .*. 等は LAPACK に無いのかも知れないが)。
欲を言えば lapack.dll/.so/.dylib がある時はJが自動的に橋渡しをして
くれると楽なのだがデータ以外のパラメータの選択とか大変そうだしなあ。
まあ, 家庭での栄養計算みたいな小規模な行列演算とか色々な f/ .g を
試すのには今のJで良いと思います。
ところで「チューリング完全なJ言語では」って対比の仕方は, Rが
チューリング完全では無いって事ですか? それはありえないんじゃないかと。
P.S.「アイバーソンからの電話」の件は最近の話ではありませんので, 心霊電話や
夢枕の話だと誤解しないようにw。
>>66 レス、どうもです。
> ベンチマーク乙。どのくらいの差が出たか情報きぼんぬ。
J
1,500×1,500 15秒ほど
5,000×5,000 5分ほど
R(quad core)
1,500×1,500 一瞬
5,000×5,000 10秒ほど
15,000×15,000 5分ほど
でした。15,000×15,000くらいのところでメモリ使用量が4GBになったので、
Jだと4GBのメモリを積んでも恩恵が受けられないなと思ったのでした。
最初はMARS2000で5,000×5,000の計算をやってみたのですけど、
こちらは答えが表示されるまで待てませんでしたw
1,500×1,500だとExcelでも(自動再計算をオフにすれば)現実的な時間で答えが出てきました。
速度では
MARS2000 < Excel2007 < J < R
になるようです。
MARS2000は未成熟のフリーソフトなので仕方がないのかも知れません。
IBM製汎用機用のAPL2だったらかなりシビアな用途に使われているでしょうけど、
趣味だと触る機会などは一生得られないでしょうね。
> Roger Hui氏が書いていたが, 結局 c. の実装は取り下げられて LAPACK addon を
Jでも出来るんですね。
使い方もインストールの仕方も分からないですけど、
LAPACKの関数名で直接呼び出すのですか?
> まあ, 家庭での栄養計算みたいな小規模な行列演算とか色々な f/ .g を
> 試すのには今のJで良いと思います。
行列演算も微妙に使わなかったりします。
最初はRで+\と同じ効果を得るのに、三角行列との積を取っていたのですが、
調べてみると、cumprodという専用の関数がありました。
(中身はC言語による単純なループでした。)
> ところで「チューリング完全なJ言語では」って対比の仕方は, Rが
> チューリング完全では無いって事ですか? それはありえないんじゃないかと。
for,while,if,再帰がありますから、もちろんチューリング完全ではありますけどね。
ただ、Rらしい(APLやJから受け継いだと思われる)apply関数を使った記述では、
チューリング完全にはならないと思うのです。
+/、×/は、Rでは、sum、prodという単独の関数
+\、×\だと、cumsum、cumprodです。
これらを各行、各列に対して適用するのにapplyを組み合わせるところでおしまいです。
任意の関数に対して、/や\が使えるところまで行かないのです。
69 :
デフォルトの名無しさん:2010/11/30(火) 00:10:42
\(^o^)/オワタ
↑Jのフレーズに見える。
エラーになるけどさw
73 :
72:2010/12/23(木) 23:25:13
>>72 > あと天下のMorgan StanleyがAPLの処理系を公開している。
>
http://www.aplusdev.org/ Ubuntu10.04のソフトウェアセンターでインストールできた。
1.xemacsを起動
2.Meta-x a-minor-mode
3.F4キーでインタプリタ起動
4.xemacsのメニューでフォントをKAPLに指定
5.C-c rでρ、C-c iでιなどを入力
一応、APL記号の入力表示もできた。
ちゃんと動くぞヤッホー。
74 :
72:2010/12/24(金) 22:11:07
>>65と同様、A+でも5,000×5,000の行列積を計算させてみた。
APLでは
b←a+.×a←(x,x)ρ(?(x*2)ρx)÷x←5000
5分ほどかかった。スピードはJと同じくらいみたい。
Morgan Stanleyは、これを業務に使っていたのかな?
これをオープンソースで提供するってすごいような気がする。
>>72 はてなの記事
>APLという言語そのものがボトルネックとなって
はどう言う意味なんだろう?
>>75 amazonで本を買ってみました。
正月に読むつもりです。
APLの欠点について、
「ループが必要になるプログラムの場合、
少なくともコンパイル言語の処理スピードを基準にすると、
ほとんど停止しているといってよい状態に陥ってしまうのだ。」
との記述がありました。
A+は、
「今もモルガン・スタンレーの一部のアプリケーションに使われている。」
のだそうです。(ほとんど使われていないという意味?)
言語の表現能力とかの問題じゃなかったのか。
単にスピードが問題なら、金持ってるんだしコンパイラでも作ればよかったような気が。
>>77 インタプリタであることが問題だったという著者の解釈が当を得ているかはわからない。
メモリ不足という記述もあった。
APL/J/Rなどの配列処理言語がメモリをバカ食いするのは、このスレの住人なら心当たりがあると思う。
自分にはこっちの方が問題だったように思える。
あと、APL原理主義のマネージャーが、
ループ使うより必要な処理を記述しないほう方を選んだという記述もあるw
このスレの住人なら、その気持ちとか想像できない?
ループ書くくらいならプログラム書かないほうがましだとか思わない?
ましてやハーバード大学でアイバーソンにプログラミングを習った学生は、
最初に学んだ言語がAPLだったらしいし。
謹賀新年
今年のJの運勢は!
>>78 まあ読んでないんでなんとも言えないけど、目的(金)より手段(APL)を優先する人間が
ウォール街にも居るというのは意外な気が。
>>80 「必要な計算」は、実は「リスクの評価」のことだから、
「計算不可能でした」という結論が都合良かったかもしれない。
シナリオの数だけループを繰り返すか、シナリオの数だけ大きな配列を作るか。
APLの文化では後者が推奨される。
他の要因もあるのだろうけど、微妙なところでAPLは戦犯認定されてしまうかも。
バージョンアップ間近あげ。
J01 Beta
J701a is available 7 Jan 2011 for all platforms.
This is a near final release and the beta designation has been removed.
The really final release will be moved from this beta page to the stable page in the next week or so.
J701 Release Highlights and Overview
The JFE is dead, long live the JFE!
701 is a major release (6 to 7). Minor releases (601 to 602) avoid changes which break applications.
Major releases introduce incompatible changes if there is sufficient long term benefit.
701 J Engine (JE - J Language implementation) changes are incremental and compatible.
701 J Front End (JFE) changes are revolutionary!
Previously the primary JFE was based on Jsoftware's proprietary WD (window driver).
WD was built on Windows API and was refined and polished over more than 15 years.
And for 10 years Unix users had a WD Java port.
701 abandons WD.
There is risk as WD was a mature product central in so many ways to J.
The replacements are as far from polished as only software version 1 can be.
With your patience and contributions we believe the rough will soon be polished and WD will be just a fond memory.
One significant difference is that WD was a closed and proprietary system implemented in C++ and Java.
The new JFE's are open and are implemented in J and based on open products and industry standards.
GUI周りが完全に変わるのか。。。
自分で作ってるスクリプトはソースに必要な設定を書くようにしてるから問題ないが。
まあ、これを機会にGTK+とかweb programmingの勉強をするのもいいかも知れない。
今でもJ504をWin98Second/9821Xc16で使っている訳だが...(笑)
APLなら、
(0=3|x)/x←( ̄1+ι1+9)
▲△△▲いまさらQUICK BASIC▲△△▲
>>
http://hibari.2ch.net/test/read.cgi/tech/1104072815/30 > BASICの最大の利点は、エディタと実行環境が一緒くたな所にある。
> 100 DEFINT A-Z
> 110 FOR I=0 TO 9 SKIP 3
> 120 PRIN I
> 130 NEXT
> run
> Syntax Error in 120 // エラーメッセージ適当w
> Ok
> 110 PRINT I
> run
> 0
> 3
> 6
> 9
> Ok
> この手軽さは今見てもすごくね?
+/や×/に相当するものは、伝統的な数学の記法ではΣとΠになりますね。
そして、それ以外の演算に対しては固有の記号は用意されていない。
Iversonの記法の/は、任意の演算に対してこれが拡張されている。
この拡張が必要なものだったかどうかには疑問符を付くかもしれないですね。
今日始めたので検索したらスレがあったw
まだまとめwikiとこのスレみただけの知識だが
fold /
filter (a cmp b) # b
無名関数は
>>5 >>48 mapはどう書けばいい?
フック(単項)はSコンビネータ
フォーク(単項)はArrowだね
floor関数が組み込みにあるのをみるとなんか感慨深い
ああ、mapはf arrayでいいのか
まあ、learning J をざっと流し読みすれば大まかな姿がつかめると思うよ。
>>88-89 lisperの人ね。
Rのスレでは、なぜかRとschemeの類似点が強調される。
しかし、lispを使わない自分にはAPL系の言語にしか見えない。
floorとceilingってIversonが提唱したものだったんだ。
知らなかった。
HPやTIの電卓には普通にある。
消費税の切り捨てとか結構便利。
俺はバッカス先生のFunction Level Programmingが試せて
実用性もある言語ってことで使ってるけど、そっち方面からの
侵入者は少ないんだろうなw
>>93 > Function Level Programming
Wikipediaの日本語版にも載ってない概念。
翻訳して載せない?
variable-freeって、変数使わないってこと?
Jってそんなパラダイムの言語なの?
今までAPLの一方言みたいなイメージしかなかった。
APLは←(代入)とか→(goto)とか見るからにダサいけど。
wikipediaに書いてるのは百科事典的要約のようだし、あれを訳して
読むよりはバッカス先生のチューリング賞受賞講演を読む方がいいと思う。
(共立からでてた「ACMチューリング賞講演集」に翻訳が載ってる。)
Jでどうやってfuction level なスタイルで書くかはlearning Jのチャプター
8〜11、14、15を読めばいいけど、結構前のチャプターの内容を
引用してるところ多いし、最初から読んだほうがいいと思う。
まあ、同じ人間がデザインした言語だけど、APLからJへ乗換える人
向けのチュートリアルとかアドバイスとかあるみたいだし、結構
違うんだろうな。
>>95 > (共立からでてた「ACMチューリング賞講演集」に翻訳が載ってる。)
面白そうな本を紹介していただきました。
工学部のある大学の図書館なら置いてあるという次元の本ですね。
'66〜'85なら、'79のIversonも含まれていますね。
他、ミンスキー、マッカーシー、ダイクストラ、クヌース、
ニューウェル、サイモン、コッド、ケン・トンプソン、リッチー、ヴィルト
誰でも知っているビッグネームが並んでます。
アイバーソンの講演も入ってた記憶が。
>>96 Haslellは知らんけど(GLSも知らない。人?)、Jで引数なしで書くのはそんなに難しくないと思う。
読むのはアレだが、それでも解らん定義があったら、コンソールに食わせるとBOXに入った形
で返してくるんで、それ見ればたいてい読める。
その動詞がとる引数の次元(J用語では"rank")だな。
0〜2はそのまんまの意味で、_は無限大(どんな次元の引数でも受付ける)
順番は(単項の場合)(二項の左引数)(〃右引数)の順番だったと思う。
で、そう言うのを定義するのに何の意味があるかというと、例えば3次元の引数を1次元の
引数を受付ける動詞に評価させようとすると、Jは自動的に引数を1次元の配列にバラして
その動詞に食わせる。これは(多分)全ての動詞に適用されるんで、オーバーロード
と言うよりは、Jそのものの仕組みとして覚えたほうがいいと思う。
詳しくはLJ(learning J)のチャプター7を見れば分かる。
(2&* 1&+) i.10とか、想像を超えた動き
これは 2&* が 二項動詞になってるのが罠だな。
x 2&* y は2&*をyにx回適用するって意味になる。
例えば、
0 (2&*) 3
3
1 (2&*) 3
6
2 (2&*) 3
12
>>100 1足して2倍する動詞ということなら
2&* @ (1&+) i.10
2 4 6 8 10 12 14 16 18 20
とか
(2 * 1 + ]) i.10
2 4 6 8 10 12 14 16 18 20
かな。
>>100-103 該当の章読みました&PDFはないのかと思ってたので助かりました
(2 * 1 + ]) i.10は思いつかなかった、解説ありがとう。
ユーザ定義の動詞へ与えるべき適切なRankだとか
片方がdyadicな動詞として利用されることも考えて
@:と&:を使い分けるといった辺りは、慣れないと難しそうな感じ
@と@:の違いも微妙なところだし
ifの代わりに`と@.を使うのがJ的なのかなとfactを習作
(*$:@:<:`1:@.(=1:))9
(3 :'*/+/\y$1')9 NB.再帰を直接使わない版
ググったら
(*$:@:<:)^:(1&<)9
が出てきて`すら使われてなかった
短いのを探してみたが
fact=.*/@:>:@i.
とすると
fact 8 9
が大変なことになるので
fact =. */@:>:@i."0
とする必要があるね
(*$:@:<:)^:(1&<)も同じ弱点がある、動詞の設計は難しいな
ランクはほとんどの場合、"0にしとけば大丈夫な気がしてきた
>>102は
>>25にも同じ話が出てた。
Learning Jには10.3.4に
x (u ^: w) y means ((x&u) ^: w) y
と、さらっと書いてある
ちょっと@:の左右逆のやつがほしくなったのだが
q =. @:~
Q =. 4 : 'y @: x'
((2&+) Q (2&*)) 3
などはうまくいかなかない
rp =. ^~はうまくいくのに違いがまだよくわからない
それにしてもLearning Jは思ってたよりも大分楽しいw
たまに突き放されるが、とても良く書いてあって安心して読める
>>25も
>>102も俺が書いたんだけどな。
1年でx(m&v)yの意味を忘れてたのは秘密だw
Q =. 4 : 'y @: x'
は、
Q =. 2 : 'v @: u'
とすれば多分うまく動く。
: の左引数は定義する関数が取る引数の数と種類によって変えなければならない。
上のように2項で動詞を引数に取る場合は、2にする。あと、動詞を取りうる引数のローカル名は
左引数がu、右引数がvとなる。
この辺は、LJのch.12,13あたりに書いてあると思う。
まあ、この辺はJのアドホックなところがチラチラして、読んでてあまり楽しくないんだが。。。
>Jのアドホックなところがチラチラして
これは身の程を知らない書き方だなw
俺みたいな半端なのがみたらそう見えるだけで、ちゃんとした奴が
見ればスッキリまとまって見えるのかも知れない。
Jでのビット処理
-.はブール値を意識して作られているみたいなので
1-yと定義されてるが
C言語の~を同様に表記すると
-1-yなので
Cでは~(-10)は9、-(~10)は11
Jでは-. - 10は11、- -. 10は9
となってしまうのに気づいた
>>110 > 自分みたいにBNFぐらいでしか知らない人は多いんじゃなかろか
子供時代にBASICに触れて、学生時代にC、PASCALに触れた古い人間なら、
Fortranの設計者という認識だと思う。
自分はラムダ算法について理解していないから、日本語で読んでもあまり理解できない。
(情報系の学科出ている人はこのあたりを基礎知識として持っているんでしょうね。)
チューリングマシンについてだけ、
「状態」がBASICの「行」で、「無限長のテープ」がBASICの「任意長の配列」に相当する
というアナロジーで捉えている。
バッカス講演の導入部には以下のようなことが書かれているのかなと思った。
BASICのような手続き型言語は表記の自由度が高すぎて問題があったから、
構造化という制限された記法が導入された。
ラムダ算法も、表記の自由度が高すぎて問題がある。
関数型言語にも、より改善された表記法が必要だ。
APLには、内積、外積、reduction("/"のこと)が実装されているけど、それだけでは十分ではない。
全体として手続き型言語のままだ。
APLでは→(goto)を使わなければならないのだけど、
Jではフォーク、フック、トレインで行うということかな?
>>111 Cの「~」相当はこっちだと思う。
B =: 26 b.
B - 10
9
- B 10
11
>>112 なるほどFORTRANの人ですか
FORTRANは全く触ったことがないですが、
数値計算は超枯れてる、と教授が言ってました
しかし、λを学ぶ大学ってのはかなりいいところなんじゃないでしょうか
情報系でしたがそんな講義など無く、自分は独学です
基本的なルールさえ覚えたら、わりと読めるようになりますよ
APLもJを覚えたら少し触ってみたいです
gerundのボックス表記は、
λの表記の一種のDe Bruijn Indexと1:1対応してる気が(逆順)。偶然かも?
Sコンビネータはλλλ3 1 (2 1)。0-indexにして2 0 (1 0)
それぞれ2(λの数-1)から引いて(0 2 (1 0))
func =. *`(1&+)`[
(func @. (0 2;1 0)) 10 NB.Sコンビネータ(gerund)
(* (1&+)) 10 NB.Sコンビネータ(フック)
>>113 ありがとうございます
ttp://www.jsoftware.com/help/release/bdot.htm bit処理はand/or/shiftしか無いのかと思ってました
もう、お手軽ビット計算インタプリタを探さなくて済みます
>>114 > 数値計算は超枯れてる、と教授が言ってました
バッカス講演から30年経過しているわけですけど、
結果はむしろFORTRANの圧勝だったのかもしれません。
LAPACKがFORTRANで記述されていて、
そのLAPACKに処理を投げるRは、APLやJより高速なのですから。
RでもLAPACKに処理を投げない部分はCで書かれている。
でも、この部分はマルチコアCPUの恩恵もGPUの恩恵も受けられない。
FORTRANはCすら超える成功を収めているんじゃないかと思っているところです。
>>104 「i.」に1,2, ... ,n のリストを与えると
1 x 2 x ... x n の多次元配列ができる。
ということはこの配列の要素数はnの階乗かな?
f =:3 :'# , i. >: i. y'
f 7
5040
! 7
5040
そうなっている、しかし10までしか使えない。
>>116 12!<2^32<13!なんで4バイトの整数だと、表せる自然数の階乗のmaxは12!
i.がスタックを使うならばもっと小さい値でオーバーフローする
>>118 祝!
A+に続く2つめの快挙。
正統性から言って、JsoftwareはMorgan Stanleyより上だ。
>>118 > これでARMでも動くようになったらうれしい。
iPodやAndroid端末で使えるようになれば良いと言う意味ですよね?
現状では遊べるアプリが少なすぎます。
スルーされて哀しいw
今気づいたけど、スレが立ってもう1年以上経過してるんだな。
J9って知ってるかい?
情け無用でさらに複雑化するんだな!
ネットブックを買ったので、NARS2000の最新版をインストールしてみたら、
キー配列がus&uk決めうちになっていたorz
APLはIBMがフリーで出してたDOS/V版のを少し齧った(というよりなめてみたw)
程度なんですが、それよりは強力なんですか?
>>126 NARS2000は、教科書のAPLより拡張されていて、APL2やJの機能が取り込まれている様子。
遊びには十分だけど、仕事に使えるような完成度には達していないと思う(最新バージョンが0.0.2.22)。
一方でIBMのAPLは、Jが登場する遙か以前に汎用機で実用に供されていた。
しかし、DOS/V版には640KBの壁があるだろうから、そのままで実用にならない点はNARS2000と同じ。
A+なら、Moran Stanleyが自社の業務のために作ったものだから、実用的にも十分なものになっているハズw
anarchy golf にBig primes という1399999901番目から1400000000番目の素数を
表示する問題がでた。
J言語でやってみたが、制限時間3秒では半分ぐらいまでしか計算できないようだ。
wd@>4&p:^:(<100)32416187567x
時間絡んでくると処理系がインタプリタな言語は辛いんじゃないかと。
JでCGIスクリプト書こうと思ってレンタル鯖にJ入れようとしたら、
鯖のOSがBSDだった。死にたい。
保守
tree indexの用法がいまいちわからない今日この頃。
アーサー・ホイットニーの手掛けた言語豆知識メモメモ(k/ksql/kdb+/q以外):
APL強化(rat APLとかか?)
Scheme実装(後にkに流入)
A+開発
Jのプロトタイプ
(Jソースのビョーキモなプリプロセッサマクロの元祖はUTF-8だと6{.'ホイットニー'でなく18{.'ホ(ry'←これがオチ。kx.com/q/c/c/k.h とか)
保守
最近いじれてないな。
復帰
138 :
デフォルトの名無しさん:2011/09/15(木) 00:13:16.08
n進数から10進数へはbを使って変換できますが
例 16ba0
160
逆はどうやったら出ますか?
またはこのn進数⇔10進数変換の計算ドリルはJ言語でできないでしょうか?
139 :
138:2011/09/15(木) 00:16:20.03
逆というのは10進数からn進数への変換という意味です
計算ドリルは進数変換の学習プログラムという意味です
教えてくれませんか?orプログラム作ってくれませんか?
help->Phrases contents->8. Numbers->C. Representationsから
d6=: (>:@<.@^. # [) #: ] NB.Base x rep of decimal integer y
例)
16 d6 65534
15 15 15 14
後はテーブル索くとかで各桁を文字に変換すればいいんじゃないか?
^o.^
だとJのフレーズとして動くなw
143 :
141:2011/09/15(木) 13:39:47.77
144 :
デフォルトの名無しさん:2011/09/15(木) 13:53:24.01
145 :
I., S.:2011/09/18(日) 08:52:57.98
>>138ー143 基数変換作ってみた。夫々 c:\test\pbp.ijs 等に保存して使ってみそ。
NB. filename: c:\test\pbp.ijs 基数変換
NB. cf. hibari.2ch.net/test/read.cgi/tech/1263291450/138-150 付近
9!:7 '+++++++++|-' NB. 箱描画文字を環境非依存に。ネット発信用。
NB. 名前空間(例はPersonalBasePracticeの積り)を切換えとくと後々便利かも。
cocurrent 'pbp'
NB. 続く
NB. filename: c:\test\pbp.ijs の続き(2/n)
NB.*i2bl dyad 整数yをx進表現の各桁(箱入)に変換
NB.*i2bs dyad 整数yをx進表現の箱入文字列に変換(36進迄)
NB.*i2ss dyad 整数yをx進表現の空白区切文字列に以下同文
i2bl=: (#.inv)each
i2bs=: {&(':'-.~;0 14{;:48}.a.)each@i2bl NB. Thanks!
>>32 i2ss=: ;:inv(on)i2bs
NB. 続く
NB. filename: c:\test\pbp.ijs の続き(3/3)
NB.*bl2n dyad x進表現の箱入数値リストyを数値に変換
NB.*bs2n dyad x進表現の箱入文字列yを数値に変換(36進迄)
NB.*ss2n dyad x進表現の空白区切文字列以下同文
bl2n=: #.every
bs2n=: do@(":@[,'b'"_,])every NB. J R6 以降は "_ 省略可。
ss2n=: (bs2n cutopen)
NB. 名前空間を <'base' に戻すが <'pbp' 内の語も引続き見付かるようにしておく。
cocurrent 'base'
coinsert 'pbp'
NB. filename: c:\test\pbptest.ijs テスト。loadd 'c:\test\pbptest.ijs' とする。
require 'c:\test\pbp.ijs'
16 i2bl 123 456 7890
16 i2bs 123 456 7890
16 i2ss 123 456 7890
16 bl2n 1 2 3;4 5 6;15 15
16 bs2n '123';'456';'ff'
16 ss2n '123 456 ff'
NB. filename: c:\test\pbpgen.ijs 練習問題作成算譜というかスクリプト
require'c:\test\pbp.ijs'
Ran=.2+?10#,:15,5#200
echo'Q1. i2ss の右側の10進数を,左端の数値を基数とした表現に変換せよ。'
echo'正解は,問題の行の上にカーソルを移動して2回ENTERを押すと表示される。'
echo;:inv@([,'i2ss'"_;])&>/@split"1":each Ran
echo''
Ran=.2+?10#,:15,5#200
echo'Q2. 左端の数値を基数とした ss2n の右側の表現を10進数に変換せよ。'
q=.''''"_
echo(":@[,' ss2n '"_,q,i2ss,q)&>/@split"1 Ran
echo''
実行例(一部改変):
] loadd 'c:\test\pbptest.ijs'
] 16 i2bl 123 456 7890
+----+------+---------+
|7 11|1 12 8|1 14 13 2|
+----+------+---------+
] 16 i2bs 123 456 7890
+--+---+----+
|7b|1c8|1ed2|
+--+---+----+
] 16 i2ss 123 456 7890
7b 1c8 1ed2
] 16 bl2n 1 2 3;4 5 6;15 15
291 1110 255
] 16 bs2n '123';'456';'ff'
291 1110 255
] 16 ss2n '123 456 ff'
291 1110 255
実行例2(抄):
load 'c:\test\pbpgen.ijs'
Q1. i2ss の右側の10進数を,左端の数値を基数とした表現に変換せよ。
正解は,問題の行の上にカーソルを移動して2回ENTERを押すと表示される。
8 i2ss 157 81 54 56 41
7 i2ss 59 62 196 48 80
...
2 i2ss 129 39 147 48 45
Q2. 左端の数値を基数とした ss2n の右側の表現を10進数に変換せよ。
9 ss2n '12 84 175 30 11'
16 ss2n '7 53 b 91 5d'
...
9 ss2n '180 18 211 144 182'
おしまい
がんばりましたがうまくいかないところが出てきます。
プログラムの文を
>>145の「NB. filename: c:\test\pbp.ijs 基数変換」
から
>>149の最後の「echo''」の文までをプログラムとしてペーストしてプログラムファイルとしました。
プログラムを置く所をC:\Users\○○\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\〜では
start menuにスペースがあるためj言語のウィンドウでは
「] loadd 'c:\〜\pbptest.ijs'を入力しましたが、スペースの前までしかまでしか読んでくれませんでした
それでドキュメントフォルダにプログラムを置いてみたのですが読見込めず
windows7x64でやってるのですが、メモ帳で書いてファイル名の中に.ijsをつけてたのですが
テキストにしかならんしため、関連付けをやっても駄目で
拡張子を表示する方法で.ijsにすることができました。
しかしそれでも読み込めませんでした。
「not found: c:/test/pbptest.ijs
|file name error: scriptd
| 0!:1 y[4!:55<'y'」
と表示されます。
それでpbptestのtestを削って
] loadd 'c:\test\pbp.ijs'でやってみましたところ読み込んでくれました
ところが
ss2n=: (bs2n cutopen)
NB. filename: c:\test\pbptest.ijs 繝・せ繝医Moadd 'c:\test\pbptest.ijs' 縺ィ縺吶k縲・
require 'c:\test\pbp.ijs'
の所で読み込みが停止し
not found: c:/test/pbp.ijs
|stack error: fexist
| fexist y
と表示され止ってしまいました。
153 :
デフォルトの名無しさん:2011/09/20(火) 01:56:36.88
そこで
] 160;16 i2bl 123 456 7890を実行すると
+----+------+---------+
|7 11|1 12 8|1 14 13 2|
+----+------+---------+ときちんと表示してくれました。
ここまで実行してたウィンドウはjconsole.exeで、そこで直接実行させてました。
今度はプログラムをウィンドウにコピペしたところ
同じ所で停止し「not found: c:/test/pbp.ijs」を表示し
ウィンドウズの小さな窓が出て
「jconsole.exeは動作を停止しました
問題が発生したため、プログラムが正しく動作しなくなりました。
プログラムは閉じられ、解決策がある場合はwindowsから通知されます。」が表示され
プログラムの終了ボタンが付いててクリックしたら終了してしまいました。
そこで今度は灰色jのj64-701conで動かしました。
先と同様にプログラムのコピペをした後、jconsole.exeの時と同じエラーを出して終了しました。
今度はウィンドウ内で] loadd 'c:\test\pbp.ijs'を実行してみました(j64-701conを起動させてます)
これもjconsole.exeと同じエラーをはいて終わりました。
結局jcopnsoleと同じ動作をしてくれました。
154 :
デフォルトの名無しさん:2011/09/20(火) 01:58:55.97
こんな同じことをわざわざ書く必要ないだろうと思われたかもしれませんが
この文章を書き始めたときはそれぞれ違う動作をしてたのでそれを書き込んでたのですが
僕がj言語入力ミスをしたのがわかったのでそのせいで違う動作をしてたわかりました。
ここまでくるまでたくさんのいろいろな無駄なことをしてしまいました。
話を元に戻しまして、例のコマンドの動作検証はまだ一コマンドしか試してないのですが
プログラムを最後まで読みこまなかったのですが、これでいいんでしょうか?
基本中の基本の話に戻ってしまいますが
j64-701(j701もですが)の黄色のjのj64-701brkと灰色のjのj64-701conと黄緑色のjのj64-701gtkと水色のjのj64-701jhs
の違いは何なんでしょうか?
よくわからず使ってましたが、どこかにこの基本的なことを教えてくれる日本語のサイトまたは英語のサイトはないんでしょうか?
http://www.jsoftware.com/のヘルプサイトにこの辺のことは書いてあったのでしょうか? 使い方がよくわからなくてあまりできませんでした。
英語の成績はひどすぎたので翻訳サイトを使わないと読めません。
155 :
すみません。:2011/09/20(火) 02:02:58.98
>>145-151さん
すみません。
大事なことを忘れてました、
こんな僕のために長いプログラムを考えてくださって
ありがとうございました。
156 :
デフォルトの名無しさん:2011/09/20(火) 05:07:37.48
>>150 最初のロード文以外は
実行できました。答えもちゃんその通りでました。
>>151は
大方実行できました。
ただload 'c:\test\pbpgen.ijs'は実行できませんでした。
not found: c:/test/pbpgen.ijs
|file name error: script
| 0!:0 y[4!:55<'y'
とエラーが出てしまいます。
以降はできました。これでよかったでしょうか?
Q1
8 i2ss 157 81 54 56 41
235 121 66 70 51
7 i2ss 59 62 196 48 80
113 116 400 66 143
2 i2ss 129 39 147 48 45
10000001 100111 10010011 110000 101101
Q2
9 ss2n '12 84 175 30 11'
11 76 149 27 10
16 ss2n '7 53 b 91 5d'
7 83 11 145 93
9 ss2n '180 18 211 144 182'
153 17 172 121 155
157 :
デフォルトの名無しさん:2011/09/20(火) 05:44:48.38
ただ
> 正解は,問題の行の上にカーソルを移動して2回ENTERを押すと表示される。
がわかりません。
コピペすると
9 ss2n '180 18 211 144 182'
153 17 172 121 155
8 i2ss 157 81 54 56 41
235 121 66 70 51
7 i2ss 59 62 196 48 80
113 116 400 66 143
...
|spelling error
| ...
| ^
2 i2ss 129 39 147 48 45
と表示されます。ここでENTERキーを押すと次の行に
10000001 100111 10010011 110000 101101
と表示されした。
>カーソルを移動して2回ENTERを押すと
ってどういう状況を説明されてるんでしょうか?
変な動作になった理由がわかりました。
夫々は「おっとおっと」じゃなくって「それぞ」だったんですね。
それぞれを名前をつけて保存してって事は二つプログラム入ってたんですね。
>>149からは次のプログラムだったんですね。だから動かなかったんですね。
>>148も各行の「16」以下も設問だったんですね
なんか僕はずいぶんアホアホでした゚(゚´Д`゚)゚
>>138,141さんおは Re
>>152-157 役立ってるか逆に苦労させてるか心配です。自己解決された点も多い様ですが取り急ぎ。
【1】Jのアイコンまとめ(Win関係のみ)
JR7: jhsIDE(jhs.bat 水色) gtkIDE(jgtk.bat 緑) CUI(jconsole.exe 灰色) (黄色はjの実行を中断させる jbreak.bat) Win2K以降(但しgtkIDEは原則XP以降)
JR6: JwdwIDE(j.exe 水色) JwdpIDE(javaw.exe+j.jar/JavaRTE 赤) CUI(jconsole.exe) (黄色はjの実行を中断させる jbreak.bat) Win2K以降
JR5: JwdwIDE(j.exe 水色) JwdpIDE(javaw.exe+j.jar/JavaRTE 赤) CUI(jconsole.exe) jbreakなし Win95以降
JR4: JwdwIDE(j.exe 水色) WinのCUIなし jbreakなし 64bit版なし Win95以降
JR3: JwdwIDE(j.exe 赤?) Win3以降
【2】「正解は; 問題の行の上にカーソルを移動して2回ENTERを押すと表示される。」
ってのは、実は上記の内 JwdwIDE; JwdpIDE; gtkIDE での操作(jhsIDEでの操作は忘れた)。jconsole.exe/CUIでは仰る通り1行づつコピペして下さい。
本当はJの入門にはR6のJwdwIDEが適していて、R7は既習者やajax開発者向きかもです。R7のjhs/gtkIDEはすんなり導入できればめでたいが、トラブルにハマるとハードル高いかも。R6とR7は言語仕様に於いては殆ど違いなし。
【3】ファイルは全部で3つ: pbp.ijs; pbptest.ijs; pbpgen.ijs
それぞれ(スマソw)の始まりor続きには NB. filename: c:\test\自分ファイル名.ijs と書いてある行がある。
160 :
デフォルトの名無しさん:2011/09/20(火) 08:18:05.13
>>158-159 ありがとうございます。
時間が出来たときに確かめてみたいとおもいます。
アイコンの色の質問に対する返答がハズれていたのは洩れも自覚していたので、古くなったが判断材料になりそうな記事を引いて私訳してみますた(対訳)。
JODの開発者John Baker 2011-2-12の記事:
JODのページ/ソフトウェアカテゴリの書庫
J 7.01 が今や貴方のブラウザで動く
The JOD Page/Archive for the 'Software' Category
J 7.01 Now Playing in your Browser
(続く)
J言語使いにとっての激変が進行中だ。J R7.01のリリースに当って、JSOFTWARE社は、既に定着している2種のユーザ向けIDE[JwdwとJwdpのこと]を廃止して、替りにGTKとウェブブラウザに基づいた新機軸の利用者界面に入れ替えるという冒険に打って出た。
皆さん良くご存じの通り新ソフト必ずしも改良ソフトならず(刷新は冒険でもある事をお忘れなく)。しかし今回のは意義ある変更である。
(続く)
Big changes are afoot for J programmers. With the release of J 7.01 JSOFTWARE has taken the risky step of deprecating two well established user IDE's and replacing them with brand new GTK and Web browser-based interfaces.
As we all know new software is not necessarily better software, (remember that risky bit), but in this case the changes make sense.
[スクリーンショット]
J 7.01 JHSが動作している画面(ブラウザとしてクロームを使用)
J 7.01 running JHS on Chrome
(続く)
今迄のJ言語処理系は大いにWin指向だった。成程Jは十余年に亙りUNIX/LinuxやMacの系列で完璧に動いて来たとは言え、IDEがWinに偏向していたことは否めまい。
これはJSOFTWARE社も十分自覚していて、Javaベースの可搬IDE[Jwdp]にも、WinIDE[Jwdw]と同等の機能を整備しようとして来た。だが不幸にも、JavaIDEはJavaそれ自身と同様、期待に十分応えられなかった。
(続く)
165 :
I., S.:2011/09/21(水) 19:51:33.09
Early J systems were largely Windows-Centric. Yes, J has run perfectly well on strains of UNIX/Linux and the Mac for over a decade but I think it's fair to say that J IDE's were biased toward Windows.
JSOFTWARE was well aware of this and tried to offer the features of their Windows IDE with a portable Java based IDE. Unfortunately the Java IDE, like Java itself, failed to live up to expectations.
(続く)
166 :
I., S.:2011/09/21(水) 19:58:39.66
絶対多数ではないにしろ、LinuxやMacほかの非Win環境でJを動かすプログラマは今や大勢居るのだから、彼らを軽視する理由はない。
それでは「この開発環境はWin/Linux/Mac/スマホ/他多くのIT機器できちんと動き、最先端の技術と機能を具え、環境間の互換性もバッチリです」なーんていうIDEをどうにかすれば提供できるもんだろうか……。
唯一無二の答えなど無いから、JSOFTWAREは2通りのIDEを用意するという賢明な決定をした。JHSとJGTKである。
(続く)
167 :
I., S.:2011/09/21(水) 20:05:31.34
Now that the many, if not the majority of J programmers, run J on non-Windows, (mostly Linux and the Mac), systems it makes no sense to treat them like second class citizens.
So how do you provide a _state of the art portable user IDE_ that runs well on Windows, Linux, the Mac, smart phones and various IGadgets. There is no single answer so JSOFTWARE wisely decided to offer two IDEs: JHS and JGTK.
(続く)
168 :
I., S.:2011/09/21(水) 20:11:54.62
[以下は輪を掛けて手抜き&超訳w]
従来のWinIDE似なのはJGTK[JwdwにもJwdpにも近い]。JGTKはLinux寄りだが他環境でも動く。
JGTKの起動は遅いが起動してしまえば[従来のWinIDEと]パフォに顕著な違いは感じられない。エディタは従来のWinIDEのより優秀。初版にしては上出来。皆で鍛え上げて行くべし。
(続く)
The JGTK IDE is a desktop application that is similar to the older Windows IDE. JGTK is somewhat biased toward Linux but this his doesn't mean it doesn't work well on other systems.
I run it on WinXP and Win7 machines all the time. JGTK takes longer to load than the older Windows IDE but once it's up and running I don't see significant performance differences.
The JGTK editor is superior to the older Windows editor and I love the side bar and UNIX style code tagging. For a first version JGTK is a nice bit of work that will only improve as J programmers and users pound away on it.
(続く)
JGTKは上出来。対してJHSは根っから過激。JHSはデスクトップでなく[自PCのスタンドアロンアプリ的にふるまうのをやめ]貴方のブラウザをJ開発環境にする。最初は私も「う〜んどうなんだろうなコレ」と思ったがグーグル社のクロームと併せると効果抜群だった。
旧WinIDEより速い。オーバヘッドも小さくてブラウザを通しているのを屡(しばしば)忘れる。優れたユーザインタフェイスというものはユーザにあれこれ働き掛けず、存在を感じさせないのだ[超訳]。
(次回最終回)
JGTK is nice but JHS is radical. JHS abandons the desktop and turns your favorite web browser into a stripped down J programming environment. I was skeptical when I first heard about JHS but it has won me over.
JHS is amazingly effective under Google's Chrome browser. It comes up in a flash and is as zippy or faster than the older Windows IDE.
Even better this webby goodness imposes minimal burdens. The JHS web server is often one of the smaller processes running on my machines.
I have been doing the bulk of my JOD update work with JHS and I frequently forget I'm using a browser! _Good user interfaces, unlike politicians, get out of your face!_
[以下割愛スマソ>John Baker]
(ひとまず糸冬)
172 :
I., S.:2011/09/21(水) 22:21:21.87
あとこれも。Jのホームから。こんなに勇ましいとは思わなかった。
"安定版のダウンロードページ"
J701とJ602は共に安定版である。J701には特筆すべき改革が導入されており、新参ユーザであろうが古参であろうが、未開拓技術の最先端での挑戦を望む者向けである。
J602は資産継承重視のユーザと、事を(特にウィンドウズ環境に於いて)緩徐に運びたいと望む者向けである。
www.jsoftware.com/stable.htm
"Download Stable"
J701 and J602 are both stable releases. J701 introduces significant change and is for users, new or old, who want the challenge of the bleeding edge.
J602 is for legacy users and those who want, especially in Windows, a gentler experience.
翻訳乙
そういやJ7は取ってきたきりで使ってないな。
174 :
GUIにしてみますた:2011/09/24(土) 06:56:13.43
NB. filename: xbase2ch.ijs hibari.2ch(ry)tech/1263291450/138-
require'c:\test\pbp.ijs'
XB2cF=: 0 : 0
pc xB;
xywh 6 6 86 12;cc Toi static;
xywh 6 18 86 12;cc Kai edit;
rem form end;
)
xbrun=: 3 : 0
'Suru Odai'=: wdselect 'DoreniSIRU?';<'T)o 10';'F)rom 10'
if.Suru do.
wd XB2cF
syutudai''
wd'pshow' end.
)
xB_cancel=: wd bind'pclose'
xB_Kai_button=: 3 : 0
if. A -: Kai do.
wd'set Kai'
syutudai'' end.
)
syutudai=: 3 : 0
'B D'=: ":each t=. 2+ ? 15 19
X=: i2ss/ t
'A Q'=: Odai{ (D;X,'(',B,')=?') ,: X;D,'=?(',B,')'
wd 'set Toi *', Q, Zuru#A
)
Zuru=: 1
xbrun'' NB. Kokomade
175 :
取り説1/2:2011/09/24(土) 07:06:18.96
xbase2ch_man=: 0 : 0
xbase2ch.ijs: J R6までの Jwd で基数変換の練習を行うGUIアプリ。wってレベ(ry
起動法:
load'xbase2ch.ijs' … IDE内から
j.exe xbase2ch.ijs … コマンドラインから。IDE併走
j.exe -jijx xbase2ch.ijs … 単独アプリモード。IDE無
javaw.exe -jar j.jar xbase2ch.ijs … JavaRTE上で実行
尚、以前のレスの c:\test\pbp.ijs が必要。パスは適宜直して下さい。
使い方:
1.起動するとPopUpが出て、どれに汁? T:10進への変換 F:10進からの変換
と訊くので選ぶ。
2.Formが開いて出題。正解を入れると次出題。
(続く)
(続き)
3.最初は正解も晒すモードになっているので、勝手が分ったら
ソースの Zuru=:1 を Zuru=:0 にするか、IDE配下ならIDEのijx窓に移って
ダイレクトに Zuru=:0 と打ち込むと直後の出題から隠す。
4.余計な空白・全角・英大文字は不正解となる。
5.ESCで終了(右上の「[x]閉じる」ボタンはハンドラを略したので効かない)。
6.尚、ソースをIDEのエディタで開きalt+E EでFormEditorを起動すると
出題・回答Formの体裁を貴方好みに変えられます。
)
いや、だからその7万てのが高いか安いかって話だよw
さて、今年のJ界隈の運勢は…
learning JのAppendix 1: Evaluating Expressionsを読んでるが、なんかややこしい。
で、↑のスレをざっと読んでみたが順調に行けば2月の早いうちにも
android marketに上げるらしい。
>>184 そのサイトのギャラリーをながめていたらpov-rayを思い出した。
187 :
デフォルトの名無しさん:2012/03/12(月) 22:00:38.89
>どう思う?
MSの回し者乙
と思う
190 :
I., S.:2012/03/18(日) 08:43:13.52
Anarchy golfにK言語が入った模様。Kのオープンソース版konaと言う実装らしい。
Kona is the open-source implementation of the K programming language.
If you don't know APL, then this is the place to start.
K is an ASCII-based APL. KDB (or Q) is the popular database software built on top of K.
K was originally designed by Arthur Whitney and Kx Systems.
Kona is unaffiliated with Kx.
オリジナルと"open-source implementation"の間に、
埋められない絶大な差があるような気がする。
A+とNARS2000くらいの差が。
元々商品だったJとは比べものにならないのじゃないかと思う。
>>193 >>67,74に挙げた話を繰り返しているだけですよ。
A+がJと同等のパフォーマンスを発揮したのに対して、
NARS2000はエクセルにも劣るものだった。
AtCoder Regular Contest #003
の簡単な問題をJでやってみた。
A: GPA計算
echo 0j10":(([:+/'FDCBA'i.])%#);}.<;._2 stdin''
B: さかさま辞書
echo@>(/:|.&.>)}.<;._2 stdin''
さかのぼって AtCoder Regular Contest #001
の問題もJでやってみた。
A: センター採点
echo(>./,<./)+/"1=;}.<;._2 stdin''
B: リモコン
echo(<.@(%&10)+0 1 2 3 4 1 2 3 3 2{~10&|)|@-/".}:stdin''
最近コード書いてないなぁ。
theory of array関係の論文もサワリだけ読んで放りっぱなしだし。