黒木玄 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年09月28日(月)
民主党政権下でも失業率は低下傾向でした。その要因は就業者数の減少と働くことを諦めた人の増加によるものです。
デフレ下で仕事が減って、仕事につけない若者よりも定収入がある支持者を向いていそうな方のご発言ですね。
@RyuichiYoneyama twitter.com/RyuichiYoneyam...
タグ:
posted at 23:44:47
Awesome work, by Thomas Faignaert & @maleadt based on #JuliaGPU the accelerated computing stack for #JuliaLang. High-performance generic GEMM, particularly cool is taking advantage of structure information like `Diagonal` to speed things up!
juliagpu.org/2020-09-28-gem...
posted at 23:27:42
Plots.jl使うときいつも悩むからゴロピカリさんのPlotsGallery.jlはとても助かる。ある程度Juliaに慣れた後はパッケージの使い方に悩み続けてる。この前もSQLite.jlの使い方に悩んだし。
タグ:
posted at 23:22:06
ゼロから自己対戦のみで学習させたぷよAI、こんな試合をするようになった。催促、潰し、対応みたいな、人間の上級者みたいなやりとりしてて面白い。 pic.twitter.com/klJuY246kY
タグ:
posted at 23:20:20
Im(Nyarn)@linuxナニモワカ @Imaginary_Nyarn
Julia on Jupyter Notebookでレポート書いたけど,自分の環境ではVSCodeでなぜか開けなくてTabNineとかの補助なしできつかった
タグ:
posted at 23:14:26
「=の意味」案件が今日も。「変化の割合が7」と先に与えられ、aの値をーの問題。変化の割合をaで表せても、最後の一手が出ずに止まってしまう。
「『違う表し方だが同じもの』を=で結び、方程式を立てるのはよくやるよ。」と声をかけると「=でそんなことしていいんですね。」と、やっと手が動いた。 twitter.com/1027stesc/stat...
タグ:
posted at 23:01:28
まあ、なんつうか少人数学級になってより一層超算数を叩き込まれても困るのだけどね。
1桁人数の少人数学年で育ってきた中学生が目の前にいてね。
だいぶ染まってきたみたいでね。
タグ:
posted at 22:42:42
Paper: Flexible Performant GEMM Kernels on GPUs www.juliabloggers.com/paper-flexible... #juliabloggers
タグ: juliabloggers
posted at 22:40:11
頭はいいけど大学数学で挫折する人には共通点があって、それは考える忍耐力が伴ってない事。高校までの数学と違い大学数学は数学自体が難しい。受験教育に慣れすぎると早く解けるのが当たり前になる、だから即答できないと精神的不安に陥る、考える忍耐力がないと大学レベルの数学するのは難しいですね
タグ:
posted at 22:20:24
Bruce Tate: grox.io @redrapids
I love pipes:
julia> d = Dict(
:india => 145400,
:panama => 15598,
:usa => 750,
:philippines => 156824)
julia> d |> values |> collect |> minimum
750
more ->
タグ:
posted at 22:16:48
#Julia言語 インタラクティブなコマンド実行で
f() = sum(1:10^8)
がまるで
f() = 5000000050000000
であるかのようにコンパイルされることを見せることもできます。
Juliaでは函数は実行時に最適化されたネイティブコードに即時コンパイルされる。 pic.twitter.com/1rV49ZMZD7
タグ: Julia言語
posted at 22:11:39
New post: Paper: Flexible Performant GEMM Kernels on GPUs - www.juliabloggers.com/paper-flexible... #julialang pic.twitter.com/7n2HnanaTK
タグ: julialang
posted at 22:02:41
#Julia言語 のinclude("foo.jl")はTeXの\input{foo.tex}と同じ。
単にファイルの内容を読み込んで評価するだけ。
Juliaにはシンプルに「〇〇するだけ」のスタイルの機能が多い。そういう「〇〇するだけ」の機能の組み合わせで何でもできるようにしている。
部品は単純な方が分かり易い。 twitter.com/akhdhys/status... pic.twitter.com/Y7SSEDWFVT
タグ: Julia言語
posted at 21:44:28
C++の数値積分ライブラリをALGLIBからGSLに変えたら、変える前と後では16倍くらい速くなりましたが、それでもまだJuliaの方が16倍くらい速いですね…。具体的には、
C++: 0.212892(秒)
Julia: 0.013464(秒)
です。後、GSLは精度が悪く、積分結果が
1.00000000008663
となります(Juliaは1になる)
タグ:
posted at 21:44:16
@genkuroki それは素晴らしいですね。パッケージマネージャーって、初心者には、入れたら入れたで、何だかよくわからない物を入れちまったと不安になるし、入れなかったら入れなかったで、今後大丈夫なのか不安になりますからね。
タグ:
posted at 21:01:03
@physics303 @HShinaoka @HW_a_pythonista こちらでMacBookProでJuliaでやってみましたが、N=1000で0.01秒くらいでした。 pic.twitter.com/OsU65aTd5u
タグ:
posted at 20:57:19
@muuumin20 #Julia言語 パッケージマネージャーは
julia> ]
pkg> add QuadGK
のようにして使えるので、パッケージマネージャーはないのではなく、juliaコマンドの機能の一部。
pkg> activate .
とかもよく使う。
タグ: Julia言語
posted at 20:55:48
非公開
タグ:
posted at xx:xx:xx
ごまふあざらし(GomahuAzaras @MathSorcerer
元ネタ
ランダム行列の数理と科学
www.morikita.co.jp/books/book/2733
タグ:
posted at 20:32:29
ごまふあざらし(GomahuAzaras @MathSorcerer
特定の条件下で2x2の対象なランダム行列の固有値の分布を描画
#Julia言語
gist.github.com/terasakisatosh... pic.twitter.com/iNhZFu1zsn
タグ: Julia言語
posted at 20:32:28
@mrkn さんがサポートしてくれました :) ありがとうございます🙇♂️🙇♂️🙇♂️
とても嬉しかったので勢い余ってちょっと加筆しました(コードが型不安定な場合のコード生成について)。
変更点だけ見たい方はこのcommitでサクッと確認できます:
github.com/aviatesk/aviat...
#julialang #zenn twitter.com/kdwkshh/status...
posted at 20:26:07
私はそれに加えて環境構築の容易さも挙げたい。Juliaの環境構築はインストーラを押すだけなのでとても簡単。初心者にとって環境構築は最初の関門で、ここでつまづくと簡単に嫌になってしまう。 twitter.com/genkuroki/stat...
タグ:
posted at 20:25:55
@sekibunnteisuu @musicisthebest_ @UFOprofessor @GreatDemon1701 @temmusu_n 公式の暗記に走らせることが悪なのは、数学におけるあらゆる対象は自分自身がコントロールする対象に過ぎず、「天下って来るものではない」という大事なことが蔑ろにされるから。
「全部自分でコントロールできること」が大事。
たとえ世界中を敵に回しても「俺が正しい」と言えることが大事。
タグ:
posted at 20:02:03
@sekibunnteisuu @musicisthebest_ @UFOprofessor @GreatDemon1701 @temmusu_n #数楽
余弦定理も三角函数の加法定理も導出はシンプルです。
難問ではない中学校数学レベル。
添付画像は加法定理の場合。
試験のときに緊張して頭がおかしくなって公式の細部に自信が持てなくなっても、十分に理解すれば大丈夫になるはず。
「緊張してど忘れしても大丈夫」も大事。 twitter.com/ufoprofessor/s... pic.twitter.com/R2HQJOb6jC
タグ: 数楽
posted at 19:58:36
@musicisthebest_ @UFOprofessor @GreatDemon1701 @temmusu_n 乗せるだけじゃなく、囲みや太文字で「覚えなさい」と言わんばかりですよね。しかも「積の法則」みたいなどーーーーーでもいい用語も載せていて太字だったりする。
タグ:
posted at 19:39:08
@UFOprofessor @GreatDemon1701 @temmusu_n @sekibunnteisuu 想像ですが、書き手側に前例踏襲主義と、「他が載せてるのにうちが載せてないのはまずい」という横並び主義があるんじゃないですかね。
生徒側が「何で載ってない」と文句言ってくることはありそうで、だから書き手が「しゃーなしに載せるけどこんなんわざわざ覚えるな」と注釈つけると良いのでは。
タグ:
posted at 19:36:32
UFO教授 (藤木文彦 Fumihiko @UFOprofessor
@GreatDemon1701 @musicisthebest_ @temmusu_n @sekibunnteisuu 最初の数個を覚えたら、ーθとか、θ/2とか、図を書けば分かるし、その方が記憶違いによる間違いが無いだけ確実だから、暗記はやめろ、っていうんですがね。教科書、なんとかならないか。この公式集には墨を塗りたいところですね。
数学の成績の善し悪しは、図を書いて考えられるか否かにかかっている
タグ:
posted at 19:23:44
熱平衡状態での微視的状態の「典型性」を議論している教科書はおそらく田崎本以前には(少なくとも日本語では)ないと思うし、今も他にあるかどうか知らない。僕の講義ノートには書いてある。
計算機で熱平衡状態を作り出していた計算統計力学研究者は漠然とでもそれを知っていたはずで、僕は知ってた
タグ:
posted at 19:17:00
@UFOprofessor @musicisthebest_ @temmusu_n @sekibunnteisuu 「公式」が出てくるたびに、こんなものは覚えるモノではないと言うのですがね。
三角関数のところで出てくる団体さんには本当に困りますよね。丸暗記しようとするのを止められません。力不足です。いくら仕組みを説明しても「あいつの話は長い」で授業評価はだだ下がりです。
タグ:
posted at 19:08:50
UFO教授 (藤木文彦 Fumihiko @UFOprofessor
@GreatDemon1701 @musicisthebest_ @temmusu_n @sekibunnteisuu 確か教科書にも、偶数の場合の式が書いてあって、子供達は両方覚えなければならない強迫観念にとらわれてしまっていた様に思います。
偶数の場合なんか、覚える必要が無い、って教えてますが、なんで教科書は他の場合も含め、必要ない公式を覚えなければならない様に編集されているんでしょうかね?
タグ:
posted at 19:02:59
#Julia言語
expr = :(x^2 + 1)
を
expr = :(x^2 - 1)
に変更するには
expr.args[1] = :-
とします。exprの実行は eval(expr) で可能。
こんな感じでJuliaではJuliaのプログラムを普通にデータとして扱い、実行することができます。 pic.twitter.com/BbQJ7HSE6v
タグ: Julia言語
posted at 19:02:49
#Julia言語
文字列 → AST → ~ → llvm → native
の途中の様子を全部確認できます。
文字列→ASTの変換は
:(文字列)
です(例が添付画像にある)。:(x^2+1)の表示を見ても中身が見えないので、dump や Meta. show_sexpr で見ています。
個人的にはS式による表示Meta. show_sexprがおすすめ。 pic.twitter.com/uAPro8NlFc
タグ: Julia言語
posted at 18:57:34
かつての同僚(某大学のSF研出身)で「昔の21世紀」と表現する人がいた。大阪万博の頃、絵や物語で想像されていた未来像。透明なチューブの中を走る列車や空飛ぶ車など。 twitter.com/nishin_8/statu...
タグ:
posted at 18:37:44
#Julia言語 あと、コンパイラの勉強のために、Juliaが自分が書いた短いコードをどのようにコンパイルしているかも見たい人が多いと思う。LLVMとネイティブコードへのコンパイル結果を見たければ
@ code_llvm
@ code_native
を使う。 pic.twitter.com/Q0GXcheH2Y
タグ: Julia言語
posted at 18:33:14
mmcの次のプロジェクトとして考えているのは、とにかくRailsを速くするだけというもの。その為なら数値計算とかが遅くなってもかまわないと超割り切った設計をする。一番の問題が私がRailsを使ったこと無いこと...
タグ:
posted at 18:26:56
#Julia言語 @ time や @ code_warntype を使えという話は公式ドキュメントのPerformance Tipsにしっかり書いてある。必読。
docs.julialang.org/en/v1/manual/p...
docs.julialang.org/en/v1/manual/p...
Juliaが何をやっているかを「見る」方法を知っておくことはとても大事。
なんでもdump(x)してみるとかもよくやる。
タグ: Julia言語
posted at 18:19:41
#Julia言語 変数達の型がどうなるかが心配ならば、
@ code_warntype euler(f, u₀, tspan, Δt)
を実行してみればよい。添付画像は上の「誤差を含む数値」を扱った場合の結果である。
「警告色」の表示がないので、型の伝搬がうまく行っている。「警告色」が出た場合にはコードを見直す必要がある。 pic.twitter.com/pWPqaL1lOr
タグ: Julia言語
posted at 18:03:02
啓林館の算数部門は塩野直道が始めた。多くの会社の例に漏れず、啓林館も創業者を敬う態度を示し、塩野直道饅頭まで売っている(冗談です。正確には塩野の編集した戦前の国定教科書を復刻販売している)。しかし、塩野が生涯の敵とした「内包量外延量」を奉じて算数指導をするとは?! かなり謎です。 twitter.com/golgo_sardine/...
タグ:
posted at 18:00:32
#Julia言語 このスレッドで紹介しているノート
nbviewer.jupyter.org/gist/genkuroki...
を更新した。
型の記述が一切含まれていないオイラー法の函数では添付画像のように「誤差を含む数値」もそのまま何も変更せずに扱える。 pic.twitter.com/C7hwzZZ0nW
タグ: Julia言語
posted at 17:54:18
ごまふあざらし(GomahuAzaras @MathSorcerer
もっと早く知っておきたかったゼィ・・・.
#Julialang #Julia言語
github.com/goropikari/Plo...
posted at 17:35:48
真面目な話、「2メートル離れて渡せる」からって、両手でペタペタ持ち直しながら運ぶんじゃ意味ないってわからないのかな???
バカなのかな???
news.yahoo.co.jp/articles/e057c...
タグ:
posted at 17:12:25
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
経験値取得効率の良い若いうちにレベル上げしておく方がお得なので、経験値にならなくなった単純作業は早めに卒業するのがポイントなのですが、ここを単純作業=苦労で経験値が貯まると勘違いすると時間浪費の割にレベルが上っていない状態に。
タグ:
posted at 16:43:30
#Julia言語
Juliaは試行錯誤に非常に使い易い。
コンピューターをコンピューティングに使うことが非常に楽しくなる。 twitter.com/kenofischer/st...
タグ: Julia言語
posted at 16:38:57
Im(Nyarn)@linuxナニモワカ @Imaginary_Nyarn
hub.docker.com/r/cschranz/gpu...
こっちのがRTA的に有利か
タグ:
posted at 16:33:40
「若いうちの苦労は買ってでもせよ」というのは、「若いうちの習得効果は高いので、上がりやすいうちに集中的にレベル上げをせよ」という意味であって、学習効果のない・すぐプラトーに達する単純労働で若い時間をすり減らせという意味ではないのよね。
タグ:
posted at 16:33:22
Im(Nyarn)@linuxナニモワカ @Imaginary_Nyarn
ToDo:レポートはこれでやる
Julia+Jupyter Notebook環境をDockerで構築 qiita.com/yoshikiri/item... #Qiita
タグ: Qiita
posted at 16:31:52
@genkuroki @hayabusa_0613 使用例のような主な機能だけではなく、Wolfram AlphaをJupyter上でさっと使える cs.mkamimura.com/posts/2020/09/... のと、付いてくるデータの豊富さもお気に入りだったりします。😄( cs.mkamimura.com/posts/2020/09/... とか twitter.com/mkamimura/stat... とか)
タグ:
posted at 16:22:39
@hayabusa_0613 @mkamimura #Wolfram言語
nbviewer.jupyter.org/github/genkuro...
Free Wolfram EngineをJupyterで使う方法
(情報がちょっと古くなっている)
使用例
↓
nbviewer.jupyter.org/github/genkuro...
Borwein積分
↓
スクショ pic.twitter.com/cO31PErROH
タグ: Wolfram言語
posted at 16:06:06
非公開
タグ:
posted at xx:xx:xx
投石は破壊力のわりに「誰がやったか」が特定不可能だから、学生運動で多用されてたもんなあ / “「石をなめてはいけない」銀座の警察博物館で機動隊の盾は銃弾用ではなく投石用と聞いたお話 - Togetter” htn.to/21Tf3duMqF
タグ:
posted at 15:24:55
ツイッターにいるオタク
・キーボードオタク
・3Dプリンターオタク
・回線オタク
・HDDオタク
・アニオタ(ざっくり)
・エロゲオタク
・ミリオタ
・鉄ヲタ
・Adobeオタク(好きだとは言っていない
・C++完全理解オタク
・Juliaオタク
・リサ・スーオタク
タグ:
posted at 15:19:53
非公開
タグ:
posted at xx:xx:xx
@hayabusa_0613 無料ですよ。
(⚠️登録の必要あり。あと、ライセンスは用途によるかもです。)
Jupyter(Wolfram Language kernel for Jupyter notebooks)と組み合わせて使ってます。 cs.mkamimura.com/posts/2020/09/...
タグ:
posted at 15:18:43
非公開
タグ:
posted at xx:xx:xx
@hayabusa_0613 CとWolfram EngineとJuliaとの比較があると嬉しいかもです。☺️
(ハンズ・オン・スタートMathematica® -Wolfram言語™によるプログラミング cs.mkamimura.com/tags/%E3%83%8F... で基礎を憶えたて だったりするからだけですが…😅)
タグ:
posted at 15:10:23
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
私が思う史上最悪のプログラミングミスはロゴフ=ラインハート論文のExcelのバグ ja.wikipedia.org/wiki/%E3%82%B1... twitter.com/akinori_ito/st...
タグ:
posted at 13:58:21
@genkuroki @unedSCLv2 C++側が遅くなった原因は、おそらく高階関数を使ったからだと思います。Juliaは高階関数を使っても、遅くならないみたいですね。非常に魅力的です。
タグ:
posted at 13:08:23
@genkuroki @unedSCLv2 C++とJuliaで、簡単なコードで速度比較を行なってみました。
twitter.com/dc1394/status/...
タグ:
posted at 13:01:18
Gauss-Legendre積分の分点10000点で、試しに1 / (2√x)を1から4まで数値積分してみたけど、C++と比べてJuliaは無茶苦茶速かった。具体的には、
C++: 3.481679(秒)
Julia: 0.013464(秒)
で、Juliaの方が260倍くらい速かった。本格的にJuliaへの移行を考えるときが来た。
タグ:
posted at 12:45:13
メモリに乗らない量のデータを触る予定が出来たからこれまで特に理由なく避け続けてきたデータベースを使う必要があると感じて調べてるけど特にJuliaを使うならこれが良いとかはないのかな
タグ:
posted at 12:00:13
#Julia言語 添付画像のオイラー法の函数の定義では、引数達の型から、函数内の局所変数の型が(ほぼ)決まるように書かれていることが分かる。
実際には、個々の引数の意味を考えて、素直にコードを書けば、自然にこうなることが結構多い。 pic.twitter.com/lt3yHPkUGv
タグ: Julia言語
posted at 11:24:43
#Julia言語
* solは数値解を格納する配列。sol = [u₀] で作っているので、初期値 u₀ と同じ型を持つ配列になる。ここで、引数 u₀ から変数 sol に型が伝搬している。
* t_axisについても同様。
* 局所変数 u, t はそれぞれ初期値 u₀, t₀ で初期化されており、ここでも型が伝播している。 pic.twitter.com/qnnKZCBtmD
タグ: Julia言語
posted at 11:21:05
ぱらみり(ツイート、RT頻度低下中) @paramilipic
ニューヨーク都市圏交通公社MTAの監察官がグランドセントラルターミナルの地下に勝手に作られた隠し部屋を摘発。保線職員3人が懲戒処分を受けた。そこにはストリーミングデバイスに接続された薄型ディスプレイ、電子レンジ、ソファーベッドが設置されており、冷蔵庫ではビールが冷やされていたという。 pic.twitter.com/m7S00DzBIl
タグ:
posted at 11:20:43
#Julia言語 添付画像
euler(f, u₀, tspan, Δt) において、
* f(u, t)は微分方程式 du/dt=f(u, t) を与える函数
* u₀は初期値u(t₀)
* tspan=(t₀,t₁)は解を知りたい時間の区間
* Δtは時間の刻み幅
続く pic.twitter.com/miKos4bwlz
タグ: Julia言語
posted at 11:17:40
#Julia言語 添付画像
1. 型の明示的な記述が一切ないオイラー法の函数。多くの場合に使用可能で、コードがすっきりしており、アルゴリズムを読み取り易い。
2. Float64などの型の記述をしているオイラー法の函数。型の記述のせいで多くの場合に使えなくなっているだけではなく、コードも読み難い。 pic.twitter.com/d06Cv1ETN1
タグ: Julia言語
posted at 10:59:15
#Julia言語 添付画像
1. 引数の型の記述を大部分削り、微分方程式を記述する函数の引数fの型をFunctionとする記述は残した。
2. そのせいで、パラメータ付き函数の実装に使われるfunction-like objectで微分方程式を記述すると、計算できなくなる。微分方程式は通常パラメータを含むので痛い。😭 pic.twitter.com/flbLQcaMjD
タグ: Julia言語
posted at 10:54:42
#Julia言語 添付画像
1. SVectorによる10倍の高速化は魅力的なので、引数の型宣言でVectorではなく、AbstractVectorを使うようにした。その他にもウザい記述をもとに戻した。
2. Svectorによる高速化が可能になった!😊
3. しかし、Float64と書いているせいで、BigFloatは使えない。😭
続く pic.twitter.com/l7ns2lR3rQ
タグ: Julia言語
posted at 10:51:22
#Julia言語 添付画像
1. まるでCのような感覚でオイラー法の函数の定義で型を記述するとこうなる。Vectorは配列、Float64はdouble、Int64はlongに対応している。
2. 引数の型宣言でVectorを使っているせいで、SVectorを使った高速化が不可能になっている。😭
続く pic.twitter.com/514XCAooyq
タグ: Julia言語
posted at 10:47:04
#Julia言語 添付画像
1. オイラー法で調和振動子の微分方程式の数値解を求めている。オイラー法の函数に型の記述が一切出て来ていないことに注目。
2. SVectorを使うと10倍速くなる。
3. BigFloatでも計算できる。
4. 調和振動子の微分方程式をfunction-like objectで記述しても計算できる。 pic.twitter.com/Z3TdTYdRRF
タグ: Julia言語
posted at 10:39:39
#Julia言語
Juliaでは、函数の引数の型指定を(積極的なニュアンスで)書かなくてもよいという事実については、具体的なコードで、下手に型を書くことがどれだけ有害であるかを見ないと分からないと思う。
論よりコード。
以下で引用するソースコード↓
nbviewer.jupyter.org/gist/genkuroki...
続く twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 10:35:13
@HShinaoka やってみました。Juliaの元々とほとんど同じでした。多分線形合同法が遅かったのと、律速箇所は乱数生成の部分とは別なのだと思います。
タグ:
posted at 09:59:13
@musicisthebest_ @temmusu_n @sekibunnteisuu bが偶数の時だけの例外処理だったものが、スタンダードが消えて両方例外処理になっていますね。
やはりネタでは?
タグ:
posted at 08:23:26
長期金利もゼロ近辺で推移しディスインフレ、円安にもならず、戦後最大の不況の最中に財政再建の必要性を訴える。完全に狂っている。この国は狂人がコントロールしているとしか、考えられない。
タグ:
posted at 08:08:15
@sekibunnteisuu ネタだったらなんぼかマシ、かな? どっちにしろたぶらかされる学生さんがかわいそう
。もしやこういう反応の方がネタ?
以前あった、√( )/2に0, 1, 2, 3, 4を入れると順にsinの値が出るしょうもな暗記法にも、なぜだかしらんけど支持が集まりましたよね。みたことない操作はそれだけで受ける説。
タグ:
posted at 07:56:34
Stefan Karpinski @StefanKarpinski
@EyalL @steveklabnik The teacher nodded but then shook her head. She said, “The problem is not that there is no path from one point to the other. The problem is that you are in a maze.”
タグ:
posted at 06:34:11
Stefan Karpinski @StefanKarpinski
@EyalL @steveklabnik After some time and many attempts, one of her students said “Teacher, I have solved the maze” and presented a long, window path between the two points.
タグ:
posted at 06:33:50
Stefan Karpinski @StefanKarpinski
@EyalL @steveklabnik The teacher presented her students a large, complex maze with two points marked and asked them “What is the problem here?”
タグ:
posted at 06:33:29
bが偶数のときの公式が覚えられないなら、別に覚えなきゃいいわけで。一通りのものを簡便のために別に表したものをわざわざもとに戻して、その上で使い方だけ二つに分離してもはや何がやりたいのかわからない。そしてこれに「わかりやすい」の感想がつくのがさらにわからない。 twitter.com/takatasenseiw/...
タグ:
posted at 05:09:01
Interesting times ahead for #julialang twitter.com/KenoFischer/st...
タグ: julialang
posted at 04:00:56
Anyway, I have some ideas along these lines that I'd like to explore in #julialang eventually. Still, there's much work to do.
タグ: julialang
posted at 03:56:43
Speaking of theorem provers, I think they've ironically wrapped around on this, in that they have a "meta-dynamic" system for interactively exploring type construction in the underlying static language.
タグ:
posted at 03:56:43
Ideally you'd be able to design a language that lets you scale all the way from "completely dynamic, fast exploration" to "validated by theorem prover"
タグ:
posted at 03:56:43
But regardless, failing to acknowledge the trade-off, I think precludes discussions about how one might design a system that lets users gradually transition from programming in an exploratory/dynamic world view to taking advantages of static checking.
タグ:
posted at 03:56:43
Static languages often presume that you basically have all the information (the more information your static system can represent, the more you need to know) about how your program behaves ahead of time, so it can be properly checked. You may have this information, you may not.
タグ:
posted at 03:56:43
Dynamic languages excel at this, because you get to very much have a "conversation" with the computer while working through your problem space.
タグ:
posted at 03:56:42
In particular, I think it avoids any discussion of the domain discovery problem, where you discover new things about the problem domain you're working in by observing the behavior of the program you've just written.
タグ:
posted at 03:56:42
Why? Because, as Stefan notes, it precludes any discussions of the trade off involved and gives an easy, but incorrect answer ("the users are too dumb") for why one might prefer a dynamic language.
タグ:
posted at 03:56:42
Thread. There's also this meme going around in PL circles that dynamic languages are designed by those too dumb to implement static type systems. I actually think that hearing this does a significant disservice to young PL designers. (1/x) twitter.com/StefanKarpinsk...
タグ:
posted at 03:56:42
Stefan Karpinski @StefanKarpinski
Can we please just have a discourse that acknowledges that this is a trade off? I.e. that there are costs & benefits to both dynamic & static systems? The pro-dynamic camp does this. Can static type people stop insisting that there are no costs to static type checking? (6/6)
タグ:
posted at 03:31:26
Stefan Karpinski @StefanKarpinski
But everyone agrees that being able to type check things is really good! The issue is that it is not free to do so: it complicates and restricts the language. That cost may or may not be worth paying, but there is a cost! That is all we (pro-dynamic people) are saying!!! (5/6)
タグ:
posted at 03:31:26
Stefan Karpinski @StefanKarpinski
When such claims that dynamic languages are strictly worse are countered with examples of things that are easier/simpler/possible in dynamic languages, static language advocates often take it as an attack, as if the claim was that static languages are strictly worse! (4/6)
タグ:
posted at 03:31:25
Stefan Karpinski @StefanKarpinski
So many static languages advocates, OTOH, insist that static languages are strictly better at everything—that there is no trade off. In this case the linked blog post argues that static language are just as good/expressive dealing with generic processing of external data (3/6)
タグ:
posted at 03:31:25
Stefan Karpinski @StefanKarpinski
Dynamic language folks acknowledge that there are cases where static type checking is really valuable and appropriate, but feel that there are also many cases where dynamic languages are more productive and expressive and they tend to prefer that side of the tradeoff (2/6)
タグ:
posted at 03:31:25
Stefan Karpinski @StefanKarpinski
I've noticed that there's a really consistent asymmetry between the way static and dynamic language advocates talk about the two kinds of languages and type systems... (1/6) twitter.com/steveklabnik/s...
タグ:
posted at 03:31:25
Stefan Karpinski @StefanKarpinski
@steveklabnik Agree entirely! It is a trade off and there are different valid choices between the options. My entire issue with this article is that it tries to deny that there is any trade off!
タグ:
posted at 02:00:02
Stefan Karpinski @StefanKarpinski
@steveklabnik Note: expressiveness is about ease not possibility—otherwise all Turing complete langs are equally expressive
It’s a perfectly valid position to say, yes dynamic langs are better at expressing generic/open functionality things, but I don’t care. They are still more expressive
タグ:
posted at 01:58:19
Stefan Karpinski @StefanKarpinski
@steveklabnik How important you find being able to make really generic functions is a matter of opinion, but it is a real use case and it is much easier and more common in dynamic langs, which does make them more expressive, which refutes the thesis of the post
タグ:
posted at 01:55:00
Stefan Karpinski @StefanKarpinski
@steveklabnik Whether the trade off is worth it is a judgment call but it’s real. The post tries to ignore the trade off, alluding to it only in a comment that dismisses making generic functions like `print` as “extremely rare”. No: that’s only extremely rare because your language is bad at it
タグ:
posted at 01:47:35
Stefan Karpinski @StefanKarpinski
@steveklabnik Right, my counterpoint is that in practice static langs are less expressive because there’s an important class of highly generic functions that are much, much harder—often impossible—to implement and use in static languages. That is a real difference in expressiveness.
タグ:
posted at 01:34:23
Stefan Karpinski @StefanKarpinski
@steveklabnik I'm very confused about this interpretation: the post doesn't mention dlopen anywhere and all the examples are about writing generic code that can handle a variety of different input types...
タグ:
posted at 01:20:54
#Julia言語
みんなで普通にREPLに新しい機能(ユーザー定義の型の値の見やすい表示)を追加するコードを書いている世界があることを知らずに、"extremely rare exceptions" とか言われても困る。
視野狭窄に気付かずに技術的な事柄について「大演説」を打つ人が結構目立つ世界。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 01:13:09
#Julia言語 これは勉強になる!
deepcopyを気軽に使えないのは正直困る。 twitter.com/stefankarpinsk...
タグ: Julia言語
posted at 01:00:25
@lpha_z simdで速くなる理由についてはググって下さい。
値が微小に違って来るのは和の順序が違うからです。
Float32に精度を落とした場合には、前から順番に足すと正しい値を計算できない例を容易に作れます。
#Julia言語 の builtin sum は速いだけではなく、精度的にも安全牌です。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 00:53:24
Stefan Karpinski @StefanKarpinski
@steveklabnik In theory it's possible for a static type system to allow enough reflection & polymorphism to implement generic print or deepcopy functions, but, in practice they don't
The litmus test: can you implement your own deepcopy as a completely normal function that type checks?
タグ:
posted at 00:48:22
#Julia言語 最近では、
nbviewer.jupyter.org/gist/genkuroki...
Minimal Lisp in Julia - Part 2
で、自分で定義した型の表示の仕方の設定を実演してみせた。
Out[4] を解読させられるのは苦痛。
Out[6] のようにシンプルに表示してもらいたい。 pic.twitter.com/NYNKsXpzcS
タグ: Julia言語
posted at 00:45:53
@genkuroki 初めまして、コメントありがとうございます。
Juliaは初めて触ったので、あまり常識的でないユースケースを選んでしまったかもしれません。
ところで、なぜsimdを使うと速くなるのでしょうか?
それに、計算結果も間違っているような……?
タグ:
posted at 00:43:55
Stefan Karpinski @StefanKarpinski
@steveklabnik Another example is deepcopy: in dynamic langs it possible write a function that can generically deepcopy arbitrary data structures, including user-defined ones. In most static languages this is impossible without resorting to "magic", ie internals not part of the normal language
タグ:
posted at 00:41:22
Re: RT うけた🤣
Juliaを使っていると、REPLやJupyterで自分で定義した型の値がどのように表示されるかに関するコードを書くことは、"extremely rare exceptions" でもなんでもない。
視野狭窄なことに気付かずに変なことを述べる人は世界中にいる。
タグ:
posted at 00:40:01
Stefan Karpinski @StefanKarpinski
@steveklabnik Eg printing user-defined types in ML (et al) is a nightmare. There's a special polymorphic print function the REPL uses internally, but since regular functions aren't polymorphic, you can't extend it, so it can only print built-in types. Have fun inspecting values of your types!
タグ:
posted at 00:36:36
Stefan Karpinski @StefanKarpinski
@steveklabnik It sweeps the counterargument under the rug in a parenthetical: there are very useful generic capabilities—eg printing arbitrary objects—that are MUCH easier to implement/use in dynamic langs than in static ones. Doing that is only rare in static langs because they're bad at it
タグ:
posted at 00:32:57
Stefan Karpinski @StefanKarpinski
@steveklabnik What? Are we reading the same post?
This post makes a really good argument: that you have to define how to handle each type correctly anyway, and static type systems make you do that up front, but you have to do it anyway, so they're no less expressive.
タグ:
posted at 00:29:27
Stefan Karpinski @StefanKarpinski
@steveklabnik “While there are extremely rare exceptions to this [...] such as, say, implementing a REPL for your programming language [...] they do not occur in day-to-day programming” 😂
Yes, I NEVER want to print values of user-defined types without having to write print methods myself 🤦🏼♂️
タグ:
posted at 00:24:56
@lpha_z #Julia言語
Juliaでは単純な和には普通にsimdを使うので、JuliaとCの両方でsimdを使って比較した方が良かったと思います。
Juliaでsimdを使うと10倍以上速くなります。
Juliaのbuiltin sumも同じオーダーで速いです。
ソースコード↓
gist.github.com/genkuroki/c3b1... pic.twitter.com/C31z3YPJu7
タグ: Julia言語
posted at 00:12:39