黒木玄 Gen Kuroki
- いいね数 389,756/311,170
- フォロー 995 フォロワー 14,556 ツイート 293,980
- 現在地 (^-^)/
- Web https://genkuroki.github.io/documents/
- 自己紹介 私については https://twilog.org/genkuroki と https://genkuroki.github.io と https://github.com/genkuroki と https://github.com/genkuroki/public を見て下さい。
2020年10月08日(木)
ダイクストラがプログラミング原論で多重代入の問題点を指摘していたが・・・
x = 99
x, y, x = 1, x, 3
println(x, ' ', y)
実行結果
julia : 1 99 ; python3 : (3, ' ', 99)
Fortran は index 配列を使った配列代入で多重代入的になり得るが、重複代入は文法違反で、並列代入なので不定。
タグ:
posted at 23:46:13
Papers with Code @paperswithcode
Login to your arXiv account to manage links to official code for your papers! pic.twitter.com/O0lvSwHeLR
タグ:
posted at 23:42:21
Papers with Code @paperswithcode
🎉 Papers with Code partners with arXiv! Code links are now shown on arXiv articles, and authors can submit code through arXiv. Read more: medium.com/paperswithcode... pic.twitter.com/QZj6Nnfx8i
タグ:
posted at 23:41:56
@sasaburo 現在の #Julia言語 にはswitch/case文はないです。
しかし、多くの場合に
a && return A
b && return B
c && return C
return Z
および、その変種で大して困らないです。
あと、マクロでswitch/case文をシミュレートできます。
github.com/JuliaLang/juli...
タグ: Julia言語
posted at 23:32:53
@muuumin20 @antimon2 #Julia言語
ついさっき更新した
nbviewer.jupyter.org/gist/genkuroki...
に出した画像をこちらにも貼り付けておきます。
マクロでやっていることはものすごく単純。 pic.twitter.com/AzoYMXsNLx
タグ: Julia言語
posted at 23:11:42
@muuumin20 @antimon2 #Julia言語 Juliaの函数の定義は function 構文だけに限っても色々複雑で、ASTもbodyじゃない側が複雑になります。その部分を自分でいじるのは自信がないので、bodyの側のみをシンプルに作り変えています。
gist.github.com/genkuroki/fe9c... pic.twitter.com/Q7HLw642j1
タグ: Julia言語
posted at 22:47:08
@muuumin20 @antimon2 #Julia言語 のマクロについて全然理解していないのですが、「ASTを直接作り直す」という素朴な発想でなら、ある程度マクロを書くことができます。
macro m(a, b, c) ~ end
と定義して、
@ m A B C
と書くと、マクロmはA,B,CのASTを引数a,b,cとして受け取ります。その後はASTをいじり放題。
タグ: Julia言語
posted at 22:40:16
@muuumin20 @antimon2 #Julia言語 私のマクロの「函数の返り値を保たない」という欠陥を修正しておきました。定義の中身が4行しかないのに、もとの函数が
function bar(a::T; b=456) where T<:Real
println(a, " + ", b, " = ", a + b)
a + b
end
でもうまく行きます。
ソースコード↓
gist.github.com/genkuroki/fe9c... pic.twitter.com/zjiL8o4Cey
タグ: Julia言語
posted at 22:36:02
World Record of the longest Urban Downhill Track | Race Run | Medellin, ... youtu.be/Z8gOtDaLPrU @YouTubeより
タグ:
posted at 22:06:13
ごまふあざらし(GomahuAzaras @MathSorcerer
Overseas bros, let's chat in #Nanolish with me.
#HololiveEN
タグ: HololiveEN Nanolish
posted at 21:55:56
@sasaburo #Julia言語 超絶お手軽な方法に
write(ファイル名, 文字列)
txt = read(ファイル名, String)
のような使い方もあります。 pic.twitter.com/4SA4T2FcFn
タグ: Julia言語
posted at 21:55:42
ほりたみゅ (mastodonも見てね) @Hyrodium
2^8まではコンパイル時に展開されるけど2^9以降はコンパイル時に展開されないっぽい pic.twitter.com/4zP67UYSFG
タグ:
posted at 21:16:51
#Julia言語 「特殊函数の計算に必要な多項式や有理函数の分子分母の係数を自動的に計算してHorner法でべた書きするコードを吐くマクロ」を使って特殊函数を実装すると速くなる。しかも、この方法は一般性が高い(コンパイラやCPUなどに依存しない)。具体例が
nbviewer.jupyter.org/gist/genkuroki...
のIn[2]にある。
タグ: Julia言語
posted at 20:21:49
#Julia言語 上でもちょっとふれたように、Juliaでは printf がマクロになっている。フォーマットを解釈しながら実行するのではなく、フォーマット専用のネイティブコードにコンパイルして実行する仕組みの方が速くなる。
函数版が欲しければ↓
github.com/genkuroki/Prin...
タグ: Julia言語
posted at 20:17:37
#Julia言語
gist.github.com/genkuroki/fe9c...
insert_before_after macro
を更新。最初のAバージョンには函数の返り値が保たれないという欠陥がある。それを改善したBバージョンの例も作っておいた。
本当は function f(x) ~ end だけではなく、f(x) = ~ にも対応した方がよいのだが、やっていない。
タグ: Julia言語
posted at 20:14:19
@KenoFischer It helped us too! It is almost as if this category thing is a tool to structure these kind of thoughts.
タグ:
posted at 19:12:38
Y'all ever had a paper of yours cited while it was still in latex form in a GitHub repo somewhere? Because that apparently just happened with my #julialang AD writeup. Glad to see people find the terminology useful. It's certainly helped me think about the subject. twitter.com/MoritzSchauer/...
タグ: julialang
posted at 19:08:09
#Julia言語 #JuliaLang
www.philipzucker.com/notes-on-synth...
Notes on Synthesis and Equation Proving for Catlab.jl
posted at 18:54:22
Yet Another MicroKanren in Julia
#JuliaLang #DataScience
@JuliaLanguage @juliabloggers @JuliaComputing
www.juliabloggers.com/yet-another-mi...
タグ: DataScience JuliaLang
posted at 18:39:33
#Julia言語
work
┗foo
┣ foo.jl
┗ bar.jl
でworkにいて、foo.jlの内容が
println("Reading foo.jl")
include("bar.jl")
のとき、
julia> include("foo/foo.jl")
とすると、bar.jlも読み込まれます。
foo.jl内のincludeではfoo.jlが置かれたディレクトリからの相対パスになる。 pic.twitter.com/w4htfQhmlq
タグ: Julia言語
posted at 18:38:22
これも安い古本入手してしまった(先生ごめんなさい)。おもしろいじゃないか。『いぬやしき コミック 全10巻 セット』 ☆5 booklog.jp/users/yonosuke...
タグ:
posted at 18:09:01
In spirit this is influenced a lot by the #julialang probabilistic programming and automatic diff communities. Our starting point is a generative model, a forward description of the probabilistic process dynamics involving continuous time components.
タグ: julialang
posted at 18:05:59
非公開
タグ:
posted at xx:xx:xx
#Julia言語 活きた具体例
添付画像は
nbviewer.jupyter.org/gist/genkuroki...
のIn[5]より。RK4法での計算で、RK4Func型のxtmp, k1, k2, k3, k4が作業用内部配列として使用され、配列Xは
RK4! = RK4Func(~) # コンストラクター
for j=1:nstep
RK4!(X)
Xの更新結果を保存
end
で更新される。 pic.twitter.com/l9Ab2BSQFQ
タグ: Julia言語
posted at 17:42:37
#Julia言語 を試す人は「しばらく簡単な例で学習を進める」という発想が__皆無__(笑)で、
いきなりトップギアで大変な計算を始めるやつ
が多いという印象がある。特にそういう人は公式ドキュメントの
Performace Tips
docs.julialang.org/en/v1/manual/p...
が必読。上ではメモリ割当の問題のみを扱った。
タグ: Julia言語
posted at 17:34:34
#Julia言語 続き。そのようなfはclosureでも作れるが、
docs.julialang.org/en/v1/devdocs/...
を見れば分かるように、Juliaは上と同じようなことをやり、それはfunction-like objectと呼ばれている。
docs.julialang.org/en/v1/manual/m...
パラメータや内部作業領域を持つ函数はfunction-like objectで作れる。
タグ: Julia言語
posted at 16:54:44
#Julialang 本日Turingのチュートリアル取り組み。訓練セットとかそういうのに立ち入らず、単純に(できれば非線形)回帰分析をMCMCとかHMCを回すって奴やりたい。RStan本だとそういうの載ってるように記憶
タグ: Julialang
posted at 16:47:34
ごまふあざらし(GomahuAzaras @MathSorcerer
これで Cから Julia 呼べるようになるので他言語から Julia を頑張ったら呼べるようになる
タグ:
posted at 16:45:46
ごまふあざらし(GomahuAzaras @MathSorcerer
PackageCompiler.jl を使って Julia の関数をコンパイルして shared object として出してるね.
github.com/simonbyrne/libcg
タグ:
posted at 16:44:59
JuliaとLispのマクロの比較 - SE教育パパむううみんのブログ muuuminsan.hatenablog.com/entry/2020/10/...
タグ:
posted at 15:33:35
ごまふあざらし(GomahuAzaras @MathSorcerer
ThreadsX.jl で sum の計算を 高速化
github.com/tkf/ThreadsX.jl pic.twitter.com/DfYa2KBnP4
タグ:
posted at 15:23:25
ごまふあざらし(GomahuAzaras @MathSorcerer
これを入れると ~/.julia/bin/ion というバイナリーが作られてそれをパスに追加すると
```console
$ cd /path/to/your/julia/project
$ ion add Example
$ ion rm Example
```
のようにして Pkg REPL のような操作をターミナルでできるっぽい.面白い.
github.com/Roger-luo/IonC... pic.twitter.com/5BbhwN3I7G
タグ:
posted at 14:01:35
ごまふあざらし(GomahuAzaras @MathSorcerer
1.6dev で Plots.jl 動いた pic.twitter.com/kevaW7G4xJ
タグ:
posted at 13:44:59
Mark Kittisopikul ht @markkitti
@MathSorcerer @genkuroki This is very interesting!
タグ:
posted at 13:31:35
ごまふあざらし(GomahuAzaras @MathSorcerer
このテクニックよく使われますね. twitter.com/genkuroki/stat...
タグ:
posted at 13:27:26
ごまふあざらし(GomahuAzaras @MathSorcerer
#Julia言語
Pluto.jl
のキーボードショートカット
github.com/fonsp/Pluto.jl...
タグ: Julia言語
posted at 13:21:48
東京新聞が学術会議にトドメ刺してる気が。憲法方面はまだ理解者居るだろうけど,レジ袋有料化の震源地となったら全国民的に総スカンでは。 > 「総理は多様性を認め、政策に生かして」 日本学術会議・大西隆元会長が本紙に寄稿:東京新聞 TOKYO Web www.tokyo-np.co.jp/article/60373
タグ:
posted at 13:12:54
ごまふあざらし(GomahuAzaras @MathSorcerer
Matplot++というC++描画ライブラリのごく一部の機能を #Julia言語 から呼び出せるようにしました.
初回の実行時の plot もスムーズに実行できてまふ
野良パッケージはこちら
github.com/terasakisatosh...
タグ: Julia言語
posted at 12:55:44
@genkuroki 私の環境では、黒木さんのコードを採用したら440μsが210μsになりました。また、@ printfを実行するようにしても、1.9msが1.6msになりました。
タグ:
posted at 12:37:22
#Julia言語
docs.julialang.org/en/v1/base/bas...
【Base.include ~ During including, a task-local include path is set to the directory containing the file. Nested calls to include will search relative to that path.】 twitter.com/tyamadajp/stat...
タグ: Julia言語
posted at 12:18:18
Juliaパッケージの中でファイル分割して複数モジュール構成する場合、includeで連結するのが目下の正解?Revise.jlは効いてそうで一安心だけど、同じファイルを別の所でincludeしたらコード重複しないのかな?LOAD_PATHいじるとグローバルに影響出るので、パッケージ内だけで有効な相対importないかな
タグ:
posted at 11:31:09
【悲報】上念さん、学術評価ツール「スコーパス」は元々日本語の論文をほぼ扱っていないことを知らず、日本憲法や日本刑法や日本行政法の専門家たちの日本語論文がスコーパスでは出てこないことについて、学者としての業績がないかのようにケチをつけてしまう twitter.com/dappi2019/stat...
タグ:
posted at 10:21:41
JupyterNotebook で Julia 使って書いてあって当然数式はTeX仕様で美しいやん♬ twitter.com/kyow_qq/status...
タグ:
posted at 09:57:22
非公開
タグ:
posted at xx:xx:xx
彼らにとって「考える」とは問題を見て、わかる・わからないに分類することになっている。この作業をした後に「考えたけどわからない」と言う。「考える」ということがどういうことなのかを知らない。
タグ:
posted at 08:59:35
これは小学校が正しい勉強をさせないのが原因の一つだと思っている。
ドリルばかりの作業の宿題しかしていないと、それが勉強だと思って頭を使わなくなる。
中高生になっても、ノートをもう一読写し直しとか、わかる問題だけ解いて、わからないものは赤で解答丸写し等の作業しかしない。 twitter.com/tmhrid/status/...
タグ:
posted at 08:59:35
単調増加する #Julia言語 の open issues 😊
3000を超えていると思っていたら、もう3150に達していた‼️
github.com/JuliaLang/juli...
タグ: Julia言語
posted at 08:59:18
#Julia言語 野良パッケージ
@ printf マクロと @ sprintf マクロから、
printf 函数と sprintf 函数を作っている。
マクロじゃない printf 函数は結構欲強い場合がある。
github.com/genkuroki/Prin...
タグ: Julia言語
posted at 08:42:16
#Julia言語
github.com/genkuroki/Inte...
野良パッケージ。添付画像のマクロを使えるようになる。
Meta.@ dump と @ show_tree の使い方は同じだが、後者の方が圧倒的に見易い。Juliaではコードの見た目とASTの対応が非自明なので、マクロを書くためにはこの手のツールが必須だと思う。 twitter.com/genkuroki/stat... pic.twitter.com/scTwxO7koR
タグ: Julia言語
posted at 08:38:59
@muuumin20 取り急ぎ。 #Julia言語 版 [at]withlog マクロ(簡易版)書いてみました。まだ考慮すべき事多いけれど取り敢えず動く版。定義はちょっとだけめんどくさいけれど使い方は簡単でぎこちなくない。
gist.github.com/antimon2/025c3...
タグ: Julia言語
posted at 08:37:54
#Julia言語
struct A{T}
a::T
b::T
end
のとき
struct B{T}
@ fieldsof A{:T}
c::T
end
が
struct B{T}
a::T
b::T
c::T
end
と等価になるマクロ。
nbviewer.jupyter.org/gist/genkuroki... twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 08:32:09
Juliaで配列に含まれる値とある特定の値の大小を比較する時は、こんな感じでやればいいことはわかった
h = [6, 5, 6, 8 ...]
for i in 1:length(h)
println(h[1:i-1] .<= h[i])
end
.<=の.を「フルストップ」というらしい
forで書けばいいきもする。
allとかつかうならこっちか
タグ:
posted at 08:30:09
#Julia言語
@ insert_before_after function f(x)
A
end begin
B
end begin
C
end
は
function f(x)
begin B end
begin A end
begin C end
end
になる。単にそれだけのマクロ。
gist.github.com/genkuroki/fe9c... twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 08:09:19
凄くいい物を教えていただきました。
まだ理解できてませんが、家に帰ったらじっくり読んでみます。これは記事の結論を再考する必要があるかもしれませんね。#Julia言語 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 08:05:03
“この気の利かない同僚の名前がCommon Lisp家のマクロ君だ。” ←笑ったw muuuminsan.hatenablog.com/entry/2020/10/...
タグ:
posted at 07:54:16
@muuumin20 #Julia言語 マクロの展開のされ方
添付画像では行番号ノードを削ったものを表示させています。
ソースコード↓
gist.github.com/genkuroki/fe9c... pic.twitter.com/KGI6k2vEsj
タグ: Julia言語
posted at 07:53:25
@muuumin20 #Julia言語 insert_before_after マクロ
函数のボディーの前後に任意のコードを挿入するマクロ。非常にシンプル。
macro insert_before_after(funcdef, before, after)
funcdef.args[2] = Expr(:block, before, funcdef.args[2], after)
esc(funcdef)
end
gist.github.com/genkuroki/fe9c... pic.twitter.com/tAjJi8TQYL
タグ: Julia言語
posted at 07:50:00
@genkuroki 読んでいただきありがとうございます!最初は5000文字くらいに収めようかと思いましたが、全然収まらなかったので、毒食らわば皿まで、書きたいことを全部書いたら30000文字を超えてしまいました。
タグ:
posted at 07:41:12
@hyotang666 読んでいただきありがとうございます!
なるほど、Lispでもdefvarなら上手くいくんですね。これは試していなかったです。ダイナミックスコープだからですかね?それでマクロ展開時に評価できる。
Julia でもグローバル変数はダイナミックスコープなんでしょうかね。
タグ:
posted at 07:22:34
すげえ力作。斜め読みだが、JuliaのマクロがLispを一部越えたり、近接していることが分かる。 / “JuliaとLispのマクロの比較 - SE教育パパむううみんのブログ” htn.to/2xoLB1Hpvh
タグ:
posted at 06:52:07
#Julia言語 #Lisp ほんとに長かった! twitter.com/muuumin20/stat...
posted at 06:34:02
@physics303 @HW_a_pythonista @HShinaoka @Yasutchi #Python 余談
Hiroshi Shinaoka さんの秀逸な方法を #Julia言語 で試してみたら爆速だったです!
添付画像のベンチマークの conseclist(A) が Hiroshi Shinaoka さんの秀逸な方法の忠実なJulia版で、My.ConsecutiveGroups(A) がその遅延評価版で比較した中では最良の選択!
gist.github.com/genkuroki/8c7e... pic.twitter.com/bPV6SQekS8
posted at 05:26:20
@physics303 @HW_a_pythonista @HShinaoka @Yasutchi #Python 「FAQによく出て来る有名ライブラリである」という利点はありますが、速くはないようです。
サイズを大きくした場合の結果も
gist.github.com/genkuroki/e314...
に追加しておきました。余談に続く。 pic.twitter.com/XqsQt8Rxwd
タグ: Python
posted at 05:21:42
ちょっと気になったのがjuliaのevalは動くがCLのevalは動かないってとこ。
これ、juliaの変数がグローバルだからじゃないかなぁ。
CLでもグローバルなら機能するけど、juliaよく知らんからわからーん。
(defvar a 1)
(m-square (+ a 2)) => 9 twitter.com/muuumin20/stat...
タグ:
posted at 05:09:28
@genkuroki @HW_a_pythonista @HShinaoka @Yasutchi おおお,ありがとうございます!こちらの方がはやいですね!
タグ:
posted at 02:22:44
「JuliaとLispのマクロの比較」を記事にしました。異様に長くなってしまいました。
はてなブログに投稿しました #はてなブログ #Julia言語
JuliaとLispのマクロの比較 - SE教育パパむううみんのブログ
muuuminsan.hatenablog.com/entry/2020/10/...
posted at 02:20:54
非公開
タグ:
posted at xx:xx:xx
HW_a_pythonista @HW_a_pythonista
@genkuroki @HShinaoka @physics303 @Yasutchi 情報ありがとうございます。
タグ:
posted at 02:01:28
Hiromitsu Takagi @HiromitsuTakagi
Twitterはね、最高の議論ツールですよ。まともでない主張を炙り出すのに最強なツール。超短縮型fjと言ってもいいかなと。
タグ:
posted at 01:57:09
@HW_a_pythonista @HShinaoka @physics303 @Yasutchi #Python 出来合いのライブラリを使う方法もあります。
more-itertools.readthedocs.io/en/stable/api....
from more_itertools import consecutive_groups
def consecutive_group_list(x):
res = [list(g) for g in consecutive_groups(x)]
return res
gist.github.com/genkuroki/e314... pic.twitter.com/knhFMiMa4M
タグ: Python
posted at 01:35:28
I am trying to use #Julialang to rewrite my Reinforcement learning simulate program, which was created by Python before.
The python script needs about 10min to finish my work, and Julia just needs 4s!!!
I love Julia!
タグ: Julialang
posted at 01:05:50
最初の頃、#Julia言語 のコードを見た時、セミコロンがあったりなかったりするのを不思議に思ってた。
teratail.com/questions/154680
タグ: Julia言語
posted at 00:34:28
#スリンキー #数楽 この動画は分かり易い。
下端がずっと動かない。
このスレッドでは2次元の場合(の数値計算)も扱っている。 twitter.com/rainmaker1973/...
posted at 00:13:54
@myu65_laurant 上のコードがバグを取り切ると添付画像のIn[2]になります。(値はπに近くなる
しかし、普通はIn[3]のように書く。 pic.twitter.com/ANS7kyHkY3
タグ:
posted at 00:04:01
Another demonstration of how a Slinky falls. The center of mass of the slinky spring falls with an acceleration of g. Note in this slow motion video that the bottom of the slinky does not move until the spring is fully collapsed ow.ly/eWN350BL7oQ pic.twitter.com/qU5ED5wvh6
タグ:
posted at 00:01:17