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:zhNvVfnf2016/02/12(金) 19:06:27.32ID:zhNvVfnf
2016/02/12(金) 19:11:52.52ID:zhNvVfnf
C の関数を呼ぶのも簡単
http://docs.julialang.org/en/release-0.4/manual/calling-c-and-fortran-code/
ツールが無くても可能ですが他にも便利なのがあるのでお好みで
Clang.jl
https://github.com/ihnorton/Clang.jl
Cpp.jl
https://github.com/timholy/Cpp.jl
Cxx.jl
https://github.com/Keno/Cxx.jl
http://docs.julialang.org/en/release-0.4/manual/calling-c-and-fortran-code/
ツールが無くても可能ですが他にも便利なのがあるのでお好みで
Clang.jl
https://github.com/ihnorton/Clang.jl
Cpp.jl
https://github.com/timholy/Cpp.jl
Cxx.jl
https://github.com/Keno/Cxx.jl
2016/02/12(金) 19:36:28.01ID:zhNvVfnf
私が Julia を推す理由 (翻訳)
http://d.hatena.ne.jp/isobe1978/20140330/1396201066
原文
http://www.evanmiller.org/why-im-betting-on-julia.html
Julia の開発環境を構築してみる (IJulia)
http://qiita.com/miiton@github/items/33c2b62c4911216d5fdb
科学計算が得意な言語 Julia を試してみた
http://qiita.com/chezou/items/d090f26dcb31818d6964
Gadfly
http://gadflyjl.org/
Plotly
https://plot.ly/julia/
http://d.hatena.ne.jp/isobe1978/20140330/1396201066
原文
http://www.evanmiller.org/why-im-betting-on-julia.html
Julia の開発環境を構築してみる (IJulia)
http://qiita.com/miiton@github/items/33c2b62c4911216d5fdb
科学計算が得意な言語 Julia を試してみた
http://qiita.com/chezou/items/d090f26dcb31818d6964
Gadfly
http://gadflyjl.org/
Plotly
https://plot.ly/julia/
2016/02/12(金) 23:29:57.13ID:5fxI8DGs
実は数年前にここでjuliaスレ立てたんだが落ちたんだよなあ。。。。
2016/02/13(土) 10:10:05.58ID:3L3e3K/U
漏れもなんとなく見覚えがある気がするんだよなぁ・・・
落ちる条件ってなんだっけ
落ちる条件ってなんだっけ
2016/02/13(土) 10:11:00.83ID:3L3e3K/U
という訳で保守がてら
juliaからCの関数を呼んでみた
julia> ccall(:printf, Void, (Ptr{Cchar}, Ptr{Cchar}), "%s", "abc")
abc
julia> ccall(:printf, Void, (Ptr{Cchar}, Ptr{Cchar}, Int), "%s%d", "abc", 9)
abc9
引数の数が自由なのがいいねっ!
juliaからCの関数を呼んでみた
julia> ccall(:printf, Void, (Ptr{Cchar}, Ptr{Cchar}), "%s", "abc")
abc
julia> ccall(:printf, Void, (Ptr{Cchar}, Ptr{Cchar}, Int), "%s%d", "abc", 9)
abc9
引数の数が自由なのがいいねっ!
2016/02/13(土) 10:12:28.35ID:3L3e3K/U
おれおれDLLだと呼び出し方がちょっと変わるみたい
(最近仕様が変わったらしいので古いドキュソの通りやると動かない
っていうか最新のドキュソもまだ動かないサンプルのままだぞω)
julia> libcurl = Base.Libdl.dlopen_e("./libcurl.dll")
Ptr{Void} @0x2c76e2c0
julia> curl_version = Base.Libdl.dlsym(libcurl, :curl_version)
Ptr{Void} @0x6b25c740
julia> curl_getenv = Base.Libdl.dlsym(libcurl, :curl_getenv)
Ptr{Void} @0x6b25c854
julia> curl_free = Base.Libdl.dlsym(libcurl, :curl_free)
Ptr{Void} @0x6b25cbf8
julia> p = ccall(curl_version, Ptr{Cchar}, ())
Ptr{Int8} @0x6b29c060
julia> ccall(:printf, Void, (Ptr{Cchar}, Ptr{Cchar}), "%s", p)
libcurl/7.30.0 OpenSSL/1.0.1e zlib/1.2.7
julia> q = ccall(curl_getenv, Ptr{Cchar}, (Ptr{Cchar}, ), "NUMBER_OF_PROCESSORS")
Ptr{Int8} @0x2c76df10
julia> ccall(:printf, Void, (Ptr{Cchar}, Ptr{Cchar}), "%s", q)
8
julia> ccall(curl_free, Cuint, (Ptr{Void}, ), q)
0x00000001
julia> Base.Libdl.dlclose(libcurl)
うっかり解放忘れそう
(最近仕様が変わったらしいので古いドキュソの通りやると動かない
っていうか最新のドキュソもまだ動かないサンプルのままだぞω)
julia> libcurl = Base.Libdl.dlopen_e("./libcurl.dll")
Ptr{Void} @0x2c76e2c0
julia> curl_version = Base.Libdl.dlsym(libcurl, :curl_version)
Ptr{Void} @0x6b25c740
julia> curl_getenv = Base.Libdl.dlsym(libcurl, :curl_getenv)
Ptr{Void} @0x6b25c854
julia> curl_free = Base.Libdl.dlsym(libcurl, :curl_free)
Ptr{Void} @0x6b25cbf8
julia> p = ccall(curl_version, Ptr{Cchar}, ())
Ptr{Int8} @0x6b29c060
julia> ccall(:printf, Void, (Ptr{Cchar}, Ptr{Cchar}), "%s", p)
libcurl/7.30.0 OpenSSL/1.0.1e zlib/1.2.7
julia> q = ccall(curl_getenv, Ptr{Cchar}, (Ptr{Cchar}, ), "NUMBER_OF_PROCESSORS")
Ptr{Int8} @0x2c76df10
julia> ccall(:printf, Void, (Ptr{Cchar}, Ptr{Cchar}), "%s", q)
8
julia> ccall(curl_free, Cuint, (Ptr{Void}, ), q)
0x00000001
julia> Base.Libdl.dlclose(libcurl)
うっかり解放忘れそう
9デフォルトの名無しさん
2016/02/13(土) 10:14:00.39ID:3L3e3K/U stdcallな関数だとさらにこんな感じだよ
julia> user32 = Base.Libdl.dlopen_e("user32.dll")
Ptr{Void} @0x2c767300
julia> MessageBoxA = Base.Libdl.dlsym(user32, :MessageBoxA)
Ptr{Void} @0x76c6cf50
julia> err = ccall(MessageBoxA, stdcall, UInt, (Ptr{UInt}, Ptr{Cchar}, Ptr{Cchar}, UInt), 0, "Hello, work!", "Message", 0)
0x00000001
wchar_tはArray{UInt16,1}らしい(UTF8を表示したければ先にwchar_tへの変換が必要)
julia> MessageBoxW = Base.Libdl.dlsym(user32, :MessageBoxW)
Ptr{Void} @0x76c6d280
julia> err = ccall(MessageBoxW, stdcall, UInt, (Ptr{UInt}, Ptr{Cwchar_t}, Ptr{Cwchar_t}, UInt), 0, Array{UInt16,1}([0x304C,0x3063,0xFF01,0]), Array{UInt16,1}([0x306C,0x308B,0x307D,0]), 0)
0x00000001
julia> Base.Libdl.dlclose(user32)
解放解放
引数や戻り値の定義を呼び出しのたびに何度も書くの面倒なのでマクロを書くのが良いらしいよ
julia> user32 = Base.Libdl.dlopen_e("user32.dll")
Ptr{Void} @0x2c767300
julia> MessageBoxA = Base.Libdl.dlsym(user32, :MessageBoxA)
Ptr{Void} @0x76c6cf50
julia> err = ccall(MessageBoxA, stdcall, UInt, (Ptr{UInt}, Ptr{Cchar}, Ptr{Cchar}, UInt), 0, "Hello, work!", "Message", 0)
0x00000001
wchar_tはArray{UInt16,1}らしい(UTF8を表示したければ先にwchar_tへの変換が必要)
julia> MessageBoxW = Base.Libdl.dlsym(user32, :MessageBoxW)
Ptr{Void} @0x76c6d280
julia> err = ccall(MessageBoxW, stdcall, UInt, (Ptr{UInt}, Ptr{Cwchar_t}, Ptr{Cwchar_t}, UInt), 0, Array{UInt16,1}([0x304C,0x3063,0xFF01,0]), Array{UInt16,1}([0x306C,0x308B,0x307D,0]), 0)
0x00000001
julia> Base.Libdl.dlclose(user32)
解放解放
引数や戻り値の定義を呼び出しのたびに何度も書くの面倒なのでマクロを書くのが良いらしいよ
2016/02/13(土) 10:17:20.41ID:3L3e3K/U
>っていうか最新のドキュソもまだ動かないサンプルのままだぞω
ああごめん動くわ
ああごめん動くわ
レスを投稿する
ニュース
- 中国外務省局長 「ポケットに手を入れていたのは寒いから」 日本との局長級会談で [お断り★]
- 中国外務省局長 「ポケットに手を入れていたのは寒いから」 日本との局長級会談で ★2 [お断り★]
- 【速報】中国外務省報道官 高市首相発言撤回なければ「断固たる対抗措置」 ★3 [蚤の市★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★7 [ぐれ★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 ★3 [お断り★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- 【ネトウヨの理想国家】中国、スペイ防止法発動、中国人民に対して日本人の通報を奨励 [419054184]
- 【実況】博衣こよりのえちえちフログロ学力テスト🧪★3
- 【実況】博衣こよりのえちえちフログロ学力テスト🧪★4
- 【実況】博衣こよりのえちえちフログロ学力テスト🧪★5
- エッヂ落ちた?
- 【緊急】水ダウひ避難所
