LLVM で動く Julia のお勉強
Python に少し似てネイティブの速さで動く素敵な関数型言語
http://julialang.org/
http://junolab.org/
http://jupyter.org/
関連
Pythonista のための Julia 100 問 100 答
http://bicycle1885.hatenablog.com/entry/2014/12/23/170745
Julia Juno Jupyter part1 [無断転載禁止]©2ch.net
1デフォルトの名無しさん
2016/02/12(金) 19:05:13.83ID:zhNvVfnf42デフォルトの名無しさん
2016/02/18(木) 19:42:32.50ID:AuqopEbQ 想像以上にアホの子かもな
julia> "あいう"[end:end]
"う"
julia> "あいう"[end-1:end]
ERROR: UnicodeError: invalid character index
julia> "あいう"[end-3:end]
"いう"
julia> "あいう"[1:end]
"あいう"
julia> "あいう"[2:end]
ERROR: UnicodeError: invalid character index
julia> "あいう"[2]
ERROR: UnicodeError: invalid character index
julia> "あいう"[3]
ERROR: UnicodeError: invalid character index
julia> "あいう"[4]
'い'
julia> length("あいう")
3
julia> length("1いう")
3
julia> ("1いう")[2]
'い'
julia> ("1いう")[end]
'う'
julia> ("1いう")[3]
ERROR: UnicodeError: invalid character index
julia> "あいう"[end:end]
"う"
julia> "あいう"[end-1:end]
ERROR: UnicodeError: invalid character index
julia> "あいう"[end-3:end]
"いう"
julia> "あいう"[1:end]
"あいう"
julia> "あいう"[2:end]
ERROR: UnicodeError: invalid character index
julia> "あいう"[2]
ERROR: UnicodeError: invalid character index
julia> "あいう"[3]
ERROR: UnicodeError: invalid character index
julia> "あいう"[4]
'い'
julia> length("あいう")
3
julia> length("1いう")
3
julia> ("1いう")[2]
'い'
julia> ("1いう")[end]
'う'
julia> ("1いう")[3]
ERROR: UnicodeError: invalid character index
2016/02/19(金) 09:48:06.21ID:hw/X0Y/j
>>42
# 文字列は文字の配列のように添字アクセスできます
"This is a string"[1] # => 'T' # Julia では添字は 1 から始まります
# ただし、UTF8 文字列の場合は添字アクセスではうまくいかないので、
# イテレーションを行ってください(map 関数や for ループなど)
# 文字列は文字の配列のように添字アクセスできます
"This is a string"[1] # => 'T' # Julia では添字は 1 から始まります
# ただし、UTF8 文字列の場合は添字アクセスではうまくいかないので、
# イテレーションを行ってください(map 関数や for ループなど)
2016/02/19(金) 09:52:08.93ID:hw/X0Y/j
Pythonの実行速度に満足できないあなたに
http://www.mwsoft.jp/programming/julia/python_to_julia.html
正直なところ、まだ足りないところも多い言語なので、
今の時点で飛び込んでもそんなに良いことはないかもしれません。
個人的には分析するデータの整形をさせたり、簡単なシュミレータを書き捨てる用途などで使っています。
適当に書いてもそれなりに速度が出るし記法もシンプルで書きやすいので、
Pythonよりも便利だと感じていますが、
ライブラリの揃いや信頼性などの問題で、前処理だけはJuliaでやって
肝心なところはPythonやRで、といった流れになることもしばしばです。
http://www.mwsoft.jp/programming/julia/python_to_julia.html
正直なところ、まだ足りないところも多い言語なので、
今の時点で飛び込んでもそんなに良いことはないかもしれません。
個人的には分析するデータの整形をさせたり、簡単なシュミレータを書き捨てる用途などで使っています。
適当に書いてもそれなりに速度が出るし記法もシンプルで書きやすいので、
Pythonよりも便利だと感じていますが、
ライブラリの揃いや信頼性などの問題で、前処理だけはJuliaでやって
肝心なところはPythonやRで、といった流れになることもしばしばです。
2016/02/19(金) 10:01:01.67ID:hw/X0Y/j
Pythonの実行速度に満足できないあなたに
http://www.mwsoft.jp/programming/julia/python_to_julia.html
これからJuliaを始める方へ
これからJuliaを始めようという方は、まずは下記ページに書かれているサンプルコードを眺めてみると、
どんな言語か理解できると思います。
Julia By Example
http://www.scolvin.com/juliabyexample/
統計関連のライブラリがどの程度揃っているかは、下記にまとめられています。
ちゃんとDataFrame的なものもあって、そこそこ揃ってはいます。
Julia Statistics
https://github.com/JuliaStats
入門書などの情報は出版されれば下記に掲載されると思う。(まだ入門書なんて存在しねーけどな)
Learning Julia
http://julialang.org/learning/
公式サイトのドキュメントも充実しています。充実し過ぎてどこから読めばいいのかわからなくなります。
Julia Documentation
http://docs.julialang.org/
あとは挙動でわからないことがあれば、ソースを読もう。
わかりやすいシンプルなコードなので、意外と簡単に読めます。
言語作者が書いたコードに触れておくと勉強になるしね。
JuliaLang/julia - GitHub
https://github.com/JuliaLang/julia
本当はもっと初見向きなサイトを紹介したかったんだけど、あまり見当たらない。
今の調子ならそのうち増えてくると思うので、
その手の本を書店で見かけるようになった時が始めるタイミングとしては良いんじゃないだろうか。
※本項は更新情報があれば適宜変更します
http://www.mwsoft.jp/programming/julia/python_to_julia.html
これからJuliaを始める方へ
これからJuliaを始めようという方は、まずは下記ページに書かれているサンプルコードを眺めてみると、
どんな言語か理解できると思います。
Julia By Example
http://www.scolvin.com/juliabyexample/
統計関連のライブラリがどの程度揃っているかは、下記にまとめられています。
ちゃんとDataFrame的なものもあって、そこそこ揃ってはいます。
Julia Statistics
https://github.com/JuliaStats
入門書などの情報は出版されれば下記に掲載されると思う。(まだ入門書なんて存在しねーけどな)
Learning Julia
http://julialang.org/learning/
公式サイトのドキュメントも充実しています。充実し過ぎてどこから読めばいいのかわからなくなります。
Julia Documentation
http://docs.julialang.org/
あとは挙動でわからないことがあれば、ソースを読もう。
わかりやすいシンプルなコードなので、意外と簡単に読めます。
言語作者が書いたコードに触れておくと勉強になるしね。
JuliaLang/julia - GitHub
https://github.com/JuliaLang/julia
本当はもっと初見向きなサイトを紹介したかったんだけど、あまり見当たらない。
今の調子ならそのうち増えてくると思うので、
その手の本を書店で見かけるようになった時が始めるタイミングとしては良いんじゃないだろうか。
※本項は更新情報があれば適宜変更します
2016/02/19(金) 10:02:23.04ID:hw/X0Y/j
2016/02/19(金) 10:04:44.54ID:hw/X0Y/j
julia> run(`cmd /c dir`)
したときは日本語が UTF-8 に変換されてるのかな
julia> open(`cmd /c dir`) do f
for l in eachline(f)
println(chomp(l))
end
end
すると結果が違うような気がするけど気のせいかな
julia> open("test_out.txt", "w") do w
open(`cmd /c dir`) do r
for l in eachline(r)
println(w, chomp(l)) # これだとSJISで書き込まれているな
end
end
end
したときは日本語が UTF-8 に変換されてるのかな
julia> open(`cmd /c dir`) do f
for l in eachline(f)
println(chomp(l))
end
end
すると結果が違うような気がするけど気のせいかな
julia> open("test_out.txt", "w") do w
open(`cmd /c dir`) do r
for l in eachline(r)
println(w, chomp(l)) # これだとSJISで書き込まれているな
end
end
end
2016/02/19(金) 10:19:38.04ID:hw/X0Y/j
julia> (3+2im)*(3-2im)
13 + 0im
julia> 1//3 + 1//3 + 1//3
1//1
julia> 2π
6.283185307179586
julia> r = 4
4
julia> 2πr
ERROR: UndefVarError: πr not defined
julia> 2π*r
25.132741228718345
実におしい
13 + 0im
julia> 1//3 + 1//3 + 1//3
1//1
julia> 2π
6.283185307179586
julia> r = 4
4
julia> 2πr
ERROR: UndefVarError: πr not defined
julia> 2π*r
25.132741228718345
実におしい
2016/02/19(金) 13:47:52.38ID:5RH0Tfsb
>>11
ccall((:MessageBoxW, :user32), stdcall, UInt, (Ptr{Void}, Ptr{Cwchar_t}, Ptr{Cwchar_t}, UInt),
C_NULL, [0x304C,0x3063,0xFF01,0x0000], [0x306C,0x308B,0x307D,0x0000], 0)
この方が良くね?
ccall((:MessageBoxW, :user32), stdcall, UInt, (Ptr{Void}, Ptr{Cwchar_t}, Ptr{Cwchar_t}, UInt),
C_NULL, [0x304C,0x3063,0xFF01,0x0000], [0x306C,0x308B,0x307D,0x0000], 0)
この方が良くね?
2016/02/20(土) 11:05:53.32ID:Z/BOfpky
ccall((:MessageBoxW, :user32), stdcall, UInt, (Ptr{Void}, Ptr{Cwchar_t}, Ptr{Cwchar_t}, UInt),
C_NULL, pointer("がっ!"), pointer("ぬるぽ"), 0)
これだと化けるから、
ccall((:MessageBoxA, :user32), stdcall, UInt, (Ptr{Void}, Ptr{Cchar}, Ptr{Cchar}, UInt),
C_NULL, pointer("がっ!"), pointer("ぬるぽ"), 0)
にしたんだがやっぱり化ける。
原因はわかるんだが、wchar_t の文字列は作れない子なの?
C_NULL, pointer("がっ!"), pointer("ぬるぽ"), 0)
これだと化けるから、
ccall((:MessageBoxA, :user32), stdcall, UInt, (Ptr{Void}, Ptr{Cchar}, Ptr{Cchar}, UInt),
C_NULL, pointer("がっ!"), pointer("ぬるぽ"), 0)
にしたんだがやっぱり化ける。
原因はわかるんだが、wchar_t の文字列は作れない子なの?
2016/02/20(土) 11:46:21.48ID:Z/BOfpky
>>41
こういうことらしい。
julia> "ぬるぽ"[nextind("ぬるぽ", 0):end]
"ぬるぽ"
julia> "ぬるぽ"[nextind("ぬるぽ", 1):end]
"るぽ"
julia> "ぬるぽ"[nextind("ぬるぽ", 2):end]
"るぽ"
julia> "ぬるぽ"[nextind("ぬるぽ", 3):end]
"るぽ"
julia> "ぬるぽ"[nextind("ぬるぽ", 4):end]
"ぽ"
julia> "ぬるぽ"[nextind("ぬるぽ", 5):end]
"ぽ"
julia> "ぬるぽ"[nextind("ぬるぽ", 6):end]
"ぽ"
julia> "ぬるぽ"[nextind("ぬるぽ", 7):end]
""
julia> "ぬるぽ"[nextind("ぬるぽ", end-1):end]
"ぽ"
こういうことらしい。
julia> "ぬるぽ"[nextind("ぬるぽ", 0):end]
"ぬるぽ"
julia> "ぬるぽ"[nextind("ぬるぽ", 1):end]
"るぽ"
julia> "ぬるぽ"[nextind("ぬるぽ", 2):end]
"るぽ"
julia> "ぬるぽ"[nextind("ぬるぽ", 3):end]
"るぽ"
julia> "ぬるぽ"[nextind("ぬるぽ", 4):end]
"ぽ"
julia> "ぬるぽ"[nextind("ぬるぽ", 5):end]
"ぽ"
julia> "ぬるぽ"[nextind("ぬるぽ", 6):end]
"ぽ"
julia> "ぬるぽ"[nextind("ぬるぽ", 7):end]
""
julia> "ぬるぽ"[nextind("ぬるぽ", end-1):end]
"ぽ"
2016/02/20(土) 11:59:22.33ID:Z/BOfpky
"るぽ"をendの差分で取るのはループしないかぎりむりぽか
2016/02/21(日) 10:29:39.26ID:zmvsu5mb
>>49-50
julia> ccall((:MessageBoxW, :user32), stdcall, UInt, (Ptr{Void}, Ptr{Cwchar_t}, Ptr{Cwchar_t}, UInt),
C_NULL, pointer(utf16("がっ!")), pointer(utf16("ぬるぽ")), 0)
julia> ccall((:MessageBoxW, :user32), stdcall, UInt, (Ptr{Void}, Ptr{Cwchar_t}, Ptr{Cwchar_t}, UInt),
C_NULL, pointer(wstring("がっ!")), pointer(wstring("ぬるぽ")), 0)
>>42-43 >>51-52
julia> utf16("ぬるぽ")[end-1:end]
"るぽ"
julia> wstring("ぬるぽ")[end-1:end]
"るぽ"
どうしても UTF-8 のままが良いなら
julia> s[prevind(s, end):end]
"るぽ"
http://docs.julialang.org/en/release-0.4/stdlib/strings/
読め
結論
>>42 がアホ
julia> ccall((:MessageBoxW, :user32), stdcall, UInt, (Ptr{Void}, Ptr{Cwchar_t}, Ptr{Cwchar_t}, UInt),
C_NULL, pointer(utf16("がっ!")), pointer(utf16("ぬるぽ")), 0)
julia> ccall((:MessageBoxW, :user32), stdcall, UInt, (Ptr{Void}, Ptr{Cwchar_t}, Ptr{Cwchar_t}, UInt),
C_NULL, pointer(wstring("がっ!")), pointer(wstring("ぬるぽ")), 0)
>>42-43 >>51-52
julia> utf16("ぬるぽ")[end-1:end]
"るぽ"
julia> wstring("ぬるぽ")[end-1:end]
"るぽ"
どうしても UTF-8 のままが良いなら
julia> s[prevind(s, end):end]
"るぽ"
http://docs.julialang.org/en/release-0.4/stdlib/strings/
読め
結論
>>42 がアホ
54デフォルトの名無しさん
2016/02/21(日) 11:33:03.42ID:zmvsu5mb 地雷満載
julia> length(utf16("あいう"))
3
julia> sizeof(utf16("あいう"))
6
julia> endof(utf16("あいう"))
3
julia> sizeof(utf16("あいう").data)
8
julia> endof(utf16("あいう").data)
4
julia> length(utf16("あいう"))
3
julia> sizeof(utf16("あいう"))
6
julia> endof(utf16("あいう"))
3
julia> sizeof(utf16("あいう").data)
8
julia> endof(utf16("あいう").data)
4
55デフォルトの名無しさん
2016/02/22(月) 12:14:35.86ID:Y1bHL8fN PythonよりUnicodeの扱いが親切だと思うω
56デフォルトの名無しさん
2016/02/22(月) 17:04:35.55ID:Y1bHL8fN if __name__ == "__main__": みたいなのは無いんかな
2016/02/22(月) 17:23:08.96ID:Y1bHL8fN
2016/02/22(月) 18:32:57.93ID:QLpZ1xcH
馬鹿には無理
2016/02/23(火) 05:19:15.92ID:I8nTY0JT
DLL は作れるのかな?
2016/02/23(火) 12:24:16.92ID:SVaKsmEW
open(hoge) do f
fuga(f)
end
みたいな do end 出来る関数ってどうやって作るんですか?
fuga(f)
end
みたいな do end 出来る関数ってどうやって作るんですか?
2016/02/23(火) 12:56:21.77ID:I8nTY0JT
julia> ASCIIString <: AbstractString
true
julia> Array{ASCIIString, 1} <: Array{AbstractString, 1}
false
julia> Array{ASCIIString, 1} <: Array{Union{ASCIIString, UTF8String}, 1}
false
julia> Array{Union{ASCIIString, UTF8String}, 1} <: Array{AbstractString, 1}
false
julia> typeof(["abc"]) <: Array{ASCIIString, 1}
true
julia> typeof(["abc"]) <: Array{AbstractString, 1}
false
julia> typeof(["abc"]) <: Array{Union{ASCIIString, UTF8String}, 1}
false
これなんとかならんか?
true
julia> Array{ASCIIString, 1} <: Array{AbstractString, 1}
false
julia> Array{ASCIIString, 1} <: Array{Union{ASCIIString, UTF8String}, 1}
false
julia> Array{Union{ASCIIString, UTF8String}, 1} <: Array{AbstractString, 1}
false
julia> typeof(["abc"]) <: Array{ASCIIString, 1}
true
julia> typeof(["abc"]) <: Array{AbstractString, 1}
false
julia> typeof(["abc"]) <: Array{Union{ASCIIString, UTF8String}, 1}
false
これなんとかならんか?
2016/02/25(木) 11:01:35.11ID:xnX4JkuY
糞認定です。
おめでとう。
おめでとう。
63デフォルトの名無しさん
2016/02/26(金) 14:18:09.06ID:VQGl6zaq 「XXX を削除できません。
ほかの人またはプログラムによって使用されています。
ファイルを使用している可能性があるプログラムをすべて閉じてから、やり直してください。」
が出る場合、そのファイルを使用しているプロセスを知る方法はありますでしょうか
あるよ
ただ、簡単ならいくらMicrosoftが能無しでもそこのダイアログに誰が開いているか表示するだろう
そのくらい面倒くさくまともな方法じゃないってことは察しろ
ほかの人またはプログラムによって使用されています。
ファイルを使用している可能性があるプログラムをすべて閉じてから、やり直してください。」
が出る場合、そのファイルを使用しているプロセスを知る方法はありますでしょうか
あるよ
ただ、簡単ならいくらMicrosoftが能無しでもそこのダイアログに誰が開いているか表示するだろう
そのくらい面倒くさくまともな方法じゃないってことは察しろ
64デフォルトの名無しさん
2016/03/20(日) 10:27:12.46ID:0HfdLt5e 未完成感半端ない
65デフォルトの名無しさん
2016/04/02(土) 12:07:37.96ID:thGUj6UI 未来の言語
66デフォルトの名無しさん
2016/04/20(水) 14:02:09.01ID:KhdkVfqP 予知能力
2016/04/21(木) 15:08:23.44ID:Jg/FpCZZ
>>61
言いたいことは分かるけど
継承関係にないジェネリッククラスに継承関係を認めたら
それはそれで問題が起きるから
特に配列の場合はパフォーマンスが犠牲になるので受け入れがたいし
C++とかだとバグの温床なので「できて当然」という考えは捨てた方がいい
言いたいことは分かるけど
継承関係にないジェネリッククラスに継承関係を認めたら
それはそれで問題が起きるから
特に配列の場合はパフォーマンスが犠牲になるので受け入れがたいし
C++とかだとバグの温床なので「できて当然」という考えは捨てた方がいい
69デフォルトの名無しさん
2016/05/01(日) 13:10:40.52ID:tKi6j9CT 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
6
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
6
70デフォルトの名無しさん
2016/05/02(月) 15:31:15.58ID:aR8AOrvI うざっ
2016/05/02(月) 19:04:53.82ID:tya74GVe
72デフォルトの名無しさん
2016/05/14(土) 14:39:51.17ID:r8zKr16p あと10年はかかるんじゃね
73デフォルトの名無しさん
2016/05/16(月) 18:05:31.33ID:DkcwsRla T.K.
2016/05/18(水) 13:16:34.04ID:u7J2zmgl
まともな開発者が使うなら何でもいいんだよ
juliaユーザーは一概にレベルが低いから信頼性の低いライブラリと化学反応を起こして爆発するのだ
ただしnodeよりマシか
juliaユーザーは一概にレベルが低いから信頼性の低いライブラリと化学反応を起こして爆発するのだ
ただしnodeよりマシか
2016/05/31(火) 06:58:34.84ID:p6bvKsCE
こうして思うとmatlabの功罪は大きいな
76デフォルトの名無しさん
2016/05/31(火) 13:36:58.59ID:yIUZknFd 初心者に Fortran 教えるくらいなら Julia の方がマシ
77デフォルトの名無しさん
2016/05/31(火) 17:49:10.36ID:yIUZknFd78デフォルトの名無しさん
2016/06/02(木) 08:32:20.78ID:O7OWJX/G Jupyter Notebookで説明書きの通りのコードを入れても動きません。
terminals are unavailable と表示されてるのですが、これが動かない理由でしょうか。
terminals are unavailable と表示されてるのですが、これが動かない理由でしょうか。
2016/06/10(金) 16:36:24.64ID:8yNz9kCr
C資産との連携を強調してるけど
JuliaでC呼ぶのは苦痛でしかない
Cで書いた方がまし
JuliaでC呼ぶのは苦痛でしかない
Cで書いた方がまし
80デフォルトの名無しさん
2016/06/11(土) 15:43:11.34ID:iSPIsEmM 馬鹿には無理
2016/06/13(月) 14:44:15.88ID:zgrawcOE
本家も放置?
82デフォルトの名無しさん
2016/07/04(月) 12:10:46.03ID:bmDp8Deu 相変わらずだな
514 デフォルトの名無しさん sage 2016/07/04(月) 01:22:47.14 a5Gl8mUE
Juliaの開発、俺が引き受けるから科研費くれ
という主張をしてみるか悩んでる
515 デフォルトの名無しさん sage 2016/07/04(月) 01:35:22.05 WZmggq2i
Julia で検索したら、AV 動画見たばかりでワロタ w
516 デフォルトの名無しさん sage 2016/07/04(月) 01:36:38.53 WZmggq2i
ありゃ、
AV 動画ばかりって書きたかったの…
517 デフォルトの名無しさん sage 2016/07/04(月) 01:44:34.13 Jqw/8rJ7
私も今まさにそれ思ってた>AVばっかり
514 デフォルトの名無しさん sage 2016/07/04(月) 01:22:47.14 a5Gl8mUE
Juliaの開発、俺が引き受けるから科研費くれ
という主張をしてみるか悩んでる
515 デフォルトの名無しさん sage 2016/07/04(月) 01:35:22.05 WZmggq2i
Julia で検索したら、AV 動画見たばかりでワロタ w
516 デフォルトの名無しさん sage 2016/07/04(月) 01:36:38.53 WZmggq2i
ありゃ、
AV 動画ばかりって書きたかったの…
517 デフォルトの名無しさん sage 2016/07/04(月) 01:44:34.13 Jqw/8rJ7
私も今まさにそれ思ってた>AVばっかり
2016/07/05(火) 13:25:11.27ID:3gyxqmIo
Juliaってデータ分析というより数値計算じゃないの
全部インメモリの固定長配列にブチ込んでループぶん回す昔ながらのやつだよね
全部インメモリの固定長配列にブチ込んでループぶん回す昔ながらのやつだよね
2016/07/06(水) 12:37:52.43ID:T23wVNy/
別にデータ分析以外の数値計算が出来ないと言っている訳じゃないし
昔ながらのやつを現代的に書けるというだけでも有意義だろう
昔ながらのやつを現代的に書けるというだけでも有意義だろう
2016/07/06(水) 14:28:27.41ID:X105+0ra
2016/07/07(木) 11:04:48.07ID:bjxB4lA1
87デフォルトの名無しさん
2016/07/13(水) 17:16:46.46ID:Zm0ukFfg 文盲乙
A Summary of Features
https://www.youtube.com/watch?v=B9moDuSYzGo
Calling C Code
http://docs.julialang.org/en/release-0.4/manual/calling-c-and-fortran-code/
A Summary of Features
https://www.youtube.com/watch?v=B9moDuSYzGo
Calling C Code
http://docs.julialang.org/en/release-0.4/manual/calling-c-and-fortran-code/
88デフォルトの名無しさん
2016/07/15(金) 17:01:44.97ID:8P+uiz2j 誤解されてるようなので
>実際コード書いてても Python や C++ と比べて julia のコードって汚いんだよな
特定の条件がそろったときだけど
綺麗に描けることもある
>実際コード書いてても Python や C++ と比べて julia のコードって汚いんだよな
特定の条件がそろったときだけど
綺麗に描けることもある
2016/07/15(金) 22:38:04.14ID:3IYjBgbR
誤爆か
言語内DSLを別言語とみなすなら
C++で綺麗に書けるものがjuliaで書くと汚いってことは考えにくいんだが?
C++は数値を表す抽象型が標準にないのが致命的
そのくせ最近までサイズ固定の整数型がなかった
pythonについてはラムダ式が好きになれない(汚いとは別だが)
まぁjuliaに求めるものは綺麗さじゃなく実用性なんだ
おっぱい的な意味で
言語内DSLを別言語とみなすなら
C++で綺麗に書けるものがjuliaで書くと汚いってことは考えにくいんだが?
C++は数値を表す抽象型が標準にないのが致命的
そのくせ最近までサイズ固定の整数型がなかった
pythonについてはラムダ式が好きになれない(汚いとは別だが)
まぁjuliaに求めるものは綺麗さじゃなく実用性なんだ
おっぱい的な意味で
90デフォルトの名無しさん
2016/07/18(月) 12:18:17.33ID:DeXLreOM やっと気付いた
漏れはきっと end が嫌いなんだ
漏れはきっと end が嫌いなんだ
91デフォルトの名無しさん
2016/07/19(火) 12:43:59.43ID:3sf6xm4M julia> reinterpret(Bool, 1)
true
julia> reinterpret(Bool, 2)
false
julia> reinterpret(Bool, 3)
true
julia> reinterpret(Bool, 4)
false
julia> reinterpret(Bool, 0)
false
julia> reinterpret(Bool, -1)
true
julia> reinterpret(Bool, -2)
false
ワロス
true
julia> reinterpret(Bool, 2)
false
julia> reinterpret(Bool, 3)
true
julia> reinterpret(Bool, 4)
false
julia> reinterpret(Bool, 0)
false
julia> reinterpret(Bool, -1)
true
julia> reinterpret(Bool, -2)
false
ワロス
2016/07/20(水) 12:33:08.99ID:IKGpFUMW
笑いどころがわからない
配列用でないreinterpretはconvertと違って慎重に使うべきもの
julia> reinterpret(Bool, 256)
false
これは気持ち悪い
……と開発者も思ったらしくv0.5ではエラーになる見込み
配列用でないreinterpretはconvertと違って慎重に使うべきもの
julia> reinterpret(Bool, 256)
false
これは気持ち悪い
……と開発者も思ったらしくv0.5ではエラーになる見込み
2016/07/20(水) 21:10:41.79ID:AXsJLLhK
間にscheme入ってるならpythonに近い文法に変換するのも簡単に出来るのでは?
2016/07/20(水) 22:23:38.39ID:IKGpFUMW
pythonに近い文法を求めているならpython使えばいいんでは?
てかschemeに何の関係が?
てかschemeに何の関係が?
95デフォルトの名無しさん
2016/07/21(木) 18:47:37.68ID:Vj/xPVWN S式でなんでもできるのは面白いな
2016/07/21(木) 18:53:51.10ID:IyjPITzN
マクロで真っ黒
2016/07/22(金) 11:45:49.87ID:f6dSUOKk
>>7-11 >>25 >>28 >>30-32
定義はmacro使うと楽
macro c(restype, fnc, argtypes)
local args = [symbol("a", n) for n in 1:length(argtypes.args)]
quote
$(esc(fnc))($(args...)) = ccall($(string(fnc)), $restype, $argtypes, $(args...))
end
end
@c UInt32 printf (Ptr{Cchar},)
@c UInt32 printf (Ptr{Cchar}, UInt32,)
printf(pointer(Array{UInt8,1}([65,66,0,67,68,0,0])))
printf("%s\n", pointer(Array{UInt8,1}([65,66,0,67,68,0,0])))
macro m(lib, restype, fnc, argtypes)
local args = [symbol("a", n) for n in 1:length(argtypes.args)]
quote
$(esc(fnc))($(args...)) = ccall(($(string(fnc)), $(Expr(:quote, lib))), $restype, $argtypes, $(args...))
end
end
@m libcurl Cint curl_free (Ptr{Void},)
@m libcurl Ptr{Cchar} curl_getenv (Ptr{Cchar},)
@m libcurl Ptr{Cchar} curl_version ()
v = curl_getenv("TZ")
printf(v)
curl_free(v)
printf(curl_version())
定義はmacro使うと楽
macro c(restype, fnc, argtypes)
local args = [symbol("a", n) for n in 1:length(argtypes.args)]
quote
$(esc(fnc))($(args...)) = ccall($(string(fnc)), $restype, $argtypes, $(args...))
end
end
@c UInt32 printf (Ptr{Cchar},)
@c UInt32 printf (Ptr{Cchar}, UInt32,)
printf(pointer(Array{UInt8,1}([65,66,0,67,68,0,0])))
printf("%s\n", pointer(Array{UInt8,1}([65,66,0,67,68,0,0])))
macro m(lib, restype, fnc, argtypes)
local args = [symbol("a", n) for n in 1:length(argtypes.args)]
quote
$(esc(fnc))($(args...)) = ccall(($(string(fnc)), $(Expr(:quote, lib))), $restype, $argtypes, $(args...))
end
end
@m libcurl Cint curl_free (Ptr{Void},)
@m libcurl Ptr{Cchar} curl_getenv (Ptr{Cchar},)
@m libcurl Ptr{Cchar} curl_version ()
v = curl_getenv("TZ")
printf(v)
curl_free(v)
printf(curl_version())
2016/07/22(金) 11:49:20.02ID:f6dSUOKk
>>9
macro w(lib, restype, fnc, argtypes)
local args = [symbol("a", n) for n in 1:length(argtypes.args)]
quote
$(esc(fnc))($(args...)) = ccall(($(string(fnc)), $(Expr(:quote, lib))), stdcall, $restype, $argtypes, $(args...))
end
end
@w user32 UInt32 MessageBoxA (UInt32, Ptr{Cchar}, Ptr{Cchar}, UInt32,)
MessageBoxA(C_NULL, "hage", "title", 1)
macro w(lib, restype, fnc, argtypes)
local args = [symbol("a", n) for n in 1:length(argtypes.args)]
quote
$(esc(fnc))($(args...)) = ccall(($(string(fnc)), $(Expr(:quote, lib))), stdcall, $restype, $argtypes, $(args...))
end
end
@w user32 UInt32 MessageBoxA (UInt32, Ptr{Cchar}, Ptr{Cchar}, UInt32,)
MessageBoxA(C_NULL, "hage", "title", 1)
99デフォルトの名無しさん
2016/07/22(金) 13:42:42.08ID:hQsD+JBa >>97-98
32bit 限定のコードを書くべきじゃないな
32bit 限定のコードを書くべきじゃないな
100デフォルトの名無しさん
2016/07/22(金) 15:31:36.78ID:TotCshYe 呼び出すライブラリの仕様は確定しているのだから実用上問題ないのでは?
101デフォルトの名無しさん
2016/07/23(土) 10:27:35.38ID:6lYjBmg5 ヒ素2さんかな(ヒソヒソ)
102デフォルトの名無しさん
2016/07/23(土) 11:05:54.45ID:+Jc7SqHC x = UInt32(0x12345678)
a = pointer_to_array(convert(Ptr{UInt8}, pointer_from_objref(x)), 4)
a[2] = 51
println(@sprintf "%08X" x) # 0x12343378
a = pointer_to_array(convert(Ptr{UInt8}, pointer_from_objref(x)), 4)
a[2] = 51
println(@sprintf "%08X" x) # 0x12343378
103デフォルトの名無しさん
2016/07/23(土) 11:07:52.09ID:+Jc7SqHC 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
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
104デフォルトの名無しさん
2016/07/23(土) 11:12:28.69ID:+Jc7SqHC 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) まで実行すると落ちる
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) まで実行すると落ちる
105デフォルトの名無しさん
2016/07/23(土) 11:13:02.17ID:+Jc7SqHC なぜでしょう?(unsafeなことしてるのは判ってるのですが・・・)
106デフォルトの名無しさん
2016/07/23(土) 12:22:24.60ID:lFeXmVIf なぜって自分でbitstypeでもimmutableでもないって分かっている書きぶりじゃん
その上で聞いているならソース読め
その上で聞いているならソース読め
107デフォルトの名無しさん
2016/07/23(土) 17:00:36.64ID:6lYjBmg5 へー 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> 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
108デフォルトの名無しさん
2016/07/23(土) 17:11:02.05ID:6lYjBmg5 こうなってるのかー
気付かんかったわー
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> 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
109デフォルトの名無しさん
2016/07/24(日) 09:37:49.42ID:wdZTIji9 インタラクティブシェルのヒストリーってどうやったら消せるん?
110デフォルトの名無しさん
2016/07/24(日) 09:48:14.01ID:wdZTIji9 ~/.julia_history 消したら解決しました!
111デフォルトの名無しさん
2016/07/25(月) 18:13:55.98ID:r9xhFlm6 Cのunionと同じような機能ってreinterpret以外にないの?
112デフォルトの名無しさん
2016/07/26(火) 10:16:34.91ID:oKnTJYes transpose と ctranspose って何が違うん?
113デフォルトの名無しさん
2016/07/26(火) 10:29:26.50ID:As2nHGxN >>112
cはcomplex(複素数)のconjugate
cはcomplex(複素数)のconjugate
114デフォルトの名無しさん
2016/07/27(水) 09:34:21.46ID:nl1cCFz0 >>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
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
115デフォルトの名無しさん
2016/07/27(水) 22:18:04.56ID:vxMObH7b 納得いかないのが納得いかない
"100" - 19
→ 119 - 19
→"100"
→ 119
"100" - 19
→ 119 - 19
→"100"
→ 119
116デフォルトの名無しさん
2016/07/28(木) 19:00:25.38ID:O8Vfrh0P なるほど!
目から鱗でした
目から鱗でした
117デフォルトの名無しさん
2016/07/31(日) 11:27:08.15ID:DMqYYSfk llvm使いたくない。gccではビルドできないの?
118デフォルトの名無しさん
2016/08/01(月) 12:23:48.40ID:6PNy08If C++AMPもそうだったんだけど
llvmがバージョンアップするとC++AMPの仕様も変わったりして
誰も安定してC++AMPを利用できなったので
C++AMPは消えたと思う
juliaがllvm使ってるのは嫌な予感しかしない
llvmがバージョンアップするとC++AMPの仕様も変わったりして
誰も安定してC++AMPを利用できなったので
C++AMPは消えたと思う
juliaがllvm使ってるのは嫌な予感しかしない
119デフォルトの名無しさん
2016/08/01(月) 15:22:44.54ID:JXVULl1x コンパイル遅すぎ
120デフォルトの名無しさん
2016/08/01(月) 16:51:02.97ID:8rwcghCB 寧ろgccの方が先行き不安なような
121デフォルトの名無しさん
2016/08/01(月) 17:20:22.43ID:6PNy08If llvmは安定して使うことよりもgccの妨害が目的っぽい部分があって
利用者は軽視(gccの足引っ張りが重要)
そんな印象がある
利用者は軽視(gccの足引っ張りが重要)
そんな印象がある
122デフォルトの名無しさん
2016/08/01(月) 17:35:53.63ID:8rwcghCB うわぁ・・・
123デフォルトの名無しさん
2016/08/01(月) 18:14:22.64ID:JXVULl1x M9誤報記念
124デフォルトの名無しさん
2016/08/01(月) 19:39:59.72ID:3q+qs35i >>118
C++AMP ってマイクロソフト主導だったんじゃないのん?
C++AMP ってマイクロソフト主導だったんじゃないのん?
125デフォルトの名無しさん
2016/08/02(火) 10:29:05.14ID:JwtZ9iAm >>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.
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.
126デフォルトの名無しさん
2016/08/04(木) 11:46:11.27ID:8anV95gh reinterpretとBase.boxとどっち使うのが良いんですか?
127デフォルトの名無しさん
2016/08/05(金) 10:14:39.63ID:LJe/qM3f >>79
それな
それな
128デフォルトの名無しさん
2016/08/05(金) 11:34:17.96ID:9LvdmO9z なぜ僕らはJuliaを創ったか
http://marui.hatenablog.com/entry/20120221/1329823079
ゆるいライセンスのオープンソースで、Cの速度とRubyの動的さが欲しい。
Lispのような真のマクロが使える同図象性のある言語で、
Matlabのように分かりやすい数学の記述をしたい。
Pythonのように汎用的に使いたいし、Rの統計処理、
Perlの文字列処理、Matlabの線形代数計算も要る。
シェルのように簡単にいくつかのパーツをつなぎ合わせたい。
チョー簡単に習えて、超上級ハッカーも満足する言語。
インタラクティブに使えて、かつコンパイルできる言語が欲しい。
(そういえば、C言語の実行速度が必要だってのは言ったっけ?)
イイね!
http://marui.hatenablog.com/entry/20120221/1329823079
ゆるいライセンスのオープンソースで、Cの速度とRubyの動的さが欲しい。
Lispのような真のマクロが使える同図象性のある言語で、
Matlabのように分かりやすい数学の記述をしたい。
Pythonのように汎用的に使いたいし、Rの統計処理、
Perlの文字列処理、Matlabの線形代数計算も要る。
シェルのように簡単にいくつかのパーツをつなぎ合わせたい。
チョー簡単に習えて、超上級ハッカーも満足する言語。
インタラクティブに使えて、かつコンパイルできる言語が欲しい。
(そういえば、C言語の実行速度が必要だってのは言ったっけ?)
イイね!
129デフォルトの名無しさん
2016/08/12(金) 14:09:58.96ID:5sOoPQZ5 マクロを入れ子で使ってるときの評価順が良く判らんな
130デフォルトの名無しさん
2016/08/19(金) 20:54:44.94ID:/WxFAz6S Juliaの継承システムってなんでgoみたいなシステムにしなかったんだろうな
131デフォルトの名無しさん
2016/08/20(土) 14:07:49.70ID:cg7hw3nY goはgoでアグレッシブすぎる気がするけど
C++とかJavaとか
結果的に抽象クラスとインターフェイスの関係が微妙になってしまったことを考えれば
Juliaの型システムは明確で合理的だと思う
あと多重ディスパッチが特徴に挙げられるくらいなので
ロジック・実装の散逸を防ぐ思想があるんだろう
具象型が継承不可な点は最適化の面でも有利に働くはず
C++とかJavaとか
結果的に抽象クラスとインターフェイスの関係が微妙になってしまったことを考えれば
Juliaの型システムは明確で合理的だと思う
あと多重ディスパッチが特徴に挙げられるくらいなので
ロジック・実装の散逸を防ぐ思想があるんだろう
具象型が継承不可な点は最適化の面でも有利に働くはず
132デフォルトの名無しさん
2016/08/20(土) 14:58:26.80ID:OZEoChm6 コンストラクタがきもい
133デフォルトの名無しさん
2016/08/24(水) 18:07:53.88ID:Ku8YOB4B おまえそんなんばっか
134デフォルトの名無しさん
2016/08/24(水) 20:40:56.81ID:jKhJVkcK @timeとか@showとか便利すぎて逆になんでpythonにはないのかと悲しくなるレベル
135デフォルトの名無しさん
2016/09/01(木) 20:24:06.33ID:YPWf/agv 一切カプセル化出来ないから無能を含む大規模プロジェクトには使えないな
136デフォルトの名無しさん
2016/09/02(金) 07:56:04.86ID:epTjFeL3 intをdepricated にして代わりに l->[parse(Int, s) for s=l] を使えって言ってくるのはマジで基地外じみてる
137デフォルトの名無しさん
2016/09/02(金) 12:51:45.65ID:W3BuWeJb 新言語のフリしたFORTRANだよなこれ
138デフォルトの名無しさん
2016/09/02(金) 15:34:46.39ID:tIJhbCeG 3次元の配列を効率よく初期化するにはどうすれば良いでしょうか?
139デフォルトの名無しさん
2016/09/02(金) 20:42:33.40ID:ZxHIRzh+ [f(I,j,k) for i=1:n, j=1:m, l=1:o]
Pythonとは訳が違う便利さ
Pythonとは訳が違う便利さ
140デフォルトの名無しさん
2016/09/03(土) 13:20:01.65ID:rRZKSjjx >>136
じゃあ何が正解だというの?
じゃあ何が正解だというの?
141デフォルトの名無しさん
2016/09/03(土) 13:59:08.29ID:w8mOGCX1 添え字が 0 から始められるように設定変更ってどうするんだっけ
142デフォルトの名無しさん
2016/09/03(土) 22:13:37.19ID:b+GHqttd >>140
安価ミスか?何を聞かれてるのかわからん
安価ミスか?何を聞かれてるのかわからん
レスを投稿する
ニュース
- 中国外務省局長 「ポケットに手を入れていたのは寒いから」 日本との局長級会談で [お断り★]
- 中国外務省局長 「ポケットに手を入れていたのは寒いから」 日本との局長級会談で ★2 [お断り★]
- 【速報】中国外務省報道官 高市首相発言撤回なければ「断固たる対抗措置」 ★3 [蚤の市★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★7 [ぐれ★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 ★3 [お断り★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- 【ネトウヨの理想国家】中国、スペイ防止法発動、中国人民に対して日本人の通報を奨励 [419054184]
- 【実況】博衣こよりのえちえちフログロ学力テスト🧪★3
- 【実況】博衣こよりのえちえちフログロ学力テスト🧪★4
- 【実況】博衣こよりのえちえちフログロ学力テスト🧪★5
- エッヂ落ちた?
- 【緊急】水ダウひ避難所
