黒木玄 Gen Kuroki Profile picture
Oct 3, 2020 18 tweets 9 min read Read on X
#Julia言語

Julia内部から、

文字列のCのコードをgccにstdinから食わせてコンパイルして、ライブラリを作って、そのライブラリ内部の函数をJuliaから呼び出して使う方法の例↓

gist.github.com/genkuroki/9d43…

さらに、文字列のCのコードをJupyter上で色付けして表示する方法。
#Julia言語 Julia内部からCで作ったライブラリを使ったり、Pythonのライブラリを使ったりすることによって、Juliaを学ぶついでにCやPythonも学べてしまいます。

Juliaは「高速なグルー言語」
#Julia言語 「気軽に使えるグルー言語で多くの高速なライブラリを貼り合わせて使う」というアイデアは秀逸だったのですが、「グルー言語は遅くてもよい」という考え方はJuliaの登場によって誤りであったことが明瞭になってしまったと思います。

Juliaは「高速なグルー言語」(高速糊言語)
#Julia言語 Julia内部から、#C言語#Python だけではなく、統計処理が得意な #R言語 も使用することも学べば、Juliaを経由して、CやPythonだけではなく、Rの使い方も学ぶことができます。
#Julia言語 既出の

gist.github.com/genkuroki/9d43…

では、Juliaの文字列のCのコードを gcc -O0 と gcc -O3 でコンパイルしたときの、アセンブラの出力をJuliaで表示して比較するというようなことをしています。

さらに、Juliaがどのようにコンパイルするかも表示させて、全部を比較できるようにしている。
#Julia言語 Juliaをどのように使うかですが、以下の条件を満たす場合には Jupyter notebook (もしくは JupyterLab)を使うことが非常に合理的だと思います。

* コードの分量は少なめ。
* コードだけではなく、結果の出力も重要。
* 整形された数式入りの解説があった方がよい。
#Jupyter #Julia言語 ただし、みんなでJupyter notebookを使う場合には、

周囲に配布するノートブックは、セルを上から順に実行して結果が再現されるようにしておくこと!

のようなルールを決めておいた方がよいかも。
常識的には普通こうするものだと思いますが。
#Jupyter #Julia言語 実行可能なコードだけではなく、実行結果を一緒に配布することは多くの場合に有用です。さらにそこに整形された数式入りの解説が添付されていると、有用性はさらにまします。

コードだけではなく、計算結果も同時に配布するべき場合にはみんなそうするべきだと思います。
#Jupyter #Julia言語 他人のコードを自分で実行してみる場合は、まず同じ結果が再現されるかどうかが気になります。そのときに、実行可能なコードのみが配布されているとものすごく不便です。

Jupyterを無用に嫌う人達にはその手の不合理な人達が多いという悪印象があります。
#Jupyter #Julia言語 Jupyter notebookはdiffがまともに機能しないことで有名です。しかし、それへの決まり切った対処法がある。Jupytextを使えば、自動的にJupyter notebookファイルに紐づけられた、mdファイルやjlファイルを自動生成するようにできます。

github.com/mwouts/jupytext
#Jupyter #Julia言語 1つのノートブックだけではなく、複数のノートブックで繰り返し使用するツールは、パッケージ化しておくべき。

私はその辺をサボりまくってしまい、非常に後悔しています。Juliaでは、公開されていない自作パッケージは瞬時にかつ気楽に作れます。

#Julia言語 さらに、すでにGitHubを使用している人であれば、自作パッケージをGitHub上で公開して野良パッケージ化することも非常に易しいです。

野良パッケージが増えて、公式登録されたパッケージに昇格するものが増えるとよいと思います。

#Julia言語 使い方のパターン

①Jupyter上で、整形された数式入りの解説と、Juliaによる数値計算や数式処理のコードと、計算結果やグラフのプロットを一体化したノートを作って周囲に配布する。

②使い回されるツールは非公開自作パッケージ化→公開野良パッケージ化→公式登録パッケージ化。
ああ、学生時代にこれがあったらもっと楽しかったのに!

今だと1つ前のツイートの方法の採用によって「遊び」=「勉強」がものすごく捗りそうです。
#Julia言語 Juliaを使う利点は

* 気楽に易しく使える。
* 速い。
* グルー言語(糊言語)として強力

なだけではなく、

* 自作パッケージの作成が容易

ということもあると思います。

これ、Juliaの開発者側は戦略的にそうしていると思うのですが、強調されることが少ないという問題があります。
#Julia言語 非公開自作パッケージを作って利用するだけなら、適切な作業ディレクトリで

pkg> generate Hoge
pkg> dev Hoge

とするだけでよいと誰も教えてくれなかった!

これを知っているか知らないかで、個人で使い回すツールの蓄積度が大きく変わって来てしまいます。
#Julia言語 ①の色々詰め込んだノートの配布の実例は

github.com/genkuroki/Calc…

にあります。添付画像はChromeでPDF化したものの1つ

genkuroki.github.io/documents/Calc…

のスクショ。Milnorの多重三角函数のグラフです。数学畑の人であっても見たことがある人は少ないでしょう。

他のリポジトリも参照。
#Julia言語 関連

Juliaは

julialang.org/downloads/

からインストーラをダウンロードすればすぐに使えるようになります。非常に簡単。

julia起動後のプロンプトの julia> 状態で ] を押すとプロンプトが pkg> のパッケージマネージャーモードになって、簡単に必要なパッケージを入れられます。

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with 黒木玄 Gen Kuroki

黒木玄 Gen Kuroki Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @genkuroki

Jun 18, 2023
#統計 念の為のコメント

1️⃣「t検定の使用が適切なためには、母集団が正規分布に従っていることが必要である」という考え方は誤り。

2️⃣「Wilcoxonの順位和検定=Mann-WhitneyのU検定であれば、無条件使用は適切である」という考え方も誤り。

以上の誤りを信じている人達をよく見る。続く
#統計

1️⃣「t検定の使用が適切なためには、母集団が正規分布に従っていることが必要である」という考え方は誤り。

これについてはツイッター上で繰り返し非常に詳しく解説して来ました。

ツイログ検索

twilog.togetter.com/genkuroki/sear…
#統計

2️⃣「Wilcoxonの順位和検定=Mann-WhitneyのU検定であれば、無条件使用は適切である」という考え方も誤り。

これについてもツイッター上で繰り返し非常に詳しく解説して来ました。

ツイログ検索

twilog.togetter.com/genkuroki/sear…
Read 40 tweets
Jun 17, 2023
#数楽 ℤ[√2]やℤ[√3]はEuclid整域なのでPIDでUFDになるので、ℤ[√2]やℤ[√3]係数の多項式の √2や√3が出て来る因数分解の問題も既約元の積に分解する問題として意味を持ちます。続く
#数楽 ただし、整数dに関する√dが出て来る場合には、既約元の積への分解は因子の可逆元倍と順序の違いを無視しても一意的でなくなる場合が出て来ます。

実はそういうところに面白い数学が隠れている!
#数楽 整数の平方根が出て来る因数分解もちょっと話題になっていますが、その話はとてつもなく面白い数学の話に繋がっています!

中学生であっても思いつきそうな話の中にも素晴らしい数学が隠れています!
Read 20 tweets
Jun 16, 2023
東工大出身者のような理系の人達が、上野千鶴子が自閉症の母親原因説を唱えるくらい科学的に無能でかつ優しさに欠けた人物であることぐらいは知っておいた方が、我々の社会はよくなる可能性が高まると思います。

有名かつ有力になってしまった人物はたとえク○であっても無視できなくなる。
上野千鶴子は、自閉症の原因について母子密着説を唱えていたのですが、それが誤りであることが定説になっていることを指摘された後には、定説と上野千鶴子的なトンデモ説を平等に扱うという態度を取りました。

上野千鶴子の自分が苦しめた人達への態度は真にあきれるものでした。
上野千鶴子的な活動家は科学的無知と優しさに欠けた態度の両方の力を行使していました。

そういうことを許す伝統が現代においても人々の苦しみの源泉の1つになっているわけです。
Read 6 tweets
Jun 15, 2023
私は、環論を学ぶまで、重根もしくは重解の概念を十分に理解できた感じがしてなかったです。(代数)方程式の概念も同様。

実数体上の方程式x²=0は環

A = ℝ[x]/(x²)

で表現されます。これと方程式x=0に対応する環

ℝ[x]/(x)

は異なる。環論を使えば方程式x²=0とx=0を明瞭に区別できます。
環k上の環Aで表現された方程式のk上の環Bでの解集合はk上の環準同型全体の集合

Hom_{k-ring}(A, B)

で表現されます。例えば、集合として、

Hom_{ℝ-ring}(ℝ[x,y]/(x²+y²-1), ℝ) ≅ {(x,y)∈ℝ²|x²+y²=1}.
そして、以上のような代数方程式の表現になっている環の話について前もって知っておいた方が、環論の勉強はしやすいように思えます。
Read 6 tweets
Jun 15, 2023
以下のリンク先スレッド中にも書きましたが、

* 最初に共通の定数因子を括り出すと、その後の計算が楽になる場合がある。

と教えるようにして、

* 共通の定数因子を括り出していなくても、目くじらをたてない。

という教え方にすればよいと思いました。
教科書に従って「a(3x-6y)は誤りで、3a(x-2y)が正解だ」と安易に教えてしまった中学校の数学の先生は

 数学の先生なのに
 教科書通りにおかしなことを教えて
 ごめんなさい

と言って欲しいです。数学では教科書の内容を正しいと信じてはいけない。数学はそういうものだと大学で習っているはず。
数学を教えていれば、細かい条件を言い忘れるというような失敗は日常茶飯事のはずです。

人間だから仕方がないです。

大したことではないので、よりクリアになるように訂正すればよいと思います。
Read 18 tweets
Feb 22, 2023
#統計 speakerdeck.com/taka88/pzhi-fa… のp.7からp.8への流れは、natureの記事の内容を誤解させるような、よろしくない解説の仕方だと思いました。

「差がない」という特別な帰無仮説の検定だけで勝負を決めようとすることへの批判をP値そのものへの批判とみなすことは、よく見る杜撰な考え方です。続く
#統計 実際、natureの記事 nature.com/articles/d4158… ではcompati{ble,bility}が重要キーワードになっており、P値が

データ、モデル、パラメータ値のcompatibility(相性の良さ、両立性)の指標の1つ

とみなされることを詳しく説明しています。

この部分に触れずにこの記事を引用しても無意味。続く
#統計 natureのその記事を読んでいるならば、P値のcompatibilityとしての解釈について知り、添付画像のように、ダメな考え方と正しい考え方を区別できるようになっているはずなのです。

否定するべき対象にP値そのものが含まれていないことに注目!

続く
Read 13 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(