Julia Juno Jupyter part1 [無断転載禁止]©2ch.net
x = UInt32(0x12345678)
a = pointer_to_array(convert(Ptr{UInt8}, pointer_from_objref(x)), 4)
a[2] = 51
println(@sprintf "%08X" x) # 0x12343378 immutable TT
a::UInt16
b::UInt16
end
x = UInt32(0x12345678)
a = pointer_to_array(convert(Ptr{TT}, pointer_from_objref(x)), 1)
println(a) # [TT(0x5678,0x1234)]
a[].a = 0xaabb # ERROR: type TT is immutable type XX
a::UInt16
b::UInt16
end
x = UInt32(0x12345678)
# ↑ここまでは動く
a = pointer_to_array(convert(Ptr{XX}, pointer_from_objref(x)), 1)
# ↑インタプリタ環境だとこれを実行した時点で環境ごと落ちる (下へ行くケースあり)
println("reach here")
println(a)
# インタプリタの外から julia hoge.jl で実行したときは println(a) まで実行すると落ちる なぜでしょう?(unsafeなことしてるのは判ってるのですが・・・) なぜって自分でbitstypeでもimmutableでもないって分かっている書きぶりじゃん
その上で聞いているならソース読め へー Julia ってこういう壊れ方するのかー
julia> n = UInt32(3)
0x00000003
julia> p = Ptr{UInt32}(pointer_from_objref(n))
Ptr{UInt32} @0x06e474f0
julia> pointer_to_array(p, 1)
1-element Array{UInt32,1}:
0x00000003
julia> UInt32(3)
0x00000003
julia> pointer_to_array(p, 1)[] = 9
9
julia> UInt32(3)
0x00000009 こうなってるのかー
気付かんかったわー
julia> e = UInt32(11)
0x0000000b
julia> f = UInt32(11)
0x0000000b
julia> p = Ptr{UInt32}(pointer_from_objref(e))
Ptr{UInt32} @0x06e47770
julia> pointer_to_array(p, 1)
1-element Array{UInt32,1}:
0x0000000b
julia> UInt32(11)
0x0000000b
julia> pointer_to_array(p, 1)[] = 17
17
julia> UInt32(11)
0x00000011
julia> f
0x00000011 インタラクティブシェルのヒストリーってどうやったら消せるん? ~/.julia_history 消したら解決しました! Cのunionと同じような機能ってreinterpret以外にないの? transpose と ctranspose って何が違うん? >>112
cはcomplex(複素数)のconjugate >>107-108
julia> 100
100
julia> 100 - 23
77
julia> 100 + 23
123
julia> pointer_to_array(Ptr{Int}(pointer_from_objref(100)), 1)[] = 119
119
julia> 100
119
julia> 100 - 19
119 # ← ここだけ納得いかない
julia> 100 + 19
138 納得いかないのが納得いかない
"100" - 19
→ 119 - 19
→"100"
→ 119 llvm使いたくない。gccではビルドできないの? C++AMPもそうだったんだけど
llvmがバージョンアップするとC++AMPの仕様も変わったりして
誰も安定してC++AMPを利用できなったので
C++AMPは消えたと思う
juliaがllvm使ってるのは嫌な予感しかしない llvmは安定して使うことよりもgccの妨害が目的っぽい部分があって
利用者は軽視(gccの足引っ張りが重要)
そんな印象がある >>118
C++AMP ってマイクロソフト主導だったんじゃないのん? >>111
manual/calling-c-and-fortran-code/
Struct Type correspondences
Packed structs and union declarations are not supported by Julia.
You can get a near approximation of a union if you know, a priori,
the field that will have the greatest size (potentially including padding).
When translating your fields to Julia, declare the Julia field to be only of that type.
...
In the future, some of these restrictions may be reduced or eliminated. reinterpretとBase.boxとどっち使うのが良いんですか? なぜ僕らはJuliaを創ったか
http://marui.hatenablog.com/entry/20120221/1329823079
ゆるいライセンスのオープンソースで、Cの速度とRubyの動的さが欲しい。
Lispのような真のマクロが使える同図象性のある言語で、
Matlabのように分かりやすい数学の記述をしたい。
Pythonのように汎用的に使いたいし、Rの統計処理、
Perlの文字列処理、Matlabの線形代数計算も要る。
シェルのように簡単にいくつかのパーツをつなぎ合わせたい。
チョー簡単に習えて、超上級ハッカーも満足する言語。
インタラクティブに使えて、かつコンパイルできる言語が欲しい。
(そういえば、C言語の実行速度が必要だってのは言ったっけ?)
イイね! マクロを入れ子で使ってるときの評価順が良く判らんな Juliaの継承システムってなんでgoみたいなシステムにしなかったんだろうな goはgoでアグレッシブすぎる気がするけど
C++とかJavaとか
結果的に抽象クラスとインターフェイスの関係が微妙になってしまったことを考えれば
Juliaの型システムは明確で合理的だと思う
あと多重ディスパッチが特徴に挙げられるくらいなので
ロジック・実装の散逸を防ぐ思想があるんだろう
具象型が継承不可な点は最適化の面でも有利に働くはず @timeとか@showとか便利すぎて逆になんでpythonにはないのかと悲しくなるレベル 一切カプセル化出来ないから無能を含む大規模プロジェクトには使えないな intをdepricated にして代わりに l->[parse(Int, s) for s=l] を使えって言ってくるのはマジで基地外じみてる 3次元の配列を効率よく初期化するにはどうすれば良いでしょうか? [f(I,j,k) for i=1:n, j=1:m, l=1:o]
Pythonとは訳が違う便利さ 添え字が 0 から始められるように設定変更ってどうするんだっけ >>140
安価ミスか?何を聞かれてるのかわからん >>141
マクロ使えば行けるけど見た目は良くないな
Juliaってcolumn majorのくせに多次元配列のconcatenation は左の添字からやろうとするの本当に謎 >>140
すまん、intをdeprecate にされたことがまず辛い。消すなら消すで同じくらい短くかける別の関数を用意してほしい
毎回これを書くのは嫌だし、自分でこれの別名をつけるのはなんか違う IPython - 対話的にPythonプログラミングができるコマンドラインツールです。とはいえ初心者だと何をどうしていいかわからないかも
Jupyter Notebook - IPythonをブラウザ上で実行するツールです(全然それだけじゃないけど) 。とっかかりとして一番のおすすめ。
様々なサンプルがこのツールのNotebook形式で配布されており、学習効率もいいです。
とりあえずVisual StudioとPycharmがIDEで, 前者はpythonに限定しないIDE,
後者はpython用のIDEですね. ※Visual Studioはpythonに対応してるとの事です.
アナコンダはパッケージのインストーラーで, IpythonとJupyterも一緒に
ダウンロードされますよね.
JupyterもIDEではないのですか?
IDEの定義によるんだろうけど
JupyterはIDEの条件を満たしてはなさそう
ノート機能が付いたEditorに近いのかな
私のとらえ方ではIDEは3ペイン・2ペイン構成のデスクトップアプリで
IPythonをブラウザ上で(シングルペインではあるが)IDE「的」に使えるのがJupyterですね
Anacondaにはpython用IDEデスクトップアプリのSpyderというものも入ってますので
インストール後両方起動されると、おおよその雰囲気の違いがわかると思います
Jupyter-IPython は Mathematica を目指してる。
Kernel + Notebook の構造。
IDE とはまた違うかな。 ジェネレータ式はトリッキーなマクロが要らなくなっていいな
PROGRAM_FILEはやっとか この調子で引数に_を使った時に部分適用になるあれもこないかな Julia0.5正式に出たっていうのになんだこの話題なってなさは 煽り抜きでダメだなもう
ガバナンスも利いてないしめちゃくちゃ
文法も思想もとっちらかったクソ言語に成り果ててる >>154
ほんまこれ。迷走しすぎて言語仕様めちゃくちゃ type Pos
x::Float64
y::Float64
end
Base.+(a::Pos, b::Pos) = Pos(a.x + b.x, a.y + b.y)
ってやると(a::Pos, b::Pos) is not a valid function
ってエラー吐くのですが、オリジナルの型用の演算子定義するにはどうすればいいのでしょうか? (+)(a::Pos, b::Pos) = Pos(a.x + b.x, a.y + b.y) こっちか
(:(+))(a::Pos, b::Pos) = Pos(a.x + b.x, a.y + b.y) >>160をやると普通の+が使えなくなり、
>>161をやるとsyntax: invalid function name ":+"
ってなりました…… import Base.+
.+(a::Pos, b::Pos) = Pos(a.x + b.x, a.y + b.y)
とか? 3ヶ月程前からPython+Numpy 覚えながら前から作ろうと思っていたプログラム書き始めていたのですが、
最近Juliaを知って日本語で書かれたドキュメント読み切って中身知ったら凄く綺麗で良い言語に見えてきて、
むしろPythonの方はダメな部分を補う為に無理やりNumpyをくっつけているようにすら見えてきたのですが、
その認識は間違ってないでしょうか?
書きかけのプログラムをPython+NumpyやめてJuliaを覚える方にシフトしようかある程度Pythonを覚えてきたこともあって悩んでいます。 Juliaは上手く統合されてると思うけど、まだ色々足りないでしょ
自分でバンバン書ける人ならともかく、覚え始めとかならPythonやっとけ disってるようには思わないな
正当な批判はちゃんと批判として受け入れるべき 配列が線形代数向けに整備されてる言語ってJuliaとRくらいのもんか? 配列を使って高速に内積とか行列演算とか出来るということ
C++のEigenとかPythonのNumpyにあたる機能がJuliaでは標準の配列でサポートされている そんなもん書いたら終わりじゃん。
宣言型だとか、原始再帰関数がどうとか言い出すならともかく。 >>178
いちいち自分で外積内積アダマール積、逆行列行列式特異値分解とかLAPACKラッパー書いていくの? >>177
勝手にCUDAってくれたりするってこと? >>182
最近の言語は大体色々楽するために発展して来てるのに、その発想はストイックすぎるだろ。俺はそれをD言語でやろうとして途中で面倒になってやめたわ。ライブラリの存在を全否定するような発想はC言語とFortranの世界の中でお願いします。
それに線形代数よく分かってなくてもJuliaの関数を色々使ってみて理解が進むという側面もあるから、出来るやつが書いた使いやすい線形代数APIが標準で搭載されている言語は重要だと思うわ
ちなみにJuliaでのcudaのサポートはまだまだこれから
>>180
すまんが意味がわからんかった >それに線形代数よく分かってなくてもJuliaの関数を色々使ってみて理解が進むという側面もあるから
こんなとこで高卒自慢ですねわかります 線形代数の動きやどんな関数があるかは大学でもMapleやMathematicaで実際に動かして実習するというのに、それがJuliaに変わるだけで高卒自慢と捉えるのは数学ガチ勢か老害か効率悪いアホかただの煽り野郎かのどれかだな >>183
実装みてない関数で集計とかキチガイの所業じゃん。 166ですが、結局Julia漬けの毎日になってしまいました。
昔Cでアルゴリズムを書いて学んだのですが、それをそのままJuliaで書いて練習してます。いくつか言語の経験はあったのですが、Cの組み込みをやっていたのもあって、型をきちんと指定出来る上にCの構造体のように書けるのでとても扱いやすくて良いです。 >>186
オープンソースなんだから見ればいいじゃん >>186
おまえは自分が使ってるもののソース全部見てんのか? >>191
LAPACK使わないの?MKL使わないの?それで速くてまともなプログラムを一から十までちゃんと作って完成させられるのなら相当凄いな
でも今時は量子化学ソフトの開発者だって当然のように他人のコード混ぜるし、量子化学ソフト使ってる人は使ってるプログラムのアルゴリズムの詳細までは知らないことが多い。
数学の教授だってMathematicaの実装知らずに使ってるよ。統計の学者だってRの中身全部把握してる訳じゃない。
そもそも実験屋はコードが何かもよく分かってなかったりするけど出来合いのアプリケーションで集計して論文を書く。どこかで妥協して人を信用しないと新しいものを作れる段階に行けないことが多いから。
だから、実装見てない関数で集計するのがキチガイの所業だと思う方がキチガイだと思うぞ >>193
お金もらってるしね。
実験屋のデータを意味のあるものにするのが仕事だから。
Rの中身は全部読んでるし、割と枯れたものに修正入れて全部検証してるよ。
そんなのは実験屋であって、研究者でもないし、
研究者は実験屋でもない。
妥協と信頼は金で買うんだよ、普通の研究所って。
こんなとこでママゴトみたいな言い分聞くとは思わなかったな。 >>194
じゃあ一体何のためにこの世にRは存在しているの? >>196
Rを使って研究している計量経済学の教授で、Rの内部実装をちゃんと読んでない教授はキチガイ? >>194
この世にはシミュレーションソフトを回すことを専門とする教授が一定数いるんだけど彼らはGaussianの内部実装を全部読むのは無理という人ばかりだよ。彼らはキチガイ? >>197
知ってる限りの学者は、ソース読んでる。
マクロ系ばっかりだけど。
>>198
そんなもん「オペレータ」だよ。
活字拾うジョバンニと同じ。
ただしその人らが、Gaussianに限らず、方程式として書いたものを、所内のQCに投げて、オッケーですと確認する事を怠らなければ研究者だろうね。
大体は組み込みの関数やら標準ライブラリはオーバースペック。しかもバージョンアップある。
なら内製したほうがマシ。 >>199
大学の研究室にQCはいないよ。標準ライブラリの代わりを再開発してるような手数もないよ。めちゃくちゃ言うのやめてくれる? 標準ライブラリの存在意義を全否定する典型的なキチガイおるな
一時期C++スレに沸いてたのと同一人物か?